[AWS] Neptune

Neptune์€ ๊ทธ๋ž˜ํ”„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค๋‹ค.




๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€?

์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ๊ทธ๋ž˜ํ”„๋Š”, ํ†ต๊ณ„์— ์“ฐ๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ์•„๋‹ˆ๋ผ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋งํ•˜๋Š” ๊ทธ๋ž˜ํ”„๋‹ค.

์ด๋ ‡๊ฒŒ ๋ง‰ ์‚ฌ๋ฐฉ์œผ๋กœ ์—ฎ์—ฌ์žˆ๋Š”๊ฑฐ ๋ง์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ง‰ ๋ณต์žกํ•˜๊ฒŒ ์„œ๋กœ ๊ด€๊ณ„์„ฑ์„ ๊ฐ–๊ณ  ์—ฎ์—ฌ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์ข‹๋‹ค.




์–ธ์–ด

๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค๋„ SQL์ฒ˜๋Ÿผ ์ž๊ธฐ๋“ค๋งŒ์˜ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
๋„ตํŠ ์€ ๊ทธ ์ค‘์—์„œ Gremlin, openCypher, SPARQL์„ ์ง€์›ํ•œ๋‹ค.





๋น„์šฉ

๋‹น์—ฐํžˆ ๋น„์‹ธ๋‹ค. ๊ฝค ๋น„์‹ธ๋‹ค.
์ž์„ธํ•œ๊ฑด ์•„๋ž˜ ๋น„์šฉํ‘œ๋ฅผ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.
https://aws.amazon.com/ko/neptune/pricing/

๋น„์šฉ์€ ์ธ์Šคํ„ด์Šค ์‚ฌ์ด์ฆˆ, ์ €์žฅ๊ณต๊ฐ„, IO, ๋ฐ์ดํ„ฐ ์ „์†ก์œผ๋กœ ํ•ฉ์‚ฐ๋œ๋‹ค.

AWS์—์„œ ์ œ์‹œํ•œ ๋น„์šฉ ์˜ˆ์‹œ๋‹ค.




ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ

๋งŒ๋“ค์–ด๋ณด์ž.

๋‚œ ํ…Œ์ŠคํŠธ๋ชจ๋“œ๋กœ ์„ ํƒํ–ˆ๋‹ค.


๊ฐœ๋ฐœ์šฉ์ด๋ฉด ๊ฐ€์šฉ์˜์—ญ์€ ํ•˜๋‚˜๋งŒ ์žˆ์–ด๋„ ๋˜์ง€๋งŒ, ํ”„๋กœ๋•์…˜์šฉ์ด๋ผ๋ฉด 2๊ฐœ ์ด์ƒ ๋‘๊ธฐ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  VPC๋„ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ ํƒํ•œ๋‹ค. ์ € ์•ˆ์—์„œ๋งŒ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค.


๋…ธํŠธ๋ถ์€.. ๋‹น์žฅ ์“ธ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ์ผ๋‹จ ์„ค์ •์€ ํ•ด๋‘”๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋Ÿฐ์‹์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ 

๋ฐ‘์— ์—”๋“œํฌ์ธํŠธ๋„ ๋‹ค ๋œจ๋ฉด ์ž˜ ๊น”๋ฆฐ ๊ฒƒ์ด๋‹ค.




์ ‘์†ํ•ด๋ณด๊ธฐ

์ด๊ฒƒ๋„ DocumentDB, Elasticache ๋“ฑ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ VPC ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‚˜๋Š” EC2์—์„œ ์ ‘๊ทผํ•ด๋ณด๊ฒ ๋‹ค.

์•„๋งˆ์กด ๋ฆฌ๋ˆ…์Šค๋กœ ํ•ด์„œ

์•„๊นŒ ๋„ตํŠ  ๊น”๋•Œ์™€ ๋™์ผํ•œ ๋…€์„์œผ๋กœ VPC๋ฅผ ๊น”์•„์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋ณด์•ˆ๊ทธ๋ฃน์˜ ์ธ๋ฐ”์šด๋“œ์— ๋„ตํŠ ์šฉ ํฌํŠธ๋ฅผ ์—ด์–ด์ค€๋‹ค.

๊ทธ๋Ÿผ ๋๋‹ค.




๊ทธ๋ ˜๋ฆฐ ์„ค์น˜ํ•˜๊ธฐ

gremlin์€ ํŠน์ • ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋งŒ ์ข…์†๋˜์ง€ ์•Š๋Š” ๋ฒ”์šฉ ๊ทธ๋ž˜ํ”„ ์ฟผ๋ฆฌ ์–ธ์–ด์ด์ž, ๋„๊ตฌ์ด๊ธฐ๋„ ํ•˜๋‹ค.
๋„ตํŠ ๋„ ์ด๊ฑธ ์ง€์›ํ•œ๋‹ค.

ec2 ์•„๋งˆ์กด ๋ฆฌ๋ˆ…์Šค์—์„œ ์„ค์น˜ํ•˜๋Š” ๋ฒ•์ด๋‹ค.
์•„๋ž˜ ์ปค๋งจ๋“œ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ž˜ ๋”ฐ๋ผ์ณ์ค€๋‹ค.

sudo yum install java-1.8.0-devel
sudo /usr/sbin/alternatives --config java
wget https://archive.apache.org/dist/tinkerpop/3.5.2/apache-tinkerpop-gremlin-console-3.5.2-bin.zip
unzip apache-tinkerpop-gremlin-console-3.5.2-bin.zip
cd apache-tinkerpop-gremlin-console-3.5.2
wget https://www.amazontrust.com/repository/SFSRootCAG2.cer
mkdir /tmp/certs/
cp /usr/lib/jvm/jre-1.8.0-openjdk/lib/security/cacerts /tmp/certs/cacerts
sudo keytool -importcert \
               -alias neptune-tests-ca \
               -keystore /tmp/certs/cacerts \
               -file  /home/ec2-user/apache-tinkerpop-gremlin-console-3.5.2/SFSRootCAG2.cer \
               -noprompt \
               -storepass changeit

๋‹ค ๊น”์•˜์œผ๋ฉด conf ๊ฒฝ๋กœ์— ์›๊ฒฉ์ ‘์†์šฉ yaml ๊ตฌ์„ฑ์„ ์ž‘์„ฑํ•œ๋‹ค.

hosts: [์—”๋“œํฌ์ธํŠธ]
port: 8182
connectionPool: { enableSsl: true,  trustStore: /tmp/certs/cacerts }
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}

์—”๋“œํฌ์ธํŠธ๋Š” ์•„๊นŒ ๋„ตํŠ  ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  gremlin ์‰˜๋ช…๋ น์„ ์ž…๋ ฅํ•ด์„œ ์ฝ˜์†”์— ๋“ค์–ด์˜ค๊ณ ,

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์›๊ฒฉ์ ‘์†์„ ์‹œ๋„ํ•ด์„œ

:remote connect tinkerpop.server conf/neptune-remote.yaml

์ด๋ ‡๊ฒŒ ๋œจ๋ฉด ์ ‘์† ์„ฑ๊ณต์ด๋‹ค.

์›๊ฒฉ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ์ฝ˜์†”๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜์ž.

:remote console

์ž˜ ์ „ํ™˜์ด ๋๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทธ๋ƒฅ ํ‘œํ˜„์‹ ๊ณ„์‚ฐ๋„ ์ž˜ ๋  ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ ์—ฌ๊ธฐ์„œ ๊ทธ๋ž˜ํ”„ ์ฟผ๋ฆฌ ์‹๋“ค์„ ์—ฐ์‚ฐํ•˜๋ฉด์„œ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ˜๋ฆฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์‹ ํƒ์Šค์™€ ์‚ฌ์šฉ๋ฒ•์€ ๋ณ„๋„ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.
https://blog.naver.com/sssang97/222730493357


https://jiwonny.github.io/projects/aws-neptune-1/
https://aws.amazon.com/ko/nosql/graph/
https://jiwonny.github.io/projects/aws-neptune-2/
https://docs.aws.amazon.com/neptune/latest/userguide/graph-get-started.html
https://docs.aws.amazon.com/ko_kr/neptune/latest/userguide/access-graph-gremlin-console.html