{"id":5886,"date":"2016-01-29T10:30:00","date_gmt":"2016-01-29T01:30:00","guid":{"rendered":"https:\/\/jirak.net\/wp\/kakao%ec%9d%98-%ec%98%a4%ed%94%88%ec%86%8c%ec%8a%a4-ep1-%eb%8c%80%ec%9a%a9%eb%9f%89-%eb%b6%84%ec%82%b0-%ea%b7%b8%eb%9e%98%ed%94%84db-s2graph\/"},"modified":"2016-02-22T23:02:38","modified_gmt":"2016-02-22T14:02:38","slug":"kakao%ec%9d%98-%ec%98%a4%ed%94%88%ec%86%8c%ec%8a%a4-ep1-%eb%8c%80%ec%9a%a9%eb%9f%89-%eb%b6%84%ec%82%b0-%ea%b7%b8%eb%9e%98%ed%94%84db-s2graph","status":"publish","type":"post","link":"https:\/\/jirak.net\/wp\/kakao%ec%9d%98-%ec%98%a4%ed%94%88%ec%86%8c%ec%8a%a4-ep1-%eb%8c%80%ec%9a%a9%eb%9f%89-%eb%b6%84%ec%82%b0-%ea%b7%b8%eb%9e%98%ed%94%84db-s2graph\/","title":{"rendered":"kakao\uc758 \uc624\ud508\uc18c\uc2a4 Ep1 &#8211; \ub300\uc6a9\ub7c9 \ubd84\uc0b0 \uadf8\ub798\ud504DB &quot;S2Graph&quot;"},"content":{"rendered":"<p>kakao\uc758 \uc624\ud508\uc18c\uc2a4 Ep1 &#8211; \ub300\uc6a9\ub7c9 \ubd84\uc0b0 \uadf8\ub798\ud504DB &quot;S2Graph&quot;<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jirak.net\/wp\/wp-content\/uploads\/2016\/01\/content_images_2016_02_RedNeuronal.jpg\" width=\"1600\" height=\"1200\"><br \/>\n<img decoding=\"async\" src=\"http:\/\/meta-kage.kakaocdn.net\/dn\/osa\/blog\/content_images_2016_02_RedNeuronal.jpg\"><\/p>\n<p><a id=\"forkme\" href=\"https:\/\/github.com\/kakao\/s2graph\"><\/a><\/p>\n<blockquote>\n<p>&#8220;\uce74\uce74\uc624\uc758 \uc624\ud508\uc18c\uc2a4\ub97c \uc18c\uac1c\ud569\ub2c8\ub2e4&#8221; \uccab\ubc88\uc9f8\ub294 <a href=\"https:\/\/github.com\/SteamShon\">shon.0<\/a>\uc640 \ub3d9\ub8cc\ub4e4\uc774 \uac1c\ubc1c\ud55c <a href=\"https:\/\/github.com\/kakao\/s2graph\">S2Graph<\/a>\uc785\ub2c8\ub2e4.<\/p>\n<p>S2Graph\ub294 \uce74\uce74\uc624\uc5d0\uc11c 1\ub144 \uc5ec\uc758 \uac1c\ubc1c\uc744 \uac70\uccd0 \uce74\uce74\uc624\ud1a1, \uce74\uce74\uc624\uc2a4\ud1a0\ub9ac, \uce74\uce74\uc624\ubba4\uc9c1, \uc120\ubb3c\ud558\uae30, \ub2e4\uc74c\uc571, \ub2e4\uc74c\ub274\uc2a4, \ub2e4\uc74c\uc1fc\ud551 \ub4f1 20\uc5ec\uac1c \uc774\uc0c1\uc758 \uc11c\ube44\uc2a4\uc5d0 \uc801\uc6a9\ub41c <strong>\ub300\uc6a9\ub7c9 \ubd84\uc0b0 \uadf8\ub798\ud504 \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/strong>\uc785\ub2c8\ub2e4.<\/p>\n<p><a href=\"http:\/\/www.scala-lang.org\">Scala<\/a>\uc5b8\uc5b4\uc640 <a href=\"https:\/\/www.playframework.com\">Play \ud504\ub808\uc784\uc6cd<\/a>\uc73c\ub85c \uc791\uc131\ub41c \uadf8\ub798\ud504 API \uc11c\ubc84\uc640 <a href=\"https:\/\/hbase.apache.org\">HBase<\/a>, <a href=\"http:\/\/kafka.apache.org\">Kafka<\/a>, <a href=\"http:\/\/spark.apache.org\">Spark<\/a> \ub4f1 \ucd5c\uadfc \uac00\uc7a5 \uc8fc\ubaa9\ubc1b\ub294 \uae30\uc220\ub4e4\ub85c \uad6c\uc131\ub418\uc5b4, \ud638\uae30\uc2ec\uc73c\ub85c \ub618\ub618\ubb49\uce5c \uac1c\ubc1c\uc790\ub4e4\uc5d0\uac8c \ub9ce\uc740 \ub3c4\uc6c0\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<\/blockquote>\n<h2 id=\"\">\uadf8\ub798\ud504 \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/h2>\n<p>&#8220;\uadf8\ub798\ud504&#8221;\ub77c\uace0 \ud558\uba74, \ubcf4\uace0\uc11c\ub098 \ubc1c\ud45c\uc790\ub8cc\uc5d0 \ub9c9\ub300 \uadf8\ub798\ud504, \ud30c\uc774 \ucc60\ud2b8,&#8230;\ub97c \ub5a0\uc62c\ub9ac\uc9c0\ub9cc, \uc774 \uae00\uc5d0\uc11c \uc5b8\uae09\ud558\ub294 \uadf8\ub798\ud504\ub294 \uc218\ud559\uc790 \uc624\uc77c\ub7ec\uc5d0\uc11c \uc2dc\uc791\ub41c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Graph_theory\">\uadf8\ub798\ud504 \uc774\ub860<\/a>\uc758 \uadf8\ub798\ud504\uc785\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/meta-kage.kakaocdn.net\/dn\/osa\/blog\/content_images_2016_02_s2graph-bridges.png\"><\/p>\n<p>\uadf8\ub798\ud504 \uc774\ub860\uc740 &#8220;\uc720\ud55c \uac1c\uc758 \uc810\ub4e4\ub85c \uc774\ub8e8\uc5b4\uc9c4 \uc9d1\ud569\uacfc \uc810\ub4e4 \uac04\uc758 \uc5f0\uacb0(\uad00\uacc4)\ub97c \ub2e4\ub8e8\ub294&#8221; \ud559\ubb38\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uba74, &#8220;\uc5b4\ub5a4 \uc9c0\uc5ed\uacfc \uc9c0\uc5ed\uc744 \ucd5c\ub2e8\uac70\ub9ac\ub85c \uc774\ub3d9\ud558\ub824\uba74 \uc5b4\ub5bb\uac8c \ud574\uc57c \ub418\ub294\uac00? \uc5b4\ub5a4 \uc9c0\uc810\ub4e4\uc774 \uc788\ub294\ub370 \uc774 \uc9c0\uc810\ub4e4\uc744 \uc911\ubcf5\uc73c\ub85c \uc9c0\ub098\uc9c0 \uc54a\uace0 \ud55c\ubc88\uc5d0 \uc774\ub3d9\ud560 \uc218 \uc788\ub294\uac00?&#8221; \uac19\uc740 \ubb38\uc81c\ub97c \uc5f0\uad6c\ud558\ub294 \uac70\uc8e0.<\/p>\n<p>\uc774\ub7f0 &#8220;\uadf8\ub798\ud504 \uad6c\uc870&#8221;\ub97c \uc800\uc7a5\ud558\uace0 \ud45c\ud604\ud558\uae30 \uc704\ud574 \ub9cc\ub4e4\uc5b4\uc9c4 \ub3c4\uad6c\uac00 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Graph_database\">\uadf8\ub798\ud504 \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/a> (graph database; \uc774\ud558 \uadf8\ub798\ud504DB)\uc785\ub2c8\ub2e4.<\/p>\n<h2 id=\"\">\uc18c\uc15c \uadf8\ub798\ud504<\/h2>\n<p>\uce74\uce74\uc624\uc758 \ub9ce\uc740 \uc11c\ube44\uc2a4\ub4e4\uc740 \uc0ac\uc6a9\uc790 \uc0ac\uc774\uc758 \uad00\uacc4(relation)\uc640 \uc0ac\uc6a9\uc790 \uac1c\uc778\uc758 \ud65c\ub3d9(activity)\ub97c \uae30\ubc18\uc73c\ub85c \ud569\ub2c8\ub2e4.<\/p>\n<blockquote>\n<p>\uc608) \ub355\uc120\uc774 \uc120\uc6b0\uc640 \ud0dd\uc774\ub294 \uc11c\ub85c \uce5c\uad6c\uc785\ub2c8\ub2e4. \ub355\uc120\uc774\ub294 \uce74\uce74\uc624 \ubba4\uc9c1\uc5d0\uc11c \uc74c\uc545\uc744 \ub4e3\uc2b5\ub2c8\ub2e4. \ud0dd\uc774\ub294 \ubc14\ub451 \uac8c\uc784\uc744 \uc990\uae41\ub2c8\ub2e4. \ubcf4\ub77c\uc640 \uc120\uc6b0\ub294 \uce74\uce74\uc624 \uc2a4\ud1a0\ub9ac\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4:<\/p>\n<\/blockquote>\n<p>\uc774\ub7ec\ud55c \ubb38\uc7a5\ub4e4\uc744 \ub2e8\uc5b4 \uadf8\ub300\ub85c \uadf8\ub9bc\uc73c\ub85c \ud45c\ud604\ud558\uba74 \uc544\ub798\uc640 \uac19\uc740 &#8220;\uc18c\uc15c \uadf8\ub798\ud504&#8221;\uac00 \ub429\ub2c8\ub2e4:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/meta-kage.kakaocdn.net\/dn\/osa\/blog\/content_images_2016_02_s2graph-sample-001.jpeg\"><\/p>\n<p>\uc704\uc758 \uadf8\ub9bc\uc5d0\uc11c \uc120(edge)\uc73c\ub85c \ud45c\ud604\ub41c \uad00\uacc4\uc640 \ud65c\ub3d9\uc5d0 \uc18d\uc131(property)\uc744 \ucd94\uac00\ud558\uba74 \ub354 \uc758\ubbf8\uc788\ub294 \uc815\ubcf4\ub97c \ud45c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<blockquote>\n<p>\uc608) \ub355\uc120\uc774\uc640 \ubcf4\ub77c\ub294 \uac00\uc871(\ubcf4\ub77c\uac00 \ub355\uc120\uc774\uc758 \uc5b8\ub2c8)\uc785\ub2c8\ub2e4. \ub355\uc120\uc774\ub294 \uc774\uc2b9\ud658\uc758 \uad11\ud32c\uc785\ub2c8\ub2e4(play count). \ud0dd\uc774\ub294 \uce74\uce74\uc624 \ubc14\ub451 \ub9cc\ub819\uc785\ub2c8\ub2e4(play level). \uc120\uc6b0\ub294 \ubcf4\ub77c\uac00 \uce74\uce74\uc624 \uc2a4\ud1a0\ub9ac\uc5d0 \uc62c\ub9b0 \uae00\uc744 \uc88b\uc544\ud569\ub2c8\ub2e4.<\/p>\n<\/blockquote>\n<p>\uc2e4\uc81c \uce74\uce74\uc624\uc758 \uc18c\uc15c \uadf8\ub798\ud504\ub3c4 \uaddc\ubaa8\uc640 \uc18d\uc131\uc774 \ub2e4\ub97c \ubfd0, \uc544\ub798\uc758 \uadf8\ub9bc\uacfc \ud06c\uac8c \ub2e4\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/meta-kage.kakaocdn.net\/dn\/osa\/blog\/content_images_2016_02_s2graph-sample-002.jpeg\"><\/p>\n<p>\uc774\ub7f0 \uadf8\ub798\ud504\uac00 \uc800\uc7a5\ub418\uc5b4 \uc788\uace0, \ud544\uc694\ud560 \ub54c \uc989\uc2dc \uc870\ud68c\ud560 \uc218 \uc788\ub2e4\uba74, \uc6b0\ub9ac\ub294 \uc0ac\uc6a9\uc790\ub4e4\uc744 \uc704\ud574 \ub354 \ub9ce\uc740 \uc77c\ub4e4\uc744 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<blockquote>\n<p>\uc608) \ub355\uc120\uc774\uac00 \uc990\uaca8\ub4e3\ub294 \uc774\uc2b9\ud658\uc758 \uc74c\uc545\uc744 \ud0dd\uc774\uc5d0\uac8c \ucd94\ucc9c\ud569\ub2c8\ub2e4. \uc120\uc6b0\uc758 \ud0c0\uc784\ub77c\uc778\uc5d0 \ubcf4\ub77c\uc758 \uae00\uc744 \ubc14\ub85c \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \ubcf4\ub77c\uc5d0\uac8c \uc120\uc6b0\ub97c \uce5c\uad6c\ub85c \ucd94\ucc9c\ud569\ub2c8\ub2e4.<\/p>\n<\/blockquote>\n<h2 id=\"s2graph\">S2Graph: \uae30\uc220\uc801 \ub3c4\uc804<\/h2>\n<p>\uce74\uce74\uc624\ub294 S2Graph\ub97c \uac1c\ubc1c\ud558\uae30 \uc804\uae4c\uc9c0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub808\ubca8\uc758 \uc218\ub3d9 \uc0e4\ub529(sharding)\ub41c MySQL\ub97c \uc0ac\uc6a9\ud574 \uc654\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098, \uacc4\uc18d \ub298\uc5b4\ub098\ub294 \uc11c\ube44\uc2a4\uc640 \ub370\uc774\ud130\ub7c9\uc744 \ucf54\ub4dc\uc640 \uc124\uc815\uacfc \uc6b4\uc601\uc73c\ub85c \uadf9\ubcf5\ud558\ub294 \uac83\uc740 \ub9d0\ucc98\ub7fc \uac04\ub2e8\ud55c \uc77c\uc774 \uc544\ub2c8\uc5c8\uc2b5\ub2c8\ub2e4. \ubb3c\ub9ac\uc801\uc778 \ud55c\uacc4\ub85c \uc778\ud574 \ud3ec\uae30\ud560 \uc218 \ubc16\uc5d0 \uc5c6\ub294 \ub370\uc774\ud130\ub4e4\ub3c4 \uacc4\uc18d \ub298\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uce74\uce74\uc624\ub3c4 (\ud398\uc774\uc2a4\ubd81\uacfc \ud2b8\uc704\ud130\uac00 \uadf8\ub7ac\ub358 \uac83\ucc98\ub7fc) \uadfc\ubcf8\uc801\uc778 \ud574\uacb0\ucc45\uc73c\ub85c 2014\ub144\ubd80\ud130 \uadf8\ub798\ud504 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub3c4\uc785\uc744 \uac80\ud1a0\ud558\uae30 \uc2dc\uc791\ud588\uc2b5\ub2c8\ub2e4. \uc624\ub79c \uc2dc\uac04\ub3d9\uc548 \ub2e4\uc591\ud55c \uadf8\ub798\ud504 \ub370\uc774\ubca0\uc774\uc2a4\ub97c \uac80\ud1a0\ud558\uace0 \uace0\uce58\uace0 \uc2dc\ud5d8\ud588\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0, (\ud398\uc774\uc2a4\ubd81\uacfc \ud2b8\uc704\ud130\uac00 \uadf8\ub7ac\ub358 \uac83\ucc98\ub7fc) \uae30\uc874\uc758 \uadf8\ub798\ud504 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \ud574\uacb0\ud560 \uc218 \uc5c6\ub294 \uae30\uc220\uc801 \ub3c4\uc804\uc5d0 \uc9c1\uba74\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<h3 id=\"\">\uaddc\ubaa8: \uc9c0\uc18d\uc801\uc73c\ub85c \ubcc0\ud558\ub294 \ub300\uaddc\ubaa8 \uc18c\uc15c \uadf8\ub798\ud504<\/h3>\n<ul>\n<li>2\uc5b5 \uba85\uc758 \uc0ac\uc6a9\uc790(vertex; node; object)\ub4e4\uc774<\/li>\n<li>100\uc5b5 \uac74\uc758 \uad00\uacc4(edge; link; relation)\ub97c \ub9fa\uace0 \uc788\uc73c\uba70<\/li>\n<li>\ub9e4\uc77c 5000\ub9cc \uac74\uc774 \ub118\ub294 \uad00\uacc4\uac00 \ubcc0\ud558\uace0<\/li>\n<li>\ub9e4\uc77c 30\uc5b5 \uac74\uc774 \ub118\ub294 \ud65c\ub3d9(activity)\uc774 \ucd94\uac00\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4<\/li>\n<\/ul>\n<p>RDB\ub97c \uc0ac\uc6a9\ud558\uba74 2\uc5b5 \ud589\uc744 \uac00\uc9c4 \uc0ac\uc6a9\uc790 \ud14c\uc774\ube14\uacfc 20\uc5b5 \ud589\uc744 \uac00\uc9c4 \uad00\uacc4 \ud14c\uc774\ube14(m:n)\uacfc \ub9e4\uc77c 1000\ub9cc \ud589\uc774 \ub298\uc5b4\ub098\ub294 \ud65c\ub3d9 \ud14c\uc774\ube14\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. 32\ube44\ud2b8 \uc815\uc218\uc758 \ucd5c\ub300 \ubc94\uc704\uac00 21\uc5b5\uc774\ubbc0\ub85c, \uae30\ubcf8 \ud0a4(primary key; PK)\uc640 \uc678\ub798 \ud0a4(foreign key; FK)\ub3c4 64\ube44\ud2b8 \uc815\uc218\uac00 \ub418\uc5b4\uc57c\uaca0\uc8e0. \uc774 \uc22b\uc790\uac00 \uc8fc\ub294 \uc555\ubc15\uac10\uc740&#8230;<\/p>\n<p>\uae30\uc874\uc758 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Graph_database\">\uadf8\ub798\ud504 \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/a>\ub4e4\uc740 <strong>\ubbf8\ub9ac \ud655\ubcf4\ub41c \uc815\uc801\uc778 \ub370\uc774\ud130\uc5d0 \ub300\ud55c \uc758\ubbf8 \ucd94\ub860<\/strong>\uc744 \ubaa9\uc801\uc73c\ub85c \ub9cc\ub4e4\uc5b4\uc838\uc11c \uadf9\ub2e8\uc801\uc778 \uaddc\ubaa8\uc758 \ub370\uc774\ud130\ub7c9\uacfc \ube48\ubc88\ud55c \ub370\uc774\ud130 \ubcc0\uacbd\uc5d0\ub294 \uc0c1\ub300\uc801\uc73c\ub85c \ucde8\uc57d\ud569\ub2c8\ub2e4. \uc560\ucd08\uc5d0 \uadf8\ub7ec\ub77c\uace0(?) \ub9cc\ub4e0 \ubb3c\uac74\uc774 \uc544\ub2c8\uc5c8\ub358 \uac70\uc8e0.<\/p>\n<h3 id=\"\">\uc131\ub2a5: \uc2e4\uc2dc\uac04\uc73c\ub85c \uc5f0\uacb0\ub41c \ub370\uc774\ud130\uc5d0 \ub300\ud55c \ub108\ube44 \uc6b0\uc120 \ud0d0\uc0c9<\/h3>\n<ul>\n<li>\ud53c\ud06c \ud0c0\uc784\uc5d0 \ucd08\ub2f9 65,000 \ucffc\ub9ac<\/li>\n<li>\ucd5c\ub300 \uc751\ub2f5 \uc2dc\uac04 50ms<\/li>\n<\/ul>\n<p>RDB\ub85c \ub108\ube44 \uc6b0\uc120 \ud0d0\uc0c9\uc744 \uad6c\ud604\ud558\ub824\uba74 \ub300\uaddc\ubaa8\uc758 &#8220;JOIN&#8221;\uacfc &#8220;GROUP BY&#8221;\uac00 \ubd88\uac00\ud53c\ud569\ub2c8\ub2e4. \uc2dc\uac04 \ub0b4\uc5d0 \ud55c \uac1c\uc758 \uc751\ub2f5\uc744 \ub0b4\ub294 &#8211; OLAP\uc5d0\uc11c OLTP\uc758 \uc131\ub2a5\uc744 \ubf51\uc544\ub0b4\ub294 &#8211; \uac83\ub9cc \ud574\ub3c4 \uc27d\uc9c0 \uc54a\uc740 \uc77c\uc778\ub370, \ub3d9\uc2dc\uc5d0 2000\uac1c\uc758 \uc751\ub2f5\uc744 \ub0b4\uc57c \ud569\ub2c8\ub2e4.  \uce74\uce74\uc624\uac00 \uadf8\ub7ac\ub358 \uac83\ucc98\ub7fc \uaddc\ubaa8\uc758 \ud55c\uacc4\ub97c \uadf9\ubcf5\ud558\uae30 \uc704\ud574 \uc218\ub3d9 \uc0e4\ub529\uc744 \ud588\ub2e4\uba74 \ucffc\ub9ac\ub3c4 \uc0c1\ub2f9 \ubd80\ubd84 \uc218\ub3d9\uc73c\ub85c \ud574\uc57c \ud569\ub2c8\ub2e4. <\/p>\n<p>\uae30\uc874\uc758 \uadf8\ub798\ud504DB\ub4e4\uc740 <strong>\uc804\uccb4 \ub370\uc774\ud130\ub97c \ub300\uc0c1\uc73c\ub85c \ud558\ub294 <a href=\"http:\/\/tech.kakao.com\/2016\/01\/29\/opensource-1-s2graph\/Depth First Search; DFS\">\uae4a\uc774 \uc6b0\uc120 \ud0d0\uc0c9<\/a><\/strong>\uc5d0 \ucd5c\uc801\ud654\ub418\uc5b4 \uc788\uace0, <strong>\ubd80\ubd84 \ub370\uc774\ud130\ub97c \ub300\uc0c1\uc73c\ub85c \ud558\ub294 <a href=\"http:\/\/tech.kakao.com\/2016\/01\/29\/opensource-1-s2graph\/breadth First Search; BFS\">\ub108\ube44 \uc6b0\uc120 \ud0d0\uc0c9<\/a><\/strong>\uc5d0\ub294 \uc0c1\ub300\uc801\uc73c\ub85c \ucde8\uc57d\ud569\ub2c8\ub2e4. \uce74\uce74\uc624\ub97c \ube44\ub86f\ud55c \ub300\ubd80\ubd84\uc758 \uc18c\uc15c \uc11c\ube44\uc2a4\uc5d0\uac8c \ud544\uc694\ud55c \uac83\uc740 \uba87\uc2dc\uac04 \uac78\ub824\uc11c \ub098\uc624\ub294 \uc218\ud559\uc801\uc778 \ucd5c\ub2e8 \uacbd\ub85c(Shortest Path)\uac00 \uc544\ub2d9\ub2c8\ub2e4.<\/p>\n<p>\ub610\ud55c, \uc11c\ube44\uc2a4 \ud2b8\ub798\ud53d \ud3ed\uc99d\ud558\ub354\ub77c\ub3c4 \uc11c\ubc84 \uaddc\ubaa8\ub97c \uc120\ud615 \ud655\uc7a5(linear scalability)\ud574\uc11c \ub300\uc751\ud560 \uc218 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<h3 id=\"\">\ubc14\uc774\ub7f4 \ud6a8\uacfc\ub97c \uc704\ud55c \uc2e4\uc2dc\uac04 \uc5c5\ub370\uc774\ud2b8<\/h3>\n<p>\uc18c\uc15c\uacfc \ubaa8\ubc14\uc77c\uc758 \uacb0\ud569\uc774 \uac00\uc838\uc628 \uac00\uc7a5 \ud070 \ubcc0\ud654\uac00 &#8220;\uc2e4\uc2dc\uac04\uc131&#8221;\uc785\ub2c8\ub2e4. <\/p>\n<p>\ub9e4\uc77c \ud639\uc740 \ub9e4\uc2dc\uac04 \ubc30\uce58(batch)\ub85c \ub370\uc774\ud130\ub97c \ubd84\uc11d\ud558\uace0, \uc774\ub807\uac8c \ubd84\uc11d\ub41c \uc815\ubcf4\ub97c \uae30\ubc18\uc73c\ub85c \ucd94\ucc9c\ud574\uc11c\ub294 \uc0ac\uc6a9\uc790\ub4e4\uc758 \uc18c\ube44 \uc18d\ub3c4\uc5d0 \ub9de\ucd9c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c0\uae08 \uc774 \uc2dc\uac04 \uc0ac\ub78c\ub4e4\uc774 \ub9ce\uc774 \ubcf8 \ub274\uc2a4\ub97c \ub0b4\uc77c \ucd94\ucc9c\ud558\uba74 &#8220;\ucca0\uc9c0\ub09c \ud56b(?) \ub274\uc2a4&#8221;\uac00 \ub429\ub2c8\ub2e4. \uadf8 \ub274\uc2a4\ub97c \ud1a1\uc73c\ub85c \uacf5\uc720\ud558\uba74&#8230;<\/p>\n<p>\uc9c4\uc9dc \uc2e4\uc2dc\uac04(hard real-time)\uc740 \uc544\ub2c8\ub354\ub77c\ub3c4 \uac70\uc758 \uc2e4\uc2dc\uac04(soft real-time) \ucc98\ub9ac\uac00 \uac00\ub2a5\ud574\uc57c \uc720\ud608\uc0ac\ud0dc(?)\ub97c \ub9c9\uc744 \uc218 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/meta-kage.kakaocdn.net\/dn\/osa\/blog\/content_images_2016_02_s2graph-realtime.png\"><\/p>\n<h3 id=\"\">\ub3d9\uc801 \ub7ad\ud0b9 \ub85c\uc9c1 \uc9c0\uc6d0<\/h3>\n<ul>\n<li>\ud478\uc2dc(push) \uc804\ub7b5: \ub7ad\ud0b9 \ub85c\uc9c1\uc744 \ub3d9\uc801\uc73c\ub85c \ubcc0\uacbd\ud558\uae30 \uc5b4\ub835\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\ud480(pull) \uc804\ub7b5: \ub2e4\uc591\ud55c \ub7ad\ud0b9 \ub85c\uc9c1\uc744 \uc801\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\uc544\uc2dc\ub294 \ubc14\uc640 \uac19\uc774 \ud398\uc774\uc2a4\ubd81\uc774\ub098 \ud2b8\uc704\ud130\uc5d0\uc11c\ub294 \uc0ac\uc6a9\uc790\ub9c8\ub2e4 \ucee8\ud150\uce20\uc758 \ub0b4\uc6a9\uc640 \uc21c\uc11c\uac00 \ub2e4\ub985\ub2c8\ub2e4. \uce74\uce74\uc624 \uc2a4\ud1a0\ub9ac\ub3c4 \ub9c8\ucc2c\uac00\uc9c0\uc785\ub2c8\ub2e4. \uacfc\uac70\uc5d0\ub294 &#8220;\uc2dc\uac04\uc21c&#8221;\uc774\ub77c\ub294 \uc758\ubbf8\ub85c &#8220;\ud0c0\uc784\ub77c\uc778&#8221;\uc774\ub77c\ub294 \ub2e8\uc5b4\ub97c \uc0ac\uc6a9\ud588\uc9c0\ub9cc, \ucd5c\uadfc\uc5d0\ub294 \uc870\uc791\ub41c \ud0c0\uc784\ub77c\uc778, \uc989, \uc0ac\uc6a9\uc790 \ub9de\ucda4\ud615 &#8220;\ud53c\ub4dc&#8221;\ub77c\ub294 \uc758\ubbf8\ub85c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n<p>\ud2b8\uc704\ud130\ub294 \ud53c\ub4dc\ub97c \uad6c\ud604\ud558\uae30 \uc704\ud574\uc11c \ud478\uc2dc \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774 \ubc29\uc2dd\uc740 \uc0ac\uc6a9\uc790\uc774 \ucee8\ud150\uce20\ub97c \uc0dd\uc0b0\ud560 \ub54c(tweet, retweet, follow\/unfollow&#8230;) \uadf8 \ucee8\ud150\uce20\ub97c \uc18c\ube44\ud560 \uc0ac\uc6a9\uc790(\ud314\ub85c\uc5b4)\ub4e4\uc758 \ud53c\ub4dc\uc5d0 \ud574\ub2f9 \ucee8\ud150\uce20\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \uc774\ub7f0 \ud2b9\uc131 \ub54c\ubb38\uc5d0 write fanout \ubc29\uc2dd\uc774\ub77c\uace0\ub3c4 \ud569\ub2c8\ub2e4. \ud478\uc2dc \ubc29\uc2dd\uc740 \ucee8\ud150\uce20 \uc18c\ube44(\ud0c0\uc784\ub77c\uc778\uc744 \uc77d\uc744 \ub54c) \ucc98\ub9ac\uac00 \uac04\ud3b8\ud558\uace0 \ube60\ub974\ub2e4\ub294 \uc7a5\uc810\uc774 \uc788\uc9c0\ub9cc, \ud53c\ub4dc\uc758 \ub0b4\uc6a9\uacfc \uc21c\uc11c\ub97c \ubcc0\uacbd\ud558\uae30 \uc5b4\ub835\ub2e4\ub294 \ubb38\uc81c\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4. \ubd88\ud544\uc694\ud55c \ub370\uc774\ud130 \ucd94\uac00(\ud2b8\uc704\ud130\ub97c \uc811\uc740 \ud314\ub85c\uc5b4\uc758 \ud53c\ub4dc\uc5d0\ub3c4 \uc0c8 \ud2b8\uc717\uc744 \ucd94\uac00&#8230;)\ub85c \uc778\ud55c \uc790\uc6d0 \ub0ad\ube44\ub3c4 \ud070 \ubb38\uc81c\uc785\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/meta-kage.kakaocdn.net\/dn\/osa\/blog\/content_images_2016_02_s2graph-push.png\"><\/p>\n<p>\ubc18\uba74, \ud398\uc774\uc2a4\ubd81\uc740 \ud480 \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774 \ubc29\uc2dd\uc740 \uc0ac\uc6a9\uc790\ub4e4\uc774 \ubcfc \ub54c \ucee8\ud150\uce20\uc758 \ub0b4\uc6a9\uacfc \uc21c\uc11c\ub97c \uacb0\uc815\ud569\ub2c8\ub2e4. \uc774\ub7f0 \ud2b9\uc131 \ub54c\ubb38\uc5d0 read fanout \ubc29\uc2dd\uc774\ub77c\uace0\ub3c4 \ud569\ub2c8\ub2e4. \ud480 \ubc29\uc2dd\uc740 \ucee8\ud150\uce20 \uc0dd\uc0b0(post, like, friend\/unfriend&#8230;) \ucc98\ub9ac\uac00 \uac04\ud3b8\ud558\uace0 \ube60\ub974\ub2e4\ub294 \uc7a5\uc810\uc774 \uc788\uc9c0\ub9cc, \ucee8\ud150\uce20 \uc18c\ube44 \ucc98\ub9ac\uac00 \uc5b4\ub835\uace0 \ub290\ub9bd\ub2c8\ub2e4. \uadf8\ub7ec\ub098, \ud53c\ub4dc\uc758 \ub0b4\uc6a9\uacfc \uc21c\uc11c\ub97c \ubcc0\uacbd\ud560 \uc218 \uc788\uc5b4\uc11c \ucd5c\uadfc\uc5d0\ub294 \ub354 \ub110\ub9ac \uc0ac\uc6a9\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/meta-kage.kakaocdn.net\/dn\/osa\/blog\/content_images_2016_02_s2graph-pull.png\"><\/p>\n<p>\uac00\ub2a5\ud558\ub2e4\uba74 \ud480 \ubc29\uc2dd\uc774 \uc88b\uaca0\uc9c0\ub9cc, \uc11c\ube44\uc2a4\uc758 \ud2b9\uc131\uc5d0 \ub530\ub77c \ud478\uc2dc \ubc29\uc2dd\uc774 \ubd88\uac00\ud53c\ud55c \uacbd\uc6b0\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 \ud480\uacfc \ud478\uc2dc, \ub458 \ub2e4 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n<h3 id=\"s2graphbeforeafter\">S2Graph: Before &amp; After<\/h3>\n<p>S2Graph\ub97c \uc801\uc6a9\ud558\uae30 \uc804, \uc218\ub3d9 \uc0e4\ub529\uacfc \uc0c1\ud638 \uc5f0\uacb0\ub85c \uc5bd\ud788\uace0\uc124\ucf1c \ud655\uc7a5\uc131 \uc5c6\ub358 \uc544\ud0a4\ud14d\uccd0\uac00:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/meta-kage.kakaocdn.net\/dn\/osa\/blog\/content_images_2016_02_s2graph-before.png\"><\/p>\n<p>S2Graph\ub97c \uc801\uc6a9\ud55c \ud6c4, \uae54\ub054\ud558\uace0 \ubb34\ud55c \ud655\uc7a5\uac00\ub2a5\ud55c \uc544\ud0a4\ud14d\uccd0\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/meta-kage.kakaocdn.net\/dn\/osa\/blog\/content_images_2016_02_s2graph-after.png\"><\/p>\n<p>S2Graph\ub97c \ucc98\uc74c \uacf5\uac1c\ud560 \ub2f9\uc2dc\ub9cc \ud574\ub3c4 \ub9e4\uc77c 10\uc5b5 \uac74 \uc815\ub3c4\uc758 \ud65c\ub3d9\uc774 \ucd94\uac00\ub418\uc5c8\uc9c0\ub9cc, \ucd5c\uadfc\uc5d4 \uc801\uc6a9\ud55c \uc11c\ube44\uc2a4\uac00 \ub298\uba74\uc11c \ub9e4\uc77c 30 \uc5b5 \uac74 \uc815\ub3c4\uc758 \ud65c\ub3d9\uc774 \ucd94\uac00\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7fc\uc5d0\ub3c4 \ubd88\uad6c\ud558\uace0, \ucf54\uc5b4\uc758 \uc9c0\uc18d\uc801\uc778 \uac1c\uc120\uc744 \ud1b5\ud574 \ud53c\ud06c \ud0c0\uc784 QPS\ub294 20,000\uc5d0\uc11c 65,000\uc73c\ub85c, \ucd5c\ub300 \uc751\ub2f5 \uc2dc\uac04\uc740 100ms\uc5d0\uc11c 50ms\uc774\ud558\ub85c \ub354\uc6b1 \ube68\ub77c\uc84c\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 id=\"whatiss2graph\">What is S2Graph?<\/h2>\n<p>S2Graph\ub97c \ud55c \ubb38\uc7a5\uc73c\ub85c \ud45c\ud604\ud558\uba74:<\/p>\n<blockquote>\n<h3 id=\"storageasaservicegraphapirealtimebreadthfirstsearch\">Storage-as-a-Service + Graph API = Realtime Breadth First Search<\/h3>\n<\/blockquote>\n<p>\uc989, \uc2e4\uc2dc\uac04 \ub108\ube44 \uc6b0\uc120 \ud0d0\uc0c9\uc744 \uc704\ud55c <strong>\uadf8\ub798\ud504 \ub370\uc774\ud130 \uc800\uc7a5\uc18c<\/strong>\uc640 <strong>\uadf8\ub798\ud504 API \uc11c\ubc84<\/strong>\uc785\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/meta-kage.kakaocdn.net\/dn\/osa\/blog\/content_images_2016_02_s2graph-overallarch.png\"><\/p>\n<p><a href=\"https:\/\/hbase.apache.org\">HBase<\/a>\ub97c \uadf8\ub798\ud504 \ub370\uc774\ud130 \uc800\uc7a5\uc18c\ub85c  \uc0ac\uc6a9\ud569\ub2c8\ub2e4. HBase\/HDFS\/Hadoop\uc774 \uac00\uc9c4 \uc131\ub2a5, \ud655\uc7a5\uc131, \uac00\uc6a9\uc131\uc744 \uadf8\ub300\ub85c \ud761\uc218\ud558\uba74\uc11c, \uc2e4\uc2dc\uac04 \ub108\ube44 \uc6b0\uc120 \ud0d0\uc0c9\uc5d0 \ucd5c\uc801\ud654\ub41c \ud615\ud0dc\ub85c \uadf8\ub798\ud504 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud569\ub2c8\ub2e4. \uc800\uc7a5\uc18c \ub808\uc774\uc5b4\ub294 \ubb3c\ub9ac\uc801 \uad6c\ud604\uccb4\uc5d0 \ub3c5\ub9bd\uc801\uc73c\ub85c \uc124\uacc4\ub418\uc5b4 MySQL\uc744 \uc800\uc7a5\uc18c\ub85c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>[\uc2a4\uce7c\ub77c]\uc640 <a href=\"https:\/\/www.playframework.com\">Play \ud504\ub808\uc784\uc6cd<\/a>\ub85c \uad6c\ud604\ub41c \uc120\ud615 \ud655\uc7a5\uac00\ub2a5\ud55c \uadf8\ub798\ud504 API \uc11c\ubc84\ub97c \ud3ec\ud568\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ucd5c\uadfc\uc5d0\ub294 <a href=\"http:\/\/netty.io\">Netty<\/a> \uae30\ubc18\uc758 \uace0\uc131\ub2a5 REST \uc11c\ubc84\ub3c4 \uc2e4\ud5d8\uc801\uc73c\ub85c \uac1c\ubc1c\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uadf8 \ubc16\uc5d0\ub3c4 <a href=\"http:\/\/kafka.apache.org\">Kafka<\/a>\uc640 <a href=\"http:\/\/spark.apache.org\">Spark<\/a> \uae30\ubc18\uc758 \ubc30\uce58 \ucc98\ub9ac, Top\uce74\uc6b4\ud130, A\/B \ud14c\uc2a4\ud2b8 \ub4f1\uc744 \ud3ec\ud568\ud55c \uc18c\uc15c \uadf8\ub798\ud504 \uae30\ubc18 \uc11c\ube44\uc2a4\uc5d0 \uc720\uc6a9\ud55c \uc5ec\ub7ec\uac00\uc9c0 \uae30\ub2a5\uc744 \ud3ec\ud568\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e8\uc77c \uba38\uc2e0\uc5d0 \uc124\uce58\ud558\uace0 \uc2e4\ud589\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \uac1c\ubc1c\uacfc \ud14c\uc2a4\ud2b8\uac00 \uc6a9\uc774\ud569\ub2c8\ub2e4. <a href=\"https:\/\/www.vagrantup.com\">Vagrant<\/a>\uc640 <a href=\"https:\/\/www.virtualbox.org\">VirtualBox<\/a> \ub4f1\uc774 \uc124\uce58\ub418\uc5b4 \uc788\ub2e4\uba74, \uc544\ub798\uc758 \uac04\ub2e8\ud55c \uba85\ub839 \uba87 \uac1c \ub9cc\uc73c\ub85c S2Graph\ub97c \uccb4\ud5d8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code>$ git clone https:\/\/github.com\/kakao\/s2graph.git\n$ cd s2graph\n$ vagrant up\n$ vagrant ssh\n# \uac00\uc0c1 \uba38\uc2e0\uc5d0\uc11c...\n$ cd s2graph\n$ activator run\n<\/code><\/pre>\n<h2 id=\"s2graphapaches2graph\">S2Graph\uc758 \uc0c8 \uc774\ub984: Apache S2Graph!<\/h2>\n<p>\uc9c0\ub09c\ud574 11\uc6d4 <a href=\"http:\/\/incubator.apache.org\/projects\/s2graph.html\">\uc544\ud30c\uce58 \uc7ac\ub2e8\uc758 \uc778\ud050\ubca0\uc774\ud130 \ud504\ub85c\uc81d\ud2b8<\/a>\ub85c \uc120\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4(<a href=\"http:\/\/www.kakaocorp.com\/pr\/pressRelease_view?page=5&amp;group=1&amp;idx=8425\">\uad00\ub828 \uc18c\uc2dd<\/a>).<\/p>\n<p>\uc544\ud30c\uce58 \uc778\ud050\ubca0\uc774\ud130 \ud504\ub85c\uadf8\ub7a8\uc5d0 \ub9de\ucdb0 \ud604\uc7ac \uc18c\uc2a4 \ucf54\ub4dc\uc640 \uc774\uc288 \ud2b8\ub798\ucee4\uc758 \uc774\uc804, \ube4c\ub4dc, \ubb38\uc11c\ud654 \ub4f1\uc758 \uc791\uc5c5\uc774 \ud55c\ucc3d \uc9c4\ud589 \uc911\uc785\ub2c8\ub2e4. \uce74\uce74\uc624\uc5d0\uc11c\ub3c4 \ub2e4\uc218\uc758 \uac1c\ubc1c\uc790\ub4e4\uc774 \ud480\ud0c0\uc784\uc73c\ub85c S2Graph \uac1c\ubc1c\uc5d0 \uc804\ub150\ud558\uace0 \uc788\uc9c0\ub9cc, \uc774 \uae00\uc744 \uc77d\ub294 \ubd84\ub4e4\ub3c4 \uc5b8\uc81c\ub4e0\uc9c0 \ucc38\uc5ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 id=\"\">\ub098\uac00\ub294 \uae00<\/h2>\n<p>\uc774 \uae00\uc740 \uadf8\ub798\ud504 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc0dd\uc18c\ud55c \ubd84\ub4e4\uc5d0\uac8c S2Graph\ub97c \uc18c\uac1c\ud558\uae30 \uc704\ud574 \uc758\ub3c4\uc801\uc73c\ub85c \uae30\uc220\uc801\uc778 \uc138\ubd80\uc0ac\ud56d\uc744 \uc0dd\ub7b5\ud588\uc9c0\ub9cc, \uc55e\uc73c\ub85c\ub294 <a href=\"http:\/\/tech.kakao.com\">\uc774 \uacf3, kakao \uae30\uc220 \ube14\ub85c\uadf8<\/a>\uc640 <a href=\"https:\/\/brunch.co.kr\/magazine\/apaches2graph\">\ube0c\ub7f0\uce58\uc758 Apache S2Graph \ub9e4\uac70\uc9c4<\/a> \ub4f1\uc744 \ud1b5\ud574 <strong>S2Graph\uc758 \ud65c\uc6a9\uacfc \ub0b4\ubd80 \uad6c\uc870<\/strong>\ub97c \ud3ec\ud568\ud55c \ub2e4\uc591\ud55c \uae30\uc220 \uc790\ub8cc\ub97c \uc9c0\uc18d\uc801\uc73c\ub85c \uacf5\uc720\ud558\uaca0\uc2b5\ub2c8\ub2e4. S2Graph\uac00 \ub354 \uc88b\uc740 \uc624\ud508\uc18c\uc2a4 \uc18c\ud504\ud2b8\uc6e8\uc5b4\uac00 \ub420 \uc218 \uc788\ub3c4\ub85d \uc5ec\ub7ec\ubd84\ub4e4\uc758 \uc9c0\uc18d\uc801\uc778 \uad00\uc2ec\uacfc \ucc38\uc5ec\ub97c \uae30\ub300\ud569\ub2c8\ub2e4.<\/p>\n<h2 id=\"\">\ucc38\uace0\uc790\ub8cc<\/h2>\n<ul>\n<li>S2Graph <a href=\"https:\/\/github.com\/kakao\/s2graph\">\uacf5\uc2dd \uc18c\uc2a4 \uc800\uc7a5\uc18c &amp; \uc774\uc288 \ud2b8\ub798\ucee4<\/a><\/li>\n<li>S2Graph <a href=\"https:\/\/steamshon.gitbooks.io\/s2graph-book\/content\/\">\uacf5\uc2dd \ubb38\uc11c<\/a><\/li>\n<li>S2Graph <a href=\"https:\/\/groups.google.com\/forum\/#!forum\/s2graph\">\uacf5\uc2dd \uc0ac\uc6a9\uc790 \ud3ec\ub7fc(\uba54\uc77c\ub9c1)<\/a><\/li>\n<li>S2Graph <a href=\"http:\/\/incubator.apache.org\/projects\/s2graph.html\">\uc544\ud30c\uce58 \uc778\ud050\ubca0\uc774\ud130 \ud504\ub85c\uc81d\ud2b8 \ud648\ud398\uc774\uc9c0<\/a><\/li>\n<li>S2Graph \uac1c\ubc1c\ud300\uc758 <a href=\"https:\/\/brunch.co.kr\/magazine\/apaches2graph\">Apache S2Graph \ube14\ub85c\uadf8\/\uc6f9\uc9c4<\/a><\/li>\n<li>Apache Big Data 2015 <a href=\"http:\/\/apachebigdata2015.sched.org\/event\/de6abfbd8f0b9e66b1c03feb2b9e2078\">\ubc1c\ud45c \uc790\ub8cc<\/a><\/li>\n<li>DEVIEW 2015 <a href=\"http:\/\/www.slideshare.net\/deview\/263-s2graph-largescalegraphdatabasewithhbase2\">\ubc1c\ud45c \uc790\ub8cc<\/a> &amp; <a href=\"http:\/\/serviceapi.rmcnmv.naver.com\/flash\/outKeyPlayer.nhn?vid=476077CFB274F31E3A3C9017F65C3DC26D30&amp;outKey=V125fb0a32f63f576621e1b6811099841c5e088c1a1d90e05bef21b6811099841c5e0&amp;controlBarMovable=true&amp;jsCallable=true&amp;skinName=tvcast_white\">\ubc1c\ud45c \ub3d9\uc601\uc0c1<\/a><\/li>\n<li>\n<p>HBaseCon 2015 <a href=\"http:\/\/www.slideshare.net\/HBaseCon\/use-cases-session-5\">\ubc1c\ud45c \uc790\ub8cc<\/a> &amp; <a href=\"https:\/\/vimeo.com\/128203919\">\ubc1c\ud45c \ub3d9\uc601\uc0c1<\/a><\/p>\n<\/li>\n<li>\n<p>\ucee4\ubc84 \uc774\ubbf8\uc9c0 \ucd9c\ucc98: <a href=\"http:\/\/www.blogdoozires.com.br\/ozires\/tag\/inteligencia\/\"><br \/>\nArticles <br \/>\nA Intelig\u00eancia Humana, por Ozires Silva<\/a> &copy; Divulga\u00e7\u00e3o<\/p>\n<\/li>\n<\/ul>\n<p>Source: <a href=\"http:\/\/tech.kakao.com\/2016\/01\/29\/opensource-1-s2graph\/\" target=\"_blank\">kakao\uc758 \uc624\ud508\uc18c\uc2a4 Ep1 &#8211; \ub300\uc6a9\ub7c9 \ubd84\uc0b0 \uadf8\ub798\ud504DB &quot;S2Graph&quot;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>kakao\uc758 \uc624\ud508\uc18c\uc2a4 Ep1 &#8211; \ub300\uc6a9\ub7c9 \ubd84\uc0b0 \uadf8\ub798\ud504DB &quot;S2Graph&quot; &#8220;\uce74\uce74\uc624\uc758 \uc624\ud508\uc18c\uc2a4\ub97c \uc18c\uac1c\ud569\ub2c8\ub2e4&#8221; \uccab\ubc88\uc9f8\ub294 shon.0\uc640 \ub3d9\ub8cc\ub4e4\uc774 \uac1c\ubc1c\ud55c S2Graph\uc785\ub2c8\ub2e4. S2Graph\ub294 \uce74\uce74\uc624\uc5d0\uc11c 1\ub144 \uc5ec\uc758 \uac1c\ubc1c\uc744 \uac70\uccd0 \uce74\uce74\uc624\ud1a1, \uce74\uce74\uc624\uc2a4\ud1a0\ub9ac, \uce74\uce74\uc624\ubba4\uc9c1, \uc120\ubb3c\ud558\uae30, \ub2e4\uc74c\uc571, \ub2e4\uc74c\ub274\uc2a4, \ub2e4\uc74c\uc1fc\ud551 \ub4f1 20\uc5ec\uac1c \uc774\uc0c1\uc758 \uc11c\ube44\uc2a4\uc5d0 \uc801\uc6a9\ub41c \ub300\uc6a9\ub7c9 \ubd84\uc0b0 \uadf8\ub798\ud504 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc785\ub2c8\ub2e4. Scala\uc5b8\uc5b4\uc640 Play \ud504\ub808\uc784\uc6cd\uc73c\ub85c \uc791\uc131\ub41c \uadf8\ub798\ud504 API \uc11c\ubc84\uc640 HBase, Kafka, Spark \ub4f1 \ucd5c\uadfc \uac00\uc7a5 \uc8fc\ubaa9\ubc1b\ub294 \uae30\uc220\ub4e4\ub85c \uad6c\uc131\ub418\uc5b4, \ud638\uae30\uc2ec\uc73c\ub85c \ub618\ub618\ubb49\uce5c \uac1c\ubc1c\uc790\ub4e4\uc5d0\uac8c \ub9ce\uc740 \ub3c4\uc6c0\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4. \uadf8\ub798\ud504 \ub370\uc774\ud130\ubca0\uc774\uc2a4 &#8220;\uadf8\ub798\ud504&#8221;\ub77c\uace0 \ud558\uba74, \ubcf4\uace0\uc11c\ub098 \ubc1c\ud45c\uc790\ub8cc\uc5d0 \ub9c9\ub300 \uadf8\ub798\ud504, \ud30c\uc774 \ucc60\ud2b8,&#8230;\ub97c \ub5a0\uc62c\ub9ac\uc9c0\ub9cc, \uc774 \uae00\uc5d0\uc11c \uc5b8\uae09\ud558\ub294 \uadf8\ub798\ud504\ub294 \uc218\ud559\uc790 \uc624\uc77c\ub7ec\uc5d0\uc11c \uc2dc\uc791\ub41c \uadf8\ub798\ud504 \uc774\ub860\uc758 \uadf8\ub798\ud504\uc785\ub2c8\ub2e4. \uadf8\ub798\ud504 \uc774\ub860\uc740 &#8220;\uc720\ud55c \uac1c\uc758 \uc810\ub4e4\ub85c \uc774\ub8e8\uc5b4\uc9c4 \uc9d1\ud569\uacfc \uc810\ub4e4 \uac04\uc758 \uc5f0\uacb0(\uad00\uacc4)\ub97c \ub2e4\ub8e8\ub294&#8221; \ud559\ubb38\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uba74, &#8220;\uc5b4\ub5a4 \uc9c0\uc5ed\uacfc \uc9c0\uc5ed\uc744 \ucd5c\ub2e8\uac70\ub9ac\ub85c \uc774\ub3d9\ud558\ub824\uba74 \uc5b4\ub5bb\uac8c \ud574\uc57c \ub418\ub294\uac00? \uc5b4\ub5a4 \uc9c0\uc810\ub4e4\uc774 \uc788\ub294\ub370 \uc774 \uc9c0\uc810\ub4e4\uc744 \uc911\ubcf5\uc73c\ub85c \uc9c0\ub098\uc9c0 \uc54a\uace0 \ud55c\ubc88\uc5d0 \uc774\ub3d9\ud560 \uc218 \uc788\ub294\uac00?&#8221; \uac19\uc740 \ubb38\uc81c\ub97c \uc5f0\uad6c\ud558\ub294 \uac70\uc8e0. \uc774\ub7f0 &#8220;\uadf8\ub798\ud504 \uad6c\uc870&#8221;\ub97c \uc800\uc7a5\ud558\uace0 \ud45c\ud604\ud558\uae30 \uc704\ud574 \ub9cc\ub4e4\uc5b4\uc9c4 \ub3c4\uad6c\uac00 \uadf8\ub798\ud504 \ub370\uc774\ud130\ubca0\uc774\uc2a4 (graph database; \uc774\ud558 \uadf8\ub798\ud504DB)\uc785\ub2c8\ub2e4. \uc18c\uc15c \uadf8\ub798\ud504 \uce74\uce74\uc624\uc758 \ub9ce\uc740 \uc11c\ube44\uc2a4\ub4e4\uc740 \uc0ac\uc6a9\uc790 <a class=\"mh-excerpt-more\" href=\"https:\/\/jirak.net\/wp\/kakao%ec%9d%98-%ec%98%a4%ed%94%88%ec%86%8c%ec%8a%a4-ep1-%eb%8c%80%ec%9a%a9%eb%9f%89-%eb%b6%84%ec%82%b0-%ea%b7%b8%eb%9e%98%ed%94%84db-s2graph\/\" title=\"kakao\uc758 \uc624\ud508\uc18c\uc2a4 Ep1 &#8211; \ub300\uc6a9\ub7c9 \ubd84\uc0b0 \uadf8\ub798\ud504DB &quot;S2Graph&quot;\">[ more&#8230; ]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":5887,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[169],"tags":[705],"class_list":["post-5886","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-kakao"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/5886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/comments?post=5886"}],"version-history":[{"count":1,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/5886\/revisions"}],"predecessor-version":[{"id":5888,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/5886\/revisions\/5888"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/media\/5887"}],"wp:attachment":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/media?parent=5886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/categories?post=5886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/tags?post=5886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}