æ©æ¢°åŠç¿ã¯ãããŒã¿ã®é ãããã¿ãŒã³ãæ€çŽ¢ããŸãã ITã³ãã¥ããã£ã§ã®ãã®ãããã¯ãžã®é¢å¿ã®é«ãŸãã¯ããããçã¿åºããäŸå€çãªçµæã«é¢é£ããŠããŸãã é³å£°ããã³ã¹ãã£ã³ãããããã¥ã¡ã³ããæ€çŽ¢ãšã³ãžã³ã®èªè-ãããã¯ãã¹ãŠæ©æ¢°åŠç¿ã䜿çšããŠäœæãããŸãã ãã®èšäºã§ã¯ãç§ãã¡ã®äŒç€Ÿã®çŸåšã®ãããžã§ã¯ããã€ãŸãDBMSã®çç£æ§ãåäžãããããã«æ©æ¢°åŠç¿æ³ãé©çšããæ¹æ³ã«ã€ããŠã話ããŸãã
ãã®èšäºã®æåã®éšåã§ã¯ãæ¢åã®PostgreSQLã¹ã±ãžã¥ãŒã©ã¡ã«ããºã ãåæãã2çªç®ã®éšåã§ã¯ãæ©æ¢°åŠç¿ã䜿çšããŠãããæ¹åããå¯èœæ§ã«ã€ããŠèª¬æããŸãã
SQLã¯ãšãªå®è¡ãã©ã³ãšã¯äœã§ããïŒ
SQLã¯å®£èšåèšèªã§ããããšãæãåºããŠãã ããã ããã¯ããŠãŒã¶ãŒãããŒã¿ã«å¯ŸããŠå®è¡ããæäœã®ã¿ã瀺ãããšãæå³ããŸãã DBMSã¯ããããã®æäœãå®è¡ããæ¹æ³ãéžæãã責任ããããŸãã ããšãã°ããªã¯ãšã¹ã
SELECT name FROM users WHERE age > 25;
ãããè¡ãã«ã¯2ã€ã®æ¹æ³ããããŸããusersããŒãã«ãããã¹ãŠã®ãšã³ããªãèªã¿åãã25æ³ä»¥äžã®æ¡ä»¶ãæºããããŠãããã©ããã確èªããããageãã£ãŒã«ãã®ã€ã³ããã¯ã¹ã䜿çšããŸãã 2çªç®ã®ã±ãŒã¹ã§ã¯ãäœåãªã¬ã³ãŒãã調ã¹ãŸããããã€ã³ããã¯ã¹ã䜿çšããæäœã®ããã«1ã€ã®ã¬ã³ãŒãã®åŠçã«ããå€ãã®æéãè²»ãããŸãã
ããè€éãªã¯ãšãªãæ€èšãã
SELECT messages.text FROM users, messages WHERE users.id = messages.sender_id;
ãã®JOINã¯ã次ã®3ã€ã®æ¹æ³ã§å®äºã§ããŸãã
- ãã¹ãã«ãŒãïŒNestedLoopJoinïŒã¯ã2ã€ã®ããŒãã«ãããã¹ãŠã®å¯èœãªã¬ã³ãŒããã¢ãã¹ãã£ã³ããæ¡ä»¶ãæºããããŠããåæ¡ä»¶ããã§ãã¯ããŸãã
- MergeïŒMergeJoinïŒã¯äž¡æ¹ã®ããŒãã«ãidãã£ãŒã«ããšsender_idãã£ãŒã«ãã§ãããããœãŒããã2ãã€ã³ã¿ãŒã¡ãœããã䜿çšããŠæ¡ä»¶ãæºãããã¹ãŠã®ã¬ã³ãŒãã®ãã¢ãèŠã€ããŸãã ãã®ã¡ãœããã¯ãããŒãžãœãŒãã¡ãœããïŒMergeSortïŒã«äŒŒãŠããŸãã
- ããã·ã¥ïŒHashJoinïŒã¯ãæå°ã®ããŒãã«ã®ãã£ãŒã«ãã«ããã·ã¥ããŒãã«ãäœæããŸãïŒãã®å Žåãããã¯users.idãã£ãŒã«ãã§ãïŒã ããã·ã¥ããŒãã«ã«ãããåã¡ãã»ãŒãžãšã³ããªã¯ãusers.id = messages.sender_idã®ãšã³ããªããã°ããèŠã€ããããšãã§ããŸãã
ãªã¯ãšã¹ãã«è€æ°ã®Joinæäœãå¿
èŠãªå Žåããªã¯ãšã¹ãå
ãªã©ãå¥ã®é åºã§å®è¡ããããšãã§ããŸã
SELECT u1.name, u2.name, m.text FROM users as u1, messages as m, users as u2 WHERE u1.id = m.sender_id AND u2.id = m.reciever_id;
ã¯ãšãªå®è¡ããªãŒã¯ãã¯ãšãªå®è¡
ãã©ã³ãšåŒã°ããŸãã
explain
ã³ãã³ãã䜿çšããŠãDBMSãç¹å®ã®ã¯ãšãªã«å¯ŸããŠéžæãããã©ã³ã確èªã§ããŸãã
EXPLAIN SELECT u1.name, u2.name, m.text FROM users as u1, messages as m, users as u2 WHERE u1.id = m.sender_id AND u2.id = m.reciever_id;
èŠæ±ãå®è¡ããéžæãããèšç»ã衚瀺ããã«ã¯ã
explain analyse
ã³ãã³ãã䜿çšã§ããŸãã
EXPLAIN ANALYSE SELECT u1.name, u2.name, m.text FROM users as u1, messages as m, users as u2 WHERE u1.id = m.sender_id AND u2.id = m.reciever_id;
åããªã¯ãšã¹ãã®ç°ãªããã©ã³ã®å®è¡æéã¯ãæ¡éãã«ç°ãªãå ŽåããããŸãã ãããã£ãŠãã¯ãšãªå®è¡ãã©ã³ã®æ£ããéžæã¯ãDBMSã®ããã©ãŒãã³ã¹ã«é倧ãªåœ±é¿ãåãŒããŸãã PostgreSQLãä»ã©ã®ããã«èšç»ãéžæãããã詳ããèŠãŠã¿ãŸãããã
DBMSã¯æé©ãªã¯ãšãªå®è¡ãã©ã³ãã©ã®ããã«æ¢ããŸããïŒ
æé©ãªãã©ã³ãèŠã€ããããã»ã¹ã2ã€ã®éšåã«åããããšãã§ããŸãã
ãŸããèšç»ã®
䟡å€ãã€ãŸãèšç»ãå®äºããããã«å¿
èŠãªãªãœãŒã¹ã®éãè©äŸ¡ã§ããå¿
èŠããããŸãã ãµãŒããŒã§ä»ã®ã¿ã¹ã¯ãã¯ãšãªãå®è¡ãããªãå Žåãã¯ãšãªã®æšå®å®è¡æéã¯ãããã«è²»ãããããªãœãŒã¹ã®éã«æ£æ¯äŸããŸãã ãããã£ãŠããã©ã³ã®ã³ã¹ãã¯ãä»»æã®åäœã§ã®å®è¡æéã§ãããšæ³å®ã§ããŸãã
第äºã«ãæå°ã³ã¹ãã®èŠç©ããã§èšç»ãéžæããå¿
èŠããããŸãã ãªã¯ãšã¹ãã®è€éããå¢ãã«ã€ããŠããã©ã³ã®æ°ãææ°é¢æ°çã«å¢ããŠããããšã瀺ãã®ã¯ç°¡åã§ãããããã£ãŠããã¹ãŠã®ãã©ã³ã調ã¹ãŠãããããã®ã³ã¹ããèŠç©ãããæãå®ããã©ã³ãéžæããããšã¯ã§ããŸããã æé©ãªãã©ã³ãèŠã€ããããã«ãããè€éãªé¢æ£æé©åã¢ã«ãŽãªãºã ã䜿çšãããŸããåçŽãªã¯ãšãªã«ã¯åçãµãã»ããããã°ã©ãã³ã°ãè€éãªã¯ãšãªã«ã¯éºäŒçã¢ã«ãŽãªãºã ã§ãã
ãã®ãããžã§ã¯ãã§ã¯ãæåã®ã¿ã¹ã¯ã«çŠç¹ãåœãŠãŸããããã®èšç»ã«åŸã£ãŠããã®äŸ¡å€ãäºæž¬ããå¿
èŠããããŸãã å®è¡èšç»ãèµ·åããã«ãããè¡ãã«ã¯ã©ãããã°ããã§ããïŒ
å®éã«PostgreSQLã§ã¯ãèšç»ã«å¯ŸããŠ2ã€ã®ã³ã¹ããäºæž¬ãããŸãïŒéå§ã³ã¹ããšç·ã³ã¹ãã§ãã èµ·åã³ã¹ãã¯ããã©ã³ãæåã®ã¬ã³ãŒããçºè¡ãããŸã§ã«è²»ãããªãœãŒã¹ã®éãšãåèšã³ã¹ã-ãã©ã³ãå®äºããããã«å¿
èŠãªåèšãªãœãŒã¹ã®éã瀺ããŸãã ãã ãããã®èšäºã§ã¯ããã¯éèŠã§ã¯ãããŸããã å°æ¥çã«ã¯ãå®è£
ã³ã¹ãã¯ç·ã³ã¹ããæå³ããŸãã
ãã®ã¿ã¹ã¯ã¯ã2ã€ã®ãµãã¿ã¹ã¯ã«ãåãããŠããŸãã æåã«ãåèšç»ããŒãã«ã€ããŠããã®äžã§éžæãããã¿ãã«ã®æ°ãäºæž¬ãããŸãã 次ã«ããã®æ
å ±ã«åºã¥ããŠãåé ç¹ã®ã³ã¹ãããããã£ãŠèšç»å
šäœãæšå®ãããŸãã
PostgreSQLã®2ã€ã®ãµãã¿ã¹ã¯ã®ã©ã¡ããæªåããŠãããã調ã¹ãããã«ãå°ã調æ»ããŸããã
以äžã®å³ã®åç¹ã¯ãèšç»ã®1ã€ã®é ç¹ã«å¯Ÿå¿ããŠããŸãã åé ç¹ã«ã€ããŠããã®é ç¹ã§éžæãããã¿ãã«ã®æ°ãšãã®å®è¡ã®ã³ã¹ããäºæž¬ããããã®åŸãéžæãããã¿ãã«ã®å®éã®æ°ãšå®è¡æéã枬å®ãããŸããã å³ã®å³ã«ã¯ãã¿ãã«æ°ãæ£ããäºæž¬ãããŠããé ç¹ã®ã¿ã衚瀺ãããŠãããããã³ã¹ãæšå®ã®å質ãå€æããããã«äœ¿çšã§ããŸãã
| |
---|
äºæž¬ãããã¿ãã«ã®çã®æ°ã®äŸåæ§ | èšç»ã®æéã®ã³ã¹ããžã®äŸå ã¿ãã«ã®æ°ãæ£ããäºæž¬ãããŠããå Žå |
æåã®å³ã¯ãæåã®ãµãã¿ã¹ã¯ã解決ããçµæãçã®ãµãã¿ã¹ã¯ãšæ°æ¡ç°ãªãããšã瀺ããŠããŸãã 2çªç®ã®å³ã¯ãå®è¡æéãšåŒ·ãçžé¢é¢ä¿ãèŠããããããæåã®ãµãã¿ã¹ã¯ã®æ£ãã解決çã§ãPostgreSQLã¢ãã«ã1ã€ãŸãã¯å¥ã®èšç»ãå®è¡ããã³ã¹ããé©åã«æšå®ããããšã瀺ããŠããŸãã ãã®çµæãDBMSã®ããã©ãŒãã³ã¹ã¯
äž¡æ¹ã®ãµãã¿ã¹ã¯ã®äžæ£ç¢ºãªè§£æ±ºçã«èŠããããšãããããŸããããåé ç¹ã«èª€ã£ãŠèšå®ãããã¿ãã«ã®æ°ã«èŠããããšãããããŸããã
PostgreSQLã§äœ¿çšãããæåã®ãµãã¿ã¹ã¯ã®ãœãªã¥ãŒã·ã§ã³ãæ€èšããŠãã ããã
DBMSã¯é ç¹ã®ã¿ãã«æ°ãã©ã®ããã«æšå®ããŸããïŒ
æåã«ãç°¡åãªã¯ãšãªã§éžæãããã¿ãã«ã®æ°ãäºæž¬ããŠã¿ãŸãããã
SELECT name FROM users WHERE age < 25;
å°ãªããšããããè¡ãæ©äŒãåŸãããã«ãããŒã¿ã«é¢ããããã€ãã®æ
å ±ããã®çµ±èšãå¿
èŠã§ãã PostgreSQLã¯ããã®ããŒã¿æ
å ±ãšããŠãã¹ãã°ã©ã ã䜿çšããŸãã
ãã¹ãã°ã©ã ã䜿çšãããšã25æ³æªæºã®ãŠãŒã¶ãŒã®å²åãç°¡åã«åŸ©å
ã§ããŸãã èšç»ã®åé ç¹ã«ã€ããŠãåŠçããããã¹ãŠã®ã¿ãã«ã«å¯Ÿããéžæããããã¹ãŠã®ã¿ãã«ã®å²åã¯ã
éžææ§ãšåŒã°ããŸãã äžèšã®äŸã§ã¯ãSeqScanéžææ§ã¯çŽ0.3ã§ãã é ç¹ã«ãã£ãŠéžæãããã¿ãã«ã®æ°ãååŸããã«ã¯ãé ç¹ã®éžææ§ã«åŠçãããã¿ãã«ã®æ°ãæããã ãã§ååã§ãïŒSeqScanã®å Žåãããã¯ããŒãã«å
ã®ã¬ã³ãŒãã®æ°ã«ãªããŸãïŒã
ããè€éãªã¯ãšãªãæ€èšãã
SELECT name FROM users WHERE age < 25 AND city = 'Moscow';
ãã®å Žåã幎霢ãšéœåžããšã®ãã¹ãã°ã©ã ã䜿çšãããšã
éçãµã³ãã«ãã€ãŸã25æ³æªæºã®ãŠãŒã¶ãŒã®å²åãšãŠãŒã¶ãŒéã®çœé²æ¯ã®å²åã®ã¿ãååŸã§ããŸãã PostgreSQLã¢ãã«ã§ã¯ããã¹ãŠã®æ¡ä»¶ïŒ
5 < a AND a < 7
圢åŒã®æ¡ä»¶ã®ãã¢ãé€ããæ¡ä»¶
5 < a < 7
èªåçã«å€ãããŸãïŒã¯
ç¬ç«ãšèŠãªãããŸãã æ°åŠè
ã¯ãäž¡æ¹ã®æ¡ä»¶ãåæã«æºãããã確çã確çã®ç©ã«çããå Žåã2ã€ã®æ¡ä»¶Aããã³Bãç¬ç«ããŠåŒã³åºããŸããPïŒAããã³BïŒ= PïŒAïŒPïŒBïŒã ãã ããé©çšãããæå³ã§ã¯ã2ã€ã®éã®ç¬ç«æ§ã¯ãå¥ã®éã®ååžã1ã€ã®éã®å€ã«äŸåããªããšããäºå®ãšããŠç解ã§ããŸãã
åé¡ã¯äœã§ããïŒ
å Žåã«ãã£ãŠã¯ãç¬ç«æ§ã®ä»®å®ãæºããããªãããšããããŸãã ãã®ãããªå ŽåãPostgreSQLã¢ãã«ã¯ããŸãããŸãæ©èœããŸããã ãã®åé¡ã«å¯ŸåŠããã«ã¯2ã€ã®æ¹æ³ããããŸãã
æåã®æ¹æ³ã¯ãå€æ¬¡å
ãã¹ãã°ã©ã ãäœæããããšã§ãã ãã®æ¹æ³ã®åé¡ã¯ã次å
ã®å¢å ã«äŒŽããå€æ¬¡å
ãã¹ãã°ã©ã ãåã粟床ãç¶æããããã«ææ°é¢æ°çã«å¢å ãããªãœãŒã¹éãå¿
èŠãšããããšã§ãã ãããã£ãŠãå°ããªæ¬¡å
ã®ãã¹ãã°ã©ã ã«éå®ããå¿
èŠããããŸãïŒ2ã8åã®æž¬å®ïŒã ããããããã®ã¡ãœããã®2çªç®ã®åé¡ãç¶ããŸããå€æ¬¡å
ãã¹ãã°ã©ã ãæ§ç¯ããããšãçã«ããªã£ãŠããåã®ãã¢ïŒãŸãã¯ããªãã«ããŸãã¯4 ...ïŒã«ã€ããŠãã©ãããããããç解ããå¿
èŠããããŸãã
ãã®åé¡ã解決ããã«ã¯ããªãœãŒã¹ãéäžçã«äœ¿çšããã¯ãšãªã®èšç»ã調æ»ããåéã®çžé¢ãå€æããã©ã®ãã¹ãã°ã©ã ãå®äºããå¿
èŠãããããæåã§ç€ºãåªãã管çè
ããŸãã¯çµ±èšãã¹ãã䜿çšããŠäºãã«äŸåããŠããåãèŠã€ããããšãããœãããŠã§ã¢ããŒã«ãå¿
èŠã§ãã ãã ãããã¹ãŠã®äŸååã®ãã¹ãã°ã©ã ãããããããããšã¯æå³ããªãããããœãããŠã§ã¢ã¯ã¯ãšãªå
ã®åã®åæçºçãåæããå¿
èŠããããŸãã çŸåšãPostgreSQLã§å€æ¬¡å
ãã¹ãã°ã©ã ã䜿çšã§ãããããããããŸããã管çè
ã¯ãããã®å€æ¬¡å
ãã¹ãã°ã©ã ãäœæããåãæåã§èšå®ããå¿
èŠããããŸãã
æ©æ¢°åŠç¿ã䜿çšããŠéžææ§ãè©äŸ¡ãã
ãã ãããã®èšäºã§ã¯å¥ã®ã¢ãããŒãã«çŠç¹ãåœãŠãŠããŸãã å¥ã®ã¢ãããŒãã¯ãããã€ãã®æ¡ä»¶ã®å
±åéžææ§ãèŠã€ããããã®æ©æ¢°åŠç¿ã®äœ¿çšã§ãã åè¿°ã®ããã«ãæ©æ¢°åŠç¿ã¯ããŒã¿ã®ãã¿ãŒã³ãæ¢ããŸãã ããŒã¿ã¯ãªããžã§ã¯ãã®ã³ã¬ã¯ã·ã§ã³ã§ãã ãã®äŸã§ã¯ããªããžã§ã¯ãã¯èšç»ã®1ã€ã®é ç¹ã«ããæ¡ä»¶ã®ã»ããã§ãã ãããã®æ¡ä»¶ãšãã®éçéžææ§ã®äžã§ãå
±åéžææ§ãäºæž¬ããå¿
èŠããããŸãã
èšç»ã®æäžéšã§èŠ³å¯ãããå
åã¯ããã®ãã¹ãŠã®æ¡ä»¶ã®éçéžææ§ã§ãã å®æ°ã®ã¿ãç°ãªããã¹ãŠã®æ¡ä»¶ã¯äºãã«åçã§ãããšä»®å®ããŸãã ãã®ä»®å®ã¯ã空éã®æ¬¡å
ãåæžããããã«é©çšãããå
žåçãªæ©æ¢°åŠç¿ææ³ïŒããã·ã³ã°ããªãã¯ïŒãšèããããšãã§ããŸãã ãã ãããã®èåŸã«ã¯ããã«åŒ·åãªåæ©ããããŸããæ¡ä»¶å®æ°ãäºæž¬ããããã«å¿
èŠãªãã¹ãŠã®æ
å ±ã¯ããã®éçéžææ§ã«å«ãŸããŠãããšæ³å®ããŠããŸãã ããã¯ãa <constïŒãšãã圢åŒã®åçŽãªæ¡ä»¶ã«å¯ŸããŠå³å¯ã«ç€ºãããšãã§ããŸããããã§ã¯ãæ¡ä»¶ã®éžææ§ãããå®æ°ã®å€ã埩å
ã§ããŸããã€ãŸããæ
å ±ã®æ倱ã¯çºçããŸããã
çµæã®æ©æ¢°åŠç¿ã¿ã¹ã¯ã¯ãå³ã«ç€ºãããã«ãªããŸãã
ä»ã®ãã¹ãŠã®åã®æ¢ç¥ã®å€ã«ãã£ãŠã巊端ã®åãäºæž¬ããå¿
èŠããããŸãã ç¹å®ã®å®æ°ãäºæž¬ããå¿
èŠããããã®ãããªã¿ã¹ã¯ã¯ãæ©æ¢°åŠç¿ã®ååž°åé¡ãšåŒã°ããŸãã ããã解決ããã¡ãœããã¯ããããããªã°ã¬ããµãŒãšåŒã°ããŸãã
ãã¹ãŠã®åã®å¯Ÿæ°ã«ç§»ããŸãããã ç·åœ¢ååž°ã䜿çšããå Žåãç¹å¥ãªã±ãŒã¹ãšããŠçŸåšã®PostgreSQLã¢ãã«ãååŸããããšã«æ³šæããŠãã ããã
ç·åœ¢ååž°ïŒ
ãã¹ãŠã®æ§æå¯èœãªãã©ã¡ãŒã¿ãŒã1ã«çããå Žåãæšæºã®PostgreSQLéžæã¢ãã«ãååŸããŸãã
æšæºçãªãªããžååž°æ³ã§ã¯ã次ã®æ©èœãæå°åããããšã§ãã©ã¡ãŒã¿ãŒãæ€çŽ¢ããããšããå§ãããŸãã
ããŸããŸãªã¢ãããŒãããã¹ãããããã«ãTPC-Hãã³ãããŒã¯ã䜿çšããŸããã
次ã®ã¡ãœãããåçŽãªãªã°ã¬ããµãŒãšããŠäœ¿çšãããŸããã
- ãªããžç·åœ¢ååž°+確ççåŸé
éäžã ãã®æ¹æ³ã¯ãåçåŠç¿ïŒãªã³ã©ã€ã³åŠç¿ïŒã䜿çšã§ãããšããç¹ã§åªããŠãããããç£èŠå¯èœãªãªããžã§ã¯ããä¿åããå¿
èŠã¯ãããŸããã
- å€ãã®çŽä»ãç·åœ¢ååž°+確ççåŸé
éäžã ããã§ã¯ãæ¡ä»¶ã®ã»ããããšã«åå¥ã®ãªããžç·åœ¢ãªã°ã¬ããµãŒãäœæããããšæ³å®ããŠããŸãã ãã®ã¡ãœããã¯ãåã®ã¡ãœãããšåæ§ã«ãåçåŠç¿ã䜿çšã§ããç¹ã§åªããŠãããããç£èŠå¯èœãªãªããžã§ã¯ããä¿åããå¿
èŠã¯ãããŸãããã倧å¹
ã«æ§æå¯èœãªãã©ã¡ãŒã¿ãŒãå«ãŸããŠãããããåã®ã¡ãœãããããå€å°æ£ç¢ºã«æ©èœããŸãã
- å€ãã®ãªããžç·åœ¢ååž°+ã¬ãŠã¹æ³ã«ãã解æ解ã ãã®æ¹æ³ã§ã¯ããã¹ãŠã®ãªãã¶ãŒããã«ãªããžã§ã¯ããä¿åããå¿
èŠããããŸãããåæã«ãåã®2ã€ã®ãªããžã§ã¯ããšã¯ç°ãªããã¯ããã«é«éã«ããŒã¿çšã«æ§æãããŸãã
ãã ããããã¯ãã€ãã¹ã§ããããŸããåäœã¯ããªãäžå®å®ã§ãã
åæãœãªã¥ãŒã·ã§ã³ã§çããäžå®å®æ§ã®æ§è³ªã説æããŸãããã ãªã°ã¬ããµãŒã®å¿çã¯ãæé©ãªãã©ã³ãæ¢ããŠãããªããã£ãã€ã¶ãŒã®å
¥åå€ã§ãã 芳å¯ãããªããžã§ã¯ãïŒå®è¡å¯èœãã©ã³ïŒã¯ããªããã£ãã€ã¶ãŒã®åºåå€ã§ãã ãããã£ãŠã芳å¯ãããªããžã§ã¯ãã¯ããªã°ã¬ããµãŒã®å¿çã«äŸåããŸãã ãã®ãããªãã£ãŒãããã¯ã·ã¹ãã ã¯ããªã°ã¬ããµãŒãç°å¢ã«åœ±é¿ãäžããªãã·ã¹ãã ãããç 究ãã¯ããã«å°é£ã§ãã ãããã®çšèªã§ã¯ãã¬ãŠã¹æ³ã«ããåæãœãªã¥ãŒã·ã§ã³ã¯äžå®å®ã§ã-ããã«åŠç¿ããŸããããããªã¹ã¯ã®é«ããœãªã¥ãŒã·ã§ã³ãæäŸãããããã·ã¹ãã å
šäœãæªåããŸãã
ç·åœ¢ã¢ãã«ã®è©³çŽ°ãªèª¿æ»ã®çµæãããŒã¿ãé©åã«èšè¿°ãããŠããªãããšãããããŸããã ãããã£ãŠããã¹ãããæ¹æ³ã®æè¯ã®çµæãkNNã«ãã£ãŠç€ºãããŸããã
- kNNã ãã®æ¹æ³ã®å€§ããªãã€ãã¹ç¹ã¯ããã¹ãŠã®ãªããžã§ã¯ããã¡ã¢ãªã«ä¿åããå¿
èŠãããããšã§ãããã®åŸããªããžã§ã¯ãããã°ããæ€çŽ¢ããŠæŽçããŸãã ãã®ç¶æ³ã¯ããªããžã§ã¯ãéžæã¢ã«ãŽãªãºã ã䜿çšããŠå€§å¹
ã«æ¹åã§ããŸãã ãªããžã§ã¯ããéžæããããã®åçŽãªã¢ã«ãŽãªãºã ã®ã¢ã€ãã¢ïŒãªããžã§ã¯ãã®äºæž¬ãååã§ããã°ããã®ãªããžã§ã¯ããèŠããå¿
èŠã¯ãããŸããã
ãŸãããã®æ¹æ³ã¯ç·åœ¢ååž°ãããå®å®ããŠããŸããTPC-Hãã³ãããŒã¯ã§ã®åæã«ã¯ãäžã®å³ã«ç€ºãããã«2ãã¬ãŒãã³ã°ãµã€ã¯ã«ã®ã¿ãå¿
èŠã§ãã
æ©æ¢°åŠç¿ã®äœ¿çšããããããã®
kNNã¢ã«ãŽãªãºã ã§åŸãããçµæã瀺ããŸãã
| |
æ©æ¢°åŠç¿ã®åã« | æ©æ¢°åŠç¿ã®åŸ |
ææ¡ãããã¢ãããŒãã¯ãå®éã«DBMSã®æéãççž®ããããšãããããŸãã ãã³ãããŒã¯ãªã¯ãšã¹ãã®ã¿ã€ãã®1ã€ã§ã¯ãå éã¯30ã45ïŒ
ã§ããã1ã€ã¯2ã4åã§ãã
éçºã®æ¹æ³ã¯äœã§ããïŒ
æ¢åã®ãããã¿ã€ããããã«æ¹åããã«ã¯ãããã«å€ãã®æ瀺ããããŸãã
- èšç»ãèŠã€ããåé¡ã çŸåšã®ã¢ã«ãŽãªãºã ã¯ãã¢ã«ãŽãªãºã ãåæããèšç»ã«ãããŠãéžææ§äºæž¬ãæ£ããããšãä¿èšŒããŸãã ãã ããããã¯éžæããèšç»ã®å
šäœçãªæé©æ§ãä¿èšŒãããã®ã§ã¯ãããŸããã ã°ããŒãã«ã«æé©ãªèšç»ãŸãã¯å°ãªããšãæé©ãªããŒã«ã«æé©èšç»ã®æ€çŽ¢ã¯ãåå¥ã®ã¿ã¹ã¯ã§ãã
- 倱æããèšç»ã®å®è¡ãçµäºããå²ã蟌ã¿ã¢ãŒãã æšæºã®PostgreSQLã¢ãã«ã§ã¯ãæé©ãªãã©ã³ã¯1ã€ãããªããå€æŽãããªãããããã©ã³ã®å®è¡ãäžæããããšã¯æå³ããããŸããã æ©æ¢°åŠç¿ã®å°å
¥ã«ãããéžææ§ã®äºæž¬ã«é倧ãªèª€ãããã£ãèšç»ã®å®è¡ãäžæããåãåã£ãæ
å ±ãèæ
®ããŠãå®è£
ã«æé©ãªæ°ããèšç»ãéžæã§ããŸãã ã»ãšãã©ã®å Žåãæ°ããèšç»ã¯ä»¥åã®èšç»ãšå€§ããç°ãªããŸãã
- æ
å ±ã®é³è
åã®ã¢ãŒãã DBMSã®åäœäžã«ãããŒã¿ãšäžè¬çãªã¯ãšãªãå€æŽãããŸãã ãããã£ãŠãéå»ã«ååŸãããããŒã¿ã¯ãã¯ãé¢é£æ§ããªãå¯èœæ§ããããŸãã çŸåšãåœç€Ÿã¯æ
å ±ã®é¢é£æ§ãå€æããããã«å¿ããŠå€ãæ
å ±ããå¿ãããããã®åªããã·ã¹ãã ã«åãçµãã§ããŸãã
ããã¯äœã ã£ãïŒ
ãã®èšäºã§ã¯ïŒ
- PostgreSQLã¹ã±ãžã¥ãŒã©ã®ã¡ã«ããºã ãå解ããŸããã
- çŸåšã®éžææ§è©äŸ¡ã¢ã«ãŽãªãºã ã§ææãããåé¡ã
- æ©æ¢°åŠç¿æ³ã䜿çšããŠéžææ§ãè©äŸ¡ããæ¹æ³ã瀺ããŸããã
- æ©æ¢°åŠç¿ã䜿çšãããšãã¹ã±ãžã¥ãŒã©ã®äœæ¥ãæ¹åãããããã«å¿ããŠDBMSã®äœæ¥ãå éãããããšãå®éšçã«ç¢ºç«ãããŸããã
ãæž
èŽããããšãããããŸããïŒ
æåŠ
- PostgreSQLã¹ã±ãžã¥ãŒã©ãŒ
- æ©æ¢°åŠç¿ã«ã€ããŠïŒK.V. Vorontsovã®è¬çŸ©ã³ãŒã¹ããïŒ