翻蚳è
ããïŒæè¿ããã®ããªãèå³æ·±ãããŒã¿ããŒã¹ã«ã€ããŠåŠã³ãæ°ããèšäºã«åºäŒããŸããã Habréã«ã¯ãRethinkDBã«é¢ããèšèãã»ãšãã©ãããŸããããããã«é¢é£ããŠãã®ç¿»èš³ãè¡ãããšã決å®ãããŸããã ç«ãžããããïŒ
RethinkDBããŒã¿ããŒã¹ã¯ããªã¢ã«ã¿ã€ã æŽæ°ã®ããã®Webã¢ããªã±ãŒã·ã§ã³ã®éçºãç°¡çŽ åããŸããRethinkDBã¯ããªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³çšã®ãªãŒãã³ãœãŒã¹ããŒã¿ããŒã¹ã§ãã ã¢ããªã±ãŒã·ã§ã³ã®æŽæ°ãç¶ç¶çã«ãããŒããã£ã¹ãããå€æŽéç¥ã·ã¹ãã ãçµ±åãããŠããŸãã åžžã«æ°ããããŒã¿ãèŠæ±ãã代ããã«ãããŒã¿ããŒã¹èªäœã«ææ°ã®å€æŽãéä¿¡ãããŸãã ã¹ããªãŒãã³ã°æŽæ°ãããµãã¹ã¯ã©ã€ããããæ©èœã«ãããã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ã倧å¹
ã«ç°¡çŽ åããããµãŒããŒåŽãžã®åžžææ¥ç¶ãç¶æããã¯ã©ã€ã¢ã³ããšé£æºã§ããŸãã
RethinkDBã¯JSONããã¥ã¡ã³ãçšã®ã¹ããŒãããªãŒãªããžããªã§ããããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®äžéšã®æ©èœããµããŒãããŠããŸãã RethinkDBã¯ã¯ã©ã¹ã¿ãªã³ã°ããµããŒãããŠãããããæ¡åŒµãéåžžã«ç°¡åã§ãã çµã¿èŸŒã¿ã®Webã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠãã·ã£ãŒãã£ã³ã°ãšã³ããŒãæ§æã§ããŸãã RethinkDBã®ææ°ããŒãžã§ã³ã«ã¯ã3ã€ä»¥äžã®ãµãŒããŒãæã€ã¯ã©ã¹ã¿ãŒã®èªå
ãã§ãŒã«ãªãŒããŒãå«ãŸããŠããŸãã ïŒ
翻蚳è
ã®ã¡ã¢ïŒãµãŒããŒã®1ã€ãèœäžããå Žåã§ããããŒã¿ããŒã¹ãæäœãç¶ããå¯èœæ§ãæ瀺ãããŠããŸããïŒReQinkãšåŒã°ããRethinkDBã®ã¯ãšãªèšèªã¯ãã¢ããªã±ãŒã·ã§ã³ãèšè¿°ããèšèªã®ã³ãŒãã«ãã€ãã£ãã«åã蟌ãŸããŠããŸãã ããšãã°ãPythonã§ã³ãŒãã£ã³ã°ããå ŽåãããŒã¿ããŒã¹ã«ã¯ãšãªãæžã蟌ããšãã«Pythonã®éåžžã®æ§æã䜿çšããŸãã åèŠæ±ã¯ãå¿
èŠãªæäœãæ£ç¢ºã«èšè¿°ããããã«éçºè
ããã§ãŒã³ã«å
¥ããé¢æ°ã§æ§æãããŸãã
ReQLã«ã€ããŠäžèšRethinkDBã«ã¯ãåŸæ¥ã®JSONããã¥ã¡ã³ããä¿åãããããŒãã«ãå«ãŸããŠããŸãã JSONãªããžã§ã¯ãèªäœã®æ§é ã«ã¯ãæ·±ããã¹ãããããŸãã RethinkDBã®åããã¥ã¡ã³ãã«ã¯ç¬èªã®ãã©ã€ããªããŒããããŸããããã¯ã芪ããŒãã«ã®äžæã®å€ãæã€
ãidãããããã£ã§ãã ãªã¯ãšã¹ãã®äž»ããŒãåç
§ãããšãç¹å®ã®ããã¥ã¡ã³ããååŸã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã§ã®ReQLã¯ãšãªã®èšè¿°ã¯ãSQLã¯ãšãªã³ã³ã¹ãã©ã¯ã¿ãŒAPIã®äœ¿çšãšéåžžã«äŒŒãŠããŸãã 以äžã§ã¯ãJavaScriptã§ã
ãŠãŒã¶ãŒããŒãã«ã®äžæã®å§ã®æ°ã決å®ããããã®ReQLã¯ãšãªã®ç°¡åãªäŸã瀺ããŸãã
r.table("users").pluck("last_name").distinct().count()
ReQLã¯ãšãªã§ã¯ãåãã§ãŒã³é¢æ°ã¯åã®é¢æ°ããååŸããããŒã¿ãåŠçããŸãã æ£ç¢ºã«ã¯ããã®ãªã¯ãšã¹ãã®å®è¡é åºã¯æ¬¡ã®ãšããã§ãã
- ããŒãã«ã¯ããŒã¿ããŒã¹å
ã®ç¹å®ã®ããŒãã«ãã¯ãšãªããŸã
- pluckã¯ãåãšã³ããªããç¹å®ã®ããããã£ïŒãŸãã¯è€æ°ã®ããããã£ïŒãååŸããŸã
- disctinctã¯éè€ããå€ãåé€ããäžæã®å€ã1ã€ã ãæ®ããŸã
- countã¯ã«ãŠã³ãããåãåã£ãã¢ã€ãã ã®æ°ãè¿ããŸã
åŸæ¥ã®CRUDæäœãç°¡åã§ãã ReQLã«ã¯ãæ°ããJSONããã¥ã¡ã³ããããŒãã«ã«è¿œå ããããã«äœ¿çšã§ãã
æ¿å
¥é¢æ°ãå«ãŸããŠããŸãã
r.table("fellowship").insert([ { name: "Frodo", species: "hobbit" }, { name: "Sam", species: "hobbit" }, { name: "Merry", species: "hobbit" }, { name: "Pippin", species: "hobbit" }, { name: "Gandalf", species: "istar" }, { name: "Legolas", species: "elf" }, { name: "Gimili", species: "dwarf" }, { name: "Aragorn", species: "human" }, { name: "Boromir", species: "human" } ])
ãã£ã«ã¿ãŒé¢æ°
㯠ãç¹å®ã®ãã©ã¡ãŒã¿ãŒã«äžèŽ
ããããã¥ã¡ã³ãã
ååŸããŸãã
r.table("fellowship").filter({species: "hobbit"})
updateã
deleteãªã©ã®é¢æ°ããã§ãŒã³ã«è¿œå ããŠã
filterããè¿ãããããã¥ã¡ã³ãã«å¯ŸããŠç¹å®ã®æäœãå®è¡ã§ã
ãŸã ã
r.table("fellowship").filter({species: "hobbit"}).update({species: "halfling"})
ReQLã«ã¯100以äžã®æ©èœãå«ãŸããŠãããããããçµã¿åãããŠç®çã®çµæãåŸãããšãã§ããŸãã ãããŒã®ç®¡çãããã¥ã¡ã³ãã®å€æŽãéèšãèšé²ãªã©ã®æ©èœããããŸãã æååãæ°å€ãã¿ã€ã ã¹ã¿ã³ããå°ç空é座æšã䜿çšããŠæšæºæäœãå®è¡ããããã®ãã·ã£ãŒãåãæ©èœããããŸãã
ãµãŒãããŒãã£ã®Web APIããããŒã¿ãååŸããããã«äœ¿çšã§ãã
httpã³ãã³ãããããŸãã 次ã®äŸã¯ã
httpã䜿çšããŠRedditããæçš¿ãååŸããæ¹æ³ã瀺ããŠããŸãã
r.http("http://www.reddit.com/r/aww.json")("data")("children")("data").orderBy(r.desc("score")).limit(5).pluck("score", "title", "url")
æçš¿ãåä¿¡ããããšããããã¯ãã€ã³ãã§ãœãŒããããäžäœ5ã€ã®æçš¿ã®ç¹å®ã®ããããã£ã衚瀺ãããŸãã ããã«ãã£ãã·ãã£ãã§ReQLã䜿çšãããšãéçºè
ã¯éåžžã«è€éãªããŒã¿æäœãå®è¡ã§ããŸãã
ReQLã®ä»çµã¿RethinkDB
ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãª ïŒä»¥äžããã©ã€ããŒãïŒã¯ãã¢ããªã±ãŒã·ã§ã³ãéçºãããŠããããã°ã©ãã³ã°èšèªã«ReQLãçµ±åãã圹å²ãæãããŸãã ãã©ã€ããŒã¯ãããŒã¿ããŒã¹ã§ãµããŒãããããã¹ãŠã®çš®é¡ã®ã¯ãšãªã®æ©èœãå®è£
ããŸãã ReQLåŒã¯ã
æœè±¡æ§æããªãŒã®ããã«èŠããæ§é åãªããžã§ã¯ããšèŠãªãã
ãŸã ã ãã ããèŠæ±ãæºããããã«ããã©ã€ããŒã¯ãããã®èŠæ±ãªããžã§ã¯ããç¹å¥ãªåœ¢åŒã
RethinkDBã®JSONã¯ã€ã€ãããã³ã«åœ¢åŒ ãã«
å€æã ãããã§ããŒã¿ããŒã¹ã«è»¢éããŸãã
ãã§ãŒã³ãéãã
runé¢æ°ã¯ããªã¯ãšã¹ããå€æãããµãŒããŒäžã§å®è¡ããçµæãè¿ããŸãã éåžžãæäœãå®äºããããã«ããã®é¢æ°ã«ãµãŒããŒæ¥ç¶ãæž¡ããŸãã å
¬åŒãã©ã€ããŒã§ã¯ãæ¥ç¶ã®æäœã¯æåã¢ãŒãã§å®è¡ãããŸãã ããã¯ãæäœåŸã«æ¥ç¶ãäœæããŠéããå¿
èŠãããããšãæå³ããŸãã
次ã®äŸã¯ãJavaScriptçšã®ReQLãã©ã€ããŒãã€ã³ã¹ããŒã«ãããNode.jsããRethinkDBã§ã¯ãšãªãå®è¡ããæ¹æ³ã瀺ããŠããŸãã ãã®ã¯ãšãªã¯ããã§ããŒã·ããããŒãã«ãããã¹ãŠã®ããŒããªã³ã°ãååŸããã³ã³ãœãŒã«ã«è¡šç€ºããŸãã
var r = require("rethinkdb"); r.connect().then(function(conn) { return r.table("fellowship") .filter({species: "halfling"}).run(conn) .finally(function() { conn.close(); }); }) .then(function(cursor) { return cursor.toArray(); }) .then(function(output) { console.log("Query output:", output); })
rethinkdbã¢ãžã¥ãŒã«ã¯ãRethinkDBãã©ã€ããŒã®ã¢ã¯ã»ã¹ãšäœ¿çšãæäŸããŸãã ãã®ã¢ãžã¥ãŒã«ã䜿çšããŠãã¯ãšãªãã³ã³ãã€ã«ããŠããŒã¿ããŒã¹ã«éä¿¡ã§ããŸãã äžèšã®äŸã§ã¯ãéåæãããŒå¶åŸ¡ã«
ãããã¹ã䜿çš
ããŠããŸããããã©ã€ããŒã¯éåžžã®ã³ãŒã«ããã¯ã®æäœããµããŒãããŠããŸãã
connectã¡ãœããã¯æ¥ç¶ã確ç«ãã
runé¢æ°ã䜿çšããŸãã ãªã¯ãšã¹ããå®äºããŸãã ã¯ãšãªèªäœã¯
ã«ãŒãœã«ãè¿ã
ãŸã ãããã¯ãããŒã¿ããŒã¹ã®ã³ã³ãã³ãã«å¯ŸããŠéããŠãããŠã£ã³ããŠã®ãããªãã®ã§ãã ã«ãŒãœã«ã¯é
延ãã§ããããµããŒããã倧éã®ããŒã¿ãå埩åŠçããå¹æçãªæ¹æ³ãæäŸããŸãã äžèšã®äŸã§ã¯ãçµæã®ãµã€ãºãæ¯èŒçå°ãããããã«ãŒãœã«ã®å
容ãé
åã«å€æããããšã«ããŸããã
ReQLã¯ãšãªã¯éåžžã®ã³ãŒããšããŠã¢ããªã±ãŒã·ã§ã³ã«æžã蟌ãŸããŸãããããŒã¿ããŒã¹ãµãŒããŒã§å®è¡ãããçµæãè¿ããŸãã çµ±åã¯éåžžã«
ã·ãŒã ã¬ã¹ã§ãããããåå¿è
ã¯ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒããšããŒã¿ããŒã¹ã®æäœã®å¢çãã©ãã«ããã®ãæ··ä¹±ããããšããããããŸãã
ReQLãã§ãŒã³ãšããŸããŸãªèšèªãžã®çµ±åã«ãããã³ãŒãã®åå©çšãšé »ç¹ãªæäœã®åé¢ã倧å¹
ã«åäžããŸãã ã¯ãšãªã¯ã¢ããªã±ãŒã·ã§ã³èšèªã§èšè¿°ãããŠãããããã¯ãšãªã®éšååŒãå€æ°ãšé¢æ°ã«ã«ãã»ã«åããããšã¯éåžžã«ç°¡åã§äŸ¿å©ã«ãªããŸãã ããšãã°ã次ã®JavaScripté¢æ°ã¯ãæå®ãããå€ãæ¢ã«å«ãReQLåŒãè¿ãããšã«ãããããŒãžããŒã·ã§ã³ãäžè¬åããŸãã
function paginate(table, index, limit, last) { return (!last ? table : table .between(last, null, {leftBound: "open", index: index})) .orderBy({index: index}).limit(limit) }
ReQLã®ãã1ã€ã®æ³šç®ãã¹ãå©ç¹ã¯ã䜿ãæ
£ããSQLã§ã®äœæ¥ãæäŸããéåžžã®ã€ã³ãžã§ã¯ã·ã§ã³æ»æã«å¯ŸããŠååã«ä¿èšŒãããŠããããšã§ãã å±éºãªæååé£çµã®å¿
èŠæ§ãå¿é
ããããšãªããã¯ãšãªã«å€éšããŒã¿ãç°¡åã«å«ããããšãã§ããŸãã
ã»ã«ã³ããªã€ã³ããã¯ã¹ãããŒãã«ã®çµåãå¿åé¢æ°ã®äœ¿çšãªã©ãReQLã®ããé«åºŠãªæ©èœã®å€ãã¯ããã®èšäºã®ç¯å²å€ã®ãŸãŸã§ãã ãã ããå¿
èŠã«å¿ããŠãReQL API
ããã¥ã¡ã³ãããŒãžã§ãããã«æ
£ããããšãã§ããŸãã
å€æŽãã£ãŒãã䜿çšãããªã¢ã«ã¿ã€ã Webã¢ããªã±ãŒã·ã§ã³ã®äœæRethinkDBã«ã¯å€æŽéç¥ã·ã¹ãã ãçµã¿èŸŒãŸããŠããããããªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³ã®éçºã倧å¹
ã«ç°¡çŽ åãããŸãã ãã§ãŒã³ã®æåŸã«
å€æŽæ©èœãæ¿å
¥ãããšãçºçãããã¹ãŠã®å€æŽãåæ ããŠããªã¯ãšã¹ãã®çµæãšããŠé£ç¶ã¹ããªãŒã ãèµ·åãããŸãã ãã®ãããªãããŒã¯ãã§ã³ãžãã£ãŒããšåŒã°ããŸãïŒä»¥éãããã§ã³ãžãã£ãŒãããšåŒã³ãŸãïŒã
éåžžã®ããŒã¿ããŒã¹ã¯ãšãªã¯ãåŸæ¥ã®èŠæ±/å¿çWebã¢ãã«ã«é©ããŠããŸãã ãã ãããµãŒããŒãžã®åžžææ¥ç¶ãŸãã¯ã¹ããªãŒãã³ã°ããŒã¿ã䜿çšãããªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããµãŒããŒãåžžæããŒãªã³ã°ããããšã¯å®çšçã§ã¯ãããŸããã Chengfidsã¯ãå®æçãªããŒãªã³ã°ã®ä»£æ¿æ段ãã€ãŸããæŽæ°ãããçµæãåžžã«ã¢ããªã±ãŒã·ã§ã³ã«éä¿¡ããæ©èœãæäŸããŸãã
å€æŽãã°ãããŒãã«ã«çŽæ¥æ·»ä»ããŠããã®å
容ã«å¯Ÿããå€æŽã远跡ã§ããŸãã Chengfidsãããè€éãªã¯ãšãªã§äœ¿çšããŠãå¿
èŠãªããŒã¿ã®ã¿ã®æŽæ°ãåä¿¡ããããšãã§ããŸãã ããšãã°ã
orderByé¢æ°ãš
limité¢æ°ã䜿çšããã¯ãšãªã«å€æŽãã°ãæ·»ä»ããŠããã«ããã¬ãŒã€ãŒã²ãŒã ã®åçãªãã€ã¹ã³ã¢ããŒãã«ãäœæã§ããŸãã
r.table("players").orderBy({index: r.desc("score")}).limit(5).changes()
ãã¬ã€ã€ãŒã¯ãã€ã³ãã§ãœãŒããããæåã®5ã€ã衚瀺ãããŸãã ãã®äžäœ5ã€ã«å€æŽããããšããã«ãChengfidã¯æŽæ°ãããããŒã¿ãéä¿¡ããŸãã æåã«ããã5ã«ããªãã£ããã¬ãŒã€ãŒãååãªãã€ã³ããç²åŸããä»ã®ãã¬ãŒã€ãŒãããã5ããè¿œãåºããå Žåã§ããChengfidã¯ãããå ±åãããªã¹ããæŽæ°ããããã«å¿
èŠãªãã¹ãŠã®ããŒã¿ã転éããŸãã
Chengfidã¯ãã¬ã³ãŒãã®æ°ããå€ã ãã§ãªããåã®å€ãéä¿¡ãããããçµæãæ¯èŒã§ããŸãã ãšã³ããªã®ãããããåé€ããããšããã®æ°ããå€ã¯
nullã«ãªã
ãŸã ã 衚瀺ãããã°ããã®æ°ããã¬ã³ãŒããšåæ§ã«ãå€ãå€ã¯
nullã«ãªã
ãŸã ã ãšããã§ãåä¿¡ããŒã¿ã®æäœãå¿
èŠãªå Žåã¯ã
å€æŽåŸã«ãã§ãŒã³ã«ä»ã®æäœãè¿œå ã§ããŸãã
changesã³ãã³ãã§ã¯ãšãªãå®è¡ãããšãã«ãŒãœã«ãè¿ãããŸãããã«ãŒãœã«ã¯æ°žä¹
ã«éãããŸãŸã«ãªããŸãïŒãŠã£ã³ããŠãèŠããŠããŸããïŒïŒã ã«ãŒãœã«ã¯ãæ°ããå€æŽãå©çšå¯èœã«ãªããšããã«è¡šç€ºãããŸãã 以äžã«ãNode.jsã®ChengfidããæŽæ°ãååŸããæ¹æ³ã瀺ãäŸã瀺ããŸãã
r.connect().then(function(conn) { return r.table("data").changes().run(conn); }) .then(function(cursor) { cursor.each(function(err, item) { console.log(item); }); });
Chengfidã«ãŒãœã«ã¯ããã¯ã°ã©ãŠã³ãã§å®è¡ãããŠãããããã¢ããªã±ãŒã·ã§ã³ã¯ãããã¯ãããŸããã Node.jsãªã©ã®åºæ¬çã«éåæãªç°å¢ã§ã¯ãæ£ããæäœã®ããã«è¿œå ã®æªçœ®ãè¬ããå¿
èŠã¯ãããŸããã ä»ã®èšèªã§äœæ¥ããå Žåãããããéåæã³ãŒãã®ãã¬ãŒã ã¯ãŒã¯ããŸãã¯ã¹ã¬ããã®æåå®è£
ãå¿
èŠã«ãªããŸãã Pythonããã³Rubyçšã®å
¬åŒRethinkDBãã©ã€ããŒã¯ãTornadoãEventMachineãªã©ã®äžè¬çã§åºã䜿çšãããŠãããã¬ãŒã ã¯ãŒã¯ããµããŒãããŠããŸãã
çŸåšã
changesã³ãã³ãã¯
getãbetweenãfilterãmapãorderByãmin ã
maxã®åé¢æ°ã§æ©èœã
ãŸã ã ä»ã®çš®é¡ã®ã¯ãšãªã®ãµããŒãã¯å°æ¥çã«èšç»ãããŠããŸãã
RethinkDBã䜿çšããŠãªã¢ã«ã¿ã€ã Webã¢ããªã±ãŒã·ã§ã³ãäœæããå ŽåãWebSocketsã䜿çšããŠãããã³ããšã³ãã«æŽæ°ããããŒããã£ã¹ãã§ããŸãã ãŸãã
Socket.ioã®ãããªã©ã€ãã©ãªã¯äœ¿ããããããã®ããã»ã¹ãç°¡çŽ åããŸãã
Chengfidsã¯ãæ°Žå¹³æ¹åã®æ¡åŒµçšã«èšèšãããã¢ããªã±ãŒã·ã§ã³ã«ç¹ã«åœ¹ç«ã¡ãŸãã ã¢ããªã±ãŒã·ã§ã³ã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹éã§è² è·ãåæ£ããå Žåãéåžžãã¡ãã»ãŒãžãã¥ãŒãã¡ã¢ãªå
dbãªã©ã®è¿œå ã¡ã«ããºã ã䜿çšããŠããã¹ãŠã®ãµãŒããŒã«æŽæ°ãåæ£ããŸãã RethinkDBã¯ãã®æ©èœãã¢ããªã±ãŒã·ã§ã³ã®ã¬ãã«ãŸã§åŒãäžããã¢ãŒããã¯ãã£ã
å¹³åŠåããè¿œå ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®å¿
èŠæ§ãæé€ããŸãã åã¢ããªã±ãŒã·ã§ã³ã€ã³ã¹ã¿ã³ã¹ã¯ããŒã¿ããŒã¹ã«çŽæ¥æ¥ç¶ããŠãæ°ããå€æŽãåä¿¡ããŸãã æŽæ°ãå©çšå¯èœã«ãªããšãåãµãŒããŒã¯å¯Ÿå¿ããWebSocketã¯ã©ã€ã¢ã³ãã«æŽæ°ããããŒããã£ã¹ãããŸãã
ãªã¢ã«ã¿ã€ã ã¢ããªã±ãŒã·ã§ã³ã«å ããŠãChengfidsã¯ã¢ãã€ã«ããã·ã¥éç¥ããã³ãã®ä»ã®åæ§ã®æ©èœã®å®è£
ã倧å¹
ã«ç°¡çŽ åã§ããŸãã Chengfidsã¯ãããŒã¿ããŒã¹ãšã®å¯Ÿè©±ã®ã€ãã³ãæåã¢ãã«ãè¡šãããã®ã¢ãã«ã¯å€ãã®å Žåã«åœ¹ç«ã¡ãŸãã
RethinkDBã¹ã±ãŒãªã³ã°ãšã¯ã©ã¹ã¿ãŒç®¡çRethinkDBã¯ãã¯ã©ã¹ã¿ãªã³ã°ãšåçŽãªæ¡åŒµãç®çãšããåæ£ããŒã¿ããŒã¹ã§ãã æ°ãããµãŒããŒãã¯ã©ã¹ã¿ãŒã«è¿œå ããã«ã¯ãã³ãã³ãã©ã€ã³ãã
--joinãªãã·ã§ã³ãæå®ããŠèµ·åããæ¢åã®ãµãŒããŒã®ã¢ãã¬ã¹ãæå®ããã ãã§ãã è€æ°ã®ãµãŒããŒãèªç±ã«äœ¿çšã§ããã¯ã©ã¹ã¿ãŒãããå Žåã¯ãåããŒãã«ã«åå¥ã«ã·ã£ãŒãã£ã³ã°ãšã³ããŒãæ§æã§ããŸãã ããŒã¿ããŒã¹ã®1ã€ã®ã€ã³ã¹ã¿ã³ã¹ã§æ©èœããèšå®ãšæ©èœã¯ãã¯ã©ã¹ã¿ãŒã§ãæ£ç¢ºã«æ©èœããŸãã
RethinkDBãµãŒããŒã«ã¯ããã©ãŠã¶ãŒã§çŽæ¥éãããšãã§ããWeb管çã€ã³ã¿ãŒãã§ã€ã¹ãå«ãŸããŠããŸãã ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšãããšãã¯ã©ã¹ã¿ãŒã®åäœãç°¡åã«ç®¡çããã³ç£èŠã§ããŸãã æ°åã®ã¯ãªãã¯ã§ã·ã£ãŒãã£ã³ã°ãšã³ããŒãèšå®ããããšãã§ããŸãã
RethinkDBã§ã¯ãReQLã¢ãããŒããã¯ã©ã¹ã¿ãŒæ§æã«é©çšã§ããŸããããã¯ã埮調æŽãšèªååã«æé©ã§ãã ReQLã«ã¯ãããŒãã«ã«ãã€ã³ãããŠã·ã£ãŒãã£ã³ã°èšå®ãèšå®ã§ããåçŽãª
åæ§ææ©èœãå«ãŸããŠããŸãã ã¯ã©ã¹ã¿ãŒã¯ãRââethinkDBã®äžé£ã®ç¹å¥ãªããŒãã«ãéããŠããã®ç¶æ
ãšèšå®ã«é¢ããã»ãšãã©ã®å
éšæ
å ±ãæäŸããŸãã ã·ã¹ãã ããŒãã«ãã¯ãšãªããŠãèšå®ãå€æŽããããç£èŠæ
å ±ãåä¿¡ãããã§ããŸãã Webã€ã³ã¿ãŒãã§ãŒã¹ãä»ããŠæäŸãããã»ãšãã©ãã¹ãŠã®æ©èœã¯ãReQL APIã«åºã¥ããŠããŸãã
changelidsãReQLã¢ãã¿ãªã³ã°APIãšçµã¿åãããŠäœ¿çšââããŠããµãŒããŒããŒã¿ã®ã¹ããªãŒã ãåä¿¡ããããšãã§ããŸãã ããšãã°ãçµ±èšæ
å ±ãå«ãã·ã¹ãã ããŒãã«ã«å€æŽãã°ãæ·»ä»ãããªã¢ã«ã¿ã€ã ã§ããŒã¿ã転éããŠèªã¿åã/æžã蟌ã¿è² è·ã®ã°ã©ããäœæããç¬èªã®ç£èŠããŒã«ãäœæã§ããŸãã
æè¿ãªãªãŒã¹ãããRethinkDB 2.1ã«ã¯ãèªåãã§ãŒã«ãªãŒããŒã®ãµããŒããçµã¿èŸŒãŸããŠããŸãã æ°ããæ©èœã«ãããã¯ã©ã¹ã¿ãŒã®å¯çšæ§ãåäžããããŒã¿ããŒã¹ãµãŒããŒãã¯ã©ãã·ã¥ãããªã¹ã¯ã軜æžãããŸãã ãã©ã€ããªãµãŒããŒã«é害ãããå Žåãæ®ãã®ã»ã«ã³ããªã¯ãŒãã³ã°ãµãŒããŒã¯æ°ãããã©ã€ããªããéžæãããé害ã®ãããµãŒããŒãèµ·åããããã¯ã©ã¹ã¿ãŒããåé€ããããŸã§ãã®åœ¹å²ãå®è¡ããŸãã
ã»ãšãã©ã®ãµãŒããŒããªã³ã©ã€ã³ã«ãªããŸã§ãéã®æ
éããããã¯ãŒã¯ã®åæ¢ã¯ããŒã¿ã®å¯çšæ§ã«åœ±é¿ãäžããŸããã
RethinkDBãã€ã³ã¹ããŒã«ããRethinkDBã¯Linuxããã³MacOS Xã§åäœããŸããWindowsããŒãžã§ã³ã¯çŸåšéçºäžã§ããããŸã ããŠã³ããŒãã§ããŸããã RethinkDBã®
ããã¥ã¡ã³ãã«ã€ã³ã¹ããŒã«ããã»ã¹ã®è©³çŽ°ãèšèŒãããŠããŸãã LinuxãŠãŒã¶ãŒåãã®APTããã³YumãªããžããªãšãOS Xçšã®ã€ã³ã¹ããŒã©ãŒ
ãçšæ
ããŸãã ãDocker
ã䜿çšã㊠RethinkDB
ãã€ã³ã¹ããŒã«ãããã
GithubãããœãŒã¹ã³ãŒããã³ã³ãã€ã«ããããšãã§ããŸãã ãããç解ããããã«ã
10åéã®èª¬æã圹ç«ã¡ãŸãã
ãªãªãžãã«ïŒ ãªã³ã¯