å°å ¥
ããã®å Žã«çãŸãããã«ã¯ã§ããã ãæ©ãèµ°ããªããã°ãªããŸããã
ãããŠã©ããã«è¡ãã«ã¯å°ãªããšãXNUMXåã®éãã§èµ°ããªããã°ãªããŸããïŒã
(c) äžæè°ã®åœã®ã¢ãªã¹
å°ãåã«è¬æŒãäŸé ŒãããŸãã ã¢ããªã¹ã åœç€Ÿã¯ãããŒã¿ ã¢ãã«ã®èšèšãããŒãã«ããŠããŸãããªããªããé·æé (å Žåã«ãã£ãŠã¯æ°å¹Žé) ãããžã§ã¯ãã«æºãã£ãŠãããšãIT ãã¯ãããžãŒã®äžçã§èªåãã¡ã®åšãã§äœãèµ·ãã£ãŠããã®ããèŠå€±ã£ãŠããŸãããã§ãã åœç€Ÿã§ã¯ (ããŸããŸã§ãã) å€ãã®ãããžã§ã¯ãã (å°ãªããšãçŸæç¹ã§ã¯) NoSQL ããŒã¿ããŒã¹ã䜿çšããŠããªããããç§ã®è¬çŸ©ã§ã¯ãHBase ã®äŸã䜿çšã㊠NoSQL ããŒã¿ããŒã¹ã«å¥é泚æãæããè³æã®ãã¬ãŒã³ããŒã·ã§ã³ããããã®ããŒã¿ããŒã¹ã«åããããã«ããŸããã䜿ã£ãããšã®ãªã人ã§ãå¹æããããŸãã ç¹ã«ãæ°å¹Žåã«èªãã äŸã䜿çšããŠãããŒã¿ ã¢ãã«èšèšã®ããã€ãã®æ©èœã説æããŸããã
æè¿ããäœãããããšããªããªã£ãã®ã§ããçè«äžã®èšç®ã¯ã©ããããå®è·µã«çžåœããã ãããããšãã質åãèªåèªèº«ã«åããããŸãã (XNUMX æã®é·ãé±æ«ãéé¢ç掻ã§ãã£ãããšã¯ç¹ã«ããã«åœ¹ç«ã¡ãŸã)ã å®ã¯ããã®èšäºã®ã¢ã€ãã¢ã¯ããããŠçãŸããŸããã æ°æ¥é NoSQL ã䜿çšããŠããéçºè ã¯ãããããäœãæ°ããããšãåŠã¹ãªãå¯èœæ§ããããŸã (ãããã£ãŠãããã«èšäºã®ååãèªã¿é£ã°ãå¯èœæ§ããããŸã)ã ãããã ã¢ããªã¹ãNoSQL ããŸã 詳ããæ±ã£ãããšããªã人ã«ãšã£ãŠã¯ãHBase ã®ããŒã¿ ã¢ãã«èšèšã®æ©èœã«ã€ããŠã®åºæ¬çãªç解ãåŸãã®ã«åœ¹ç«ã€ãšæããŸãã
åæäŸ
ç§ã®æèŠã§ã¯ãNoSQL ããŒã¿ããŒã¹ã®äœ¿çšãéå§ããåã«ãã¡ãªãããšãã¡ãªãããæ éã«æ€èšããæ¯èŒæ€èšããå¿ èŠããããŸãã å€ãã®å Žåãåé¡ã¯åŸæ¥ã®ãªã¬ãŒã·ã§ãã« DBMS ã䜿çšããŠè§£æ±ºã§ããå¯èœæ§ãæãé«ããªããŸãã ãããã£ãŠãç¹å¥ãªçç±ããªãéã NoSQL ã䜿çšããªãã»ããããã§ãããã ããã§ã NoSQL ããŒã¿ããŒã¹ã䜿çšããããšã«æ±ºããå Žåã¯ãããã§ã®èšèšã¢ãããŒããå€å°ç°ãªãããšãèæ ®ããå¿ èŠããããŸãã ç¹ã«ããããŸã§ãªã¬ãŒã·ã§ãã« DBMS ã®ã¿ãæ±ã£ãŠãã人ã«ãšã£ãŠã¯çãããã®ããããããããŸãã (ç§ã®èŠ³å¯ã«ããã°)ã ãããã£ãŠãããªã¬ãŒã·ã§ãã«ãã®äžçã§ã¯ãéåžžãåé¡é åã®ã¢ãã«åããå§ããŠãå¿ èŠã«å¿ããŠã¢ãã«ãéæ£èŠåããŸãã NoSQL ã§ã¯ã ããŒã¿ãæ±ãããã«äºæ³ãããã·ããªãªãçŽã¡ã«èæ ®ããå¿ èŠããããŸã ãããŠæåã«ããŒã¿ãéæ£èŠåããŸãã ããã«ãä»ã«ãå€ãã®éãããããŸãããããã«ã€ããŠã¯ä»¥äžã§èª¬æããŸãã
次ã®ãåæãåé¡ãèããŠã¿ãŸããããããã«ã€ããŠã¯åŒãç¶ãåãçµãã§ãããŸãã
äœããã®æœè±¡çãªãœãŒã·ã£ã«ãããã¯ãŒã¯ã®ãŠãŒã¶ãŒã®å人ãªã¹ãã®ã¹ãã¬ãŒãžæ§é ãèšèšããå¿ èŠããããŸãã åçŽåããããã«ããã¹ãŠã®æ¥ç¶ãïŒLinkedin ã§ã¯ãªã Instagram ã®ããã«ïŒçŽæ¥è¡ãããŠãããšä»®å®ããŸãã ãã®æ§é ã«ããã次ã®ããšãå¹æçã«å¯èœã«ãªããŸãã
- ãŠãŒã¶ãŒ A ããŠãŒã¶ãŒ B ãèªããã©ããã®è³ªåã«çããŸã (èªã¿åããã¿ãŒã³)
- ãŠãŒã¶ãŒ B ãããŠãŒã¶ãŒ A ã®ãµãã¹ã¯ãªãã·ã§ã³/ãµãã¹ã¯ãªãã·ã§ã³è§£é€ã®å Žåã«æ¥ç¶ã®è¿œå /åé€ãèš±å¯ãã (ããŒã¿å€æŽãã³ãã¬ãŒã)
ãã¡ãããåé¡ã解決ããã«ã¯å€ãã®ãªãã·ã§ã³ããããŸãã éåžžã®ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã§ã¯ãããããåçŽã«é¢ä¿ã®ããŒãã«ãäœæã (ããšãã°ããã®ãå人ããå«ã家æãè·å Žãªã©ã®ãŠãŒã¶ãŒ ã°ã«ãŒããä¿åããå¿ èŠãããå Žåã«å žååããã)ãæé©åããããšã«ãªãã§ããããã¢ã¯ã»ã¹é床ãäžãããšãã€ã³ããã¯ã¹/ããŒãã£ã·ã§ãã³ã°ãè¿œå ãããŸãã ãããããæçµçãªããŒãã«ã¯æ¬¡ã®ããã«ãªããŸãã
USER_ID
å人ID
Vasya
ããã£
Vasya
OLYA
以äžãæ確ã«ããããããç解ããããã«ãID ã®ä»£ããã«ååã瀺ããŸãã
HBase ã®å Žåã次ã®ããšãããã£ãŠããŸãã
- ãã«ããŒãã«ã¹ãã£ã³ã«ãªããªãå¹ççãªæ€çŽ¢ãå¯èœ ããŒã«ããæä»ç
- å®éãå€ãã®äººã«ãšã£ãŠéŠŽæã¿ã®ãã SQL ã¯ãšãªããã®ãããªããŒã¿ããŒã¹ã«èšè¿°ããã®ã¯æªãèãã§ããã®ã¯ãã®ããã§ãã ãã¡ãããæè¡çã«ã¯ãçµåããã®ä»ã®ããžãã¯ãå«ã SQL ã¯ãšãªãåã Impala ãã HBase ã«éä¿¡ã§ããŸããããããã©ãã»ã©å¹æçã«ãªãã...
ãããã£ãŠããŠãŒã¶ãŒ ID ãããŒãšããŠäœ¿çšããå¿ èŠããããŸãã ãããŠããåéã® ID ãã©ãã«ãã©ã®ããã«ä¿åããã?ããšããããŒãã«ã€ããŠç§ãæåã«èããã®ã¯ã ããããåã«æ ŒçŽãããšããã¢ã€ãã¢ãããããŸããã ãã®æãæçœã§ãåçŽãªããªãã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸã (ããã次ã®ããã«åŒã³ãŸã) ãªãã·ã§ã³ 1 (ããã©ã«ã)ãããªãåç §ã®ãã):
è¡ããŒ
è¬æŒè
Vasya
1:ããã£ã¢
2ïŒãªãŒãªã€
3ïŒããŒã·ã£
ããã£
1ïŒããŒã·ã£
2:ãŽã¡ã·ã£
ããã§ãåè¡ã¯ 1 人ã®ãããã¯ãŒã¯ ãŠãŒã¶ãŒã«å¯Ÿå¿ããŸãã åã«ã¯å人ã®æ°ã«å¿ã㊠2ã1ã... ãšããååãä»ããããåã«ã¯å人㮠ID ãæ ŒçŽãããŸãã åè¡ã®åæ°ãç°ãªãããšã«æ³šæããããšãéèŠã§ãã äžå³ã®äŸã§ã¯ã2 ã€ã®è¡ã«ã¯ 3 ã€ã®å (1ã2ãXNUMX) ããããXNUMX çªç®ã®è¡ã«ã¯ XNUMX ã€ã®å (XNUMX ãš XNUMX) ã ãããããŸããããã§ã¯ããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã«ã¯ãªã XNUMX ã€ã® HBase ããããã£ã䜿çšããŸããã
- åã®æ§æãåçã«å€æŽããæ©èœ (åéã®è¿œå -> åã®è¿œå ãåéã®åé€ -> åã®åé€)
- è¡ãç°ãªãã°åæ§æãç°ãªãå ŽåããããŸã
æ§é ãã¿ã¹ã¯ã®èŠä»¶ã«æºæ ããŠãããã©ããã確èªããŠã¿ãŸãããã
- ããŒã¿ã®èªã¿åã: Vasya ã Olya ã«ç»é²ãããŠãããã©ãããç解ããã«ã¯ã以äžãåŒãå¿ èŠããããŸãã è¡å šäœ RowKey = âVasyaâ ãšããããŒã䜿çšããŠãåã®å€ã Olya ããèŠã€ããããŸã§äžŠã¹æ¿ããŸãã ãŸãã¯ããã¹ãŠã®åã®å€ãå埩åŠçããŠãOlya ããæºãããªãããšçã False ãè¿ããŸãã
- ããŒã¿ç·šéïŒãã¬ã³ãè¿œå : åæ§ã®ã¿ã¹ã¯ã§ã¯ãæžç®ããå¿ èŠããããŸã è¡å šäœ RowKey = "Vasya" ããŒã䜿çšããŠå人ã®ç·æ°ãæ°ããŸãã æ°ããåéã® ID ãæžãçããå¿ èŠãããåã®çªå·ã決å®ããã«ã¯ããã®åéã®åèšæ°ãå¿ èŠã§ãã
- ããŒã¿å€æŽïŒãã¬ã³ãåé€:
- åŒãç®ãå¿ èŠ è¡å šäœ RowKey = âVasyaâ ããŒã䜿çšããŠåã䞊ã¹æ¿ããŠãåé€ããå人ãèšé²ãããŠããåãèŠã€ããŸãã
- 次ã«ãå人ãåé€ããåŸãçªå·ä»ãã«ãã®ã£ããããçããªãããã«ããã¹ãŠã®ããŒã¿ã XNUMX ã€ã®åã«ãã·ãããããå¿ èŠããããŸãã
ããã§ããæ¡ä»¶ä»ãã¢ããªã±ãŒã·ã§ã³ãåŽã§å®è£
ããå¿
èŠããããããã®ã¢ã«ãŽãªãºã ã®çç£æ§ãè©äŸ¡ããŠã¿ãŸãããã
- ããŒã¿ã®èªã¿åã: è¡å šäœãæžç®ããå¶éå ã®ãã¹ãŠã®åãå埩åŠçããå¿ èŠããããŸãã ããã¯ãã³ã¹ãã®äžéæšå®å€ãçŽ O(n) ã«ãªãããšãæå³ããŸãã
- ããŒã¿ç·šéïŒãã¬ã³ãè¿œå : åéã®æ°ãå€æããã«ã¯ãè¡ã®ãã¹ãŠã®åãå埩åŠçããŠãããæ°ããåãæ¿å ¥ããå¿ èŠããããŸã => O(n)
- ããŒã¿å€æŽïŒãã¬ã³ãåé€:
- è¿œå ãšåæ§ - å¶éå ã®ãã¹ãŠã®åãééããå¿ èŠããããŸã => O(n)
- åãåé€ããåŸãåãã移åãããå¿
èŠããããŸãã ããããæ£é¢ãããå®è£
ãããšãå¶éå
ã§æ倧 (n-1) åã®æäœãå¿
èŠã«ãªããŸãã ãããããããšããã«å®è·µçãªéšåã§ã¯ãåºå®æ°ã®æäœã«å¯ŸããŠãæ¬äŒŒã·ããããå®è£
ããå¥ã®ã¢ãããŒãã䜿çšããŸããã€ãŸããn ã«é¢ä¿ãªããäžå®ã®æéãããã«è²»ããããŸãã ãã®äžå®æé (æ£ç¢ºã«ã¯ O(2)) ã¯ãO(n) ã«æ¯ã¹ãŠç¡èŠã§ããŸãã ãã®ã¢ãããŒãã次ã®å³ã«ç€ºããŸãããæåŸã®ãåããããŒã¿ãåé€ããåã«ããŒã¿ãã³ããŒããæåŸã®åãåé€ããã ãã§ãã
åèšãããšããã¹ãŠã®ã·ããªãªã§ O(n) ã®æŒžè¿çãªèšç®è€éæ§ãåŸãããŸããã
ãããããã§ã«ãæ°ã¥ãããšæããŸãããã»ãšãã©ã®å ŽåãããŒã¿ããŒã¹ããè¡å
šäœãèªã¿åãå¿
èŠããããXNUMX ä»¶äž XNUMX 件ã®å Žåã¯ããã¹ãŠã®åã調ã¹ãŠå人ã®ç·æ°ãèšç®ããã ãã§ãã ãããã£ãŠãæé©åã®è©Šã¿ãšããŠãåãããã¯ãŒã¯ ãŠãŒã¶ãŒã®å人ã®åèšæ°ãæ ŒçŽãããã«ãŠã³ããåãè¿œå ã§ããŸãã ãã®å Žåãè¡å
šäœãèªã¿åã£ãŠå人ã®ç·æ°ãèšç®ããããšã¯ã§ãããXNUMX ã€ã®ãã«ãŠã³ããåã ããèªã¿èŸŒãã ãã§ãã éèŠãªããšã¯ãããŒã¿ãæäœãããšãã«ãã«ãŠã³ãããæŽæ°ããããšãå¿ããªãããšã§ãã ããã ç§ãã¡ã¯æ¹åãããŸã ãªãã·ã§ã³ 2 (ã«ãŠã³ã):
è¡ããŒ
è¬æŒè
Vasya
1:ããã£ã¢
2ïŒãªãŒãªã€
3ïŒããŒã·ã£
ã«ãŠã³ãïŒ3
ããã£
1ïŒããŒã·ã£
2:ãŽã¡ã·ã£
ã«ãŠã³ãïŒ2
æåã®ãªãã·ã§ã³ãšæ¯èŒãããšã次ã®ããã«ãªããŸãã
- ããŒã¿ã®èªã¿åãïŒããŽã¡ã·ã£ã¯ãªãŒãªã€ãèªã¿ãŸããïŒããšãã質åã«å¯ŸããçããåŸãããã«ã äœãå€ãã£ãŠããªã => O(n)
- ããŒã¿ç·šéïŒãã¬ã³ãè¿œå : è¡å šäœãèªã¿åã£ãŠãã®åãå埩ããå¿ èŠããªããªãããcountãåãªã©ã®å€ã®ã¿ãååŸã§ãããããæ°ããå人ã®æ¿å ¥ãç°¡çŽ åãããŸããã æ°ããå人ãæ¿å ¥ããããã®åçªå·ãããã«æ±ºå®ããŸãã ããã«ãããèšç®éã O(1) ã«åæžãããŸãã
- ããŒã¿å€æŽïŒãã¬ã³ãåé€: å人ãåé€ããå Žåããã®åã䜿çšããŠãããŒã¿ã XNUMX ã»ã«å·Šã«ãã·ããããããšãã® I/O æäœã®æ°ãæžããããšãã§ããŸãã ãã ããåé€ããå¿ èŠãããåãèŠã€ããããã«åãå埩åŠçããå¿ èŠã¯äŸç¶ãšããŠæ®ãããã => O(n)
- äžæ¹ãããŒã¿ãæŽæ°ããå Žåãæ¯åãcountãåãæŽæ°ããå¿ èŠããããŸãããããã«ã¯äžå®ã®æéãããããO ã·ã³ãã«ã®æ çµã¿å ã§ã¯ç¡èŠã§ããŸãã
äžè¬ã«ããªãã·ã§ã³ 2 ã®æ¹ãè¥å¹²æé©ã§ããããã«èŠããŸãããã©ã¡ãããšãããšãé©åœã§ã¯ãªãé²åãã«è¿ããã®ã§ãã ãé©åœããèµ·ããããã«å¿
èŠãªã®ã¯ ãªãã·ã§ã³ 3 (å).
ãã¹ãŠããã²ã£ããè¿ããŠãã¿ãŸãããïŒç§ãã¡ãä»»åœããŸã åå ãŠãŒã¶ãŒIDïŒ åèªäœã«äœãæžããã¯ç§ãã¡ã«ãšã£ãŠãã¯ãéèŠã§ã¯ãããŸããããããçªå· 1 ã«ããŸã (äžè¬ã«ã圹ç«ã€ãã®ãããã«ä¿åã§ããŸããããšãã°ãã°ã«ãŒãã家æ/å人/ãªã©ã)ã ãã®ã¢ãããŒãã¯ããããŸã§ã« NoSQL ããŒã¿ããŒã¹ã䜿çšããçµéšã®ãªããæºåãã§ããŠããªããçŽ äººããé©ããããããããŸãããããã®ã¢ãããŒããããããã®ã¿ã¹ã¯ã§ HBase ã®å¯èœæ§ãããå¹æçã«äœ¿çšã§ããããã«ãããã®ã§ãã
è¡ããŒ
è¬æŒè
Vasya
ããã£ã¢: 1
ãªãªã€: 1
ããŒã·ã£: 1
ããã£
ããŒã·ã£ïŒ1
ãŽã¡ã·ã£: 1
ããã§ã¯ãããã€ãã®å©ç¹ãäžåºŠã«åŸãããŸãã ããããç解ããããã«ãæ°ããæ§é ãåæããèšç®ã®è€éããèŠç©ãã£ãŠã¿ãŸãããã
- ããŒã¿ã®èªã¿åã: Vasya ã Olya ã«ç»é²ãããŠãããã©ããã®è³ªåã«çããã«ã¯ããOlyaããšãã 1 ã€ã®åãèªãã ãã§ååã§ããããã«ããã°ãçã㯠Trueãããã§ãªãå Žåã¯ãFalse => O(XNUMX)
- ããŒã¿ç·šéïŒãã¬ã³ãè¿œå : åéã®è¿œå : æ°ããåãåé IDããè¿œå ããã ãã§ã => O(1)
- ããŒã¿å€æŽïŒãã¬ã³ãåé€: Friend ID åãåé€ããã ãã§ã => O(1)
ã芧ã®ãšããããã®ã¹ãã¬ãŒãž ã¢ãã«ã®å€§ããªå©ç¹ã¯ãå¿ èŠãªãã¹ãŠã®ã·ããªãªã§ XNUMX ã€ã®åã®ã¿ã䜿çšããŠæäœããããŒã¿ããŒã¹ããè¡å šäœãèªã¿åãå¿ èŠããªããããã«ãã®è¡ã®ãã¹ãŠã®åãåæããå¿ èŠããªãããšã§ãã ããã§æ¢ããŠãããã®ã§ãã...
æžæããªããããããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããéã®ããã©ãŒãã³ã¹ã®æé©åãš I/O æäœã®åæžãšããéãããå°ãé²ãããšãã§ããŸãã å®å šãªé¢ä¿æ å ±ãè¡ããŒèªäœã«çŽæ¥ä¿åãããã©ããªãã§ãããã? ã€ãŸããuserID.friendID? ã®ãããªè€åããŒãäœæããŸãã ãã®å Žåããã®è¡ã®åãèªã¿åãå¿ èŠãããããŸãã (ãªãã·ã§ã³ 4(è¡)):
è¡ããŒ
è¬æŒè
ãŽã¡ã·ã£ã»ããã£ã¢
ããã£ã¢: 1
ãŽã¡ã·ã£ã»ãªãªã£
ãªãªã€: 1
ãŽã¡ã·ã£ã»ãã·ã£
ããŒã·ã£: 1
ããã£ã¢ã»ããŒã·ã£
ããŒã·ã£ïŒ1
ããã£ã»ãŽã¡ã·ã£
ãŽã¡ã·ã£: 1
æããã«ããã®ãããªæ§é ã«ããããã¹ãŠã®ããŒã¿æäœã·ããªãªã®è©äŸ¡ã¯ã以åã®ããŒãžã§ã³ãšåæ§ã« O(1) ã«ãªããŸãã ãªãã·ã§ã³ 3 ãšã®éãã¯ãããŒã¿ããŒã¹ã§ã® I/O æäœã®å¹çã®ã¿ã§ãã
ããŠãæåŸã®ããèŸåãã ãªãã·ã§ã³ 4 ã§ã¯ãè¡ããŒãå¯å€é·ã«ãªããããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ãããããšãç°¡åã«ããããŸã (ããã§ãHBase ã¯ããŒã¿ããã€ãã®ã»ãããšããŠæ ŒçŽããããŒãã«å ã®è¡ã¯ããŒã«ãã£ãŠãœãŒããããããšãæãåºããŠãã ãã)ã ããã«ãã·ããªãªã«ãã£ãŠã¯åŠçãå¿ èŠã«ãªãå¯èœæ§ãããã»ãã¬ãŒã¿ãŒããããŸãã ãã®åœ±é¿ãæé€ããã«ã¯ãuserID ãš friendsID ã®ããã·ã¥ã䜿çšã§ããŸããäž¡æ¹ã®ããã·ã¥ã®é·ãã¯äžå®ã§ãããããåºåãæåã䜿çšããã«åçŽã«é£çµã§ããŸãã ãããšãããŒãã«å ã®ããŒã¿ã¯æ¬¡ã®ããã«ãªããŸã(ãªãã·ã§ã³ 5(ããã·ã¥)):
è¡ããŒ
è¬æŒè
dc084ef00e94aef49be885f9b01f51c01918fa783851db0dc1f72f83d33a5994
ããã£ã¢: 1
dc084ef00e94aef49be885f9b01f51c0f06b7714b5ba522c3cf51328b66fe28a
ãªãªã€: 1
dc084ef00e94aef49be885f9b01f51c00d2c2e5d69df6b238754f650d56c896a
ããŒã·ã£: 1
1918fa783851db0dc1f72f83d33a59949ee3309645bd2c0775899fca14f311e1
ããŒã·ã£ïŒ1
1918fa783851db0dc1f72f83d33a5994dc084ef00e94aef49be885f9b01f51c0
ãŽã¡ã·ã£: 1
æããã«ãç§ãã¡ãæ€èšããŠããã·ããªãªã§ãã®ãããªæ§é ãæ±ãã¢ã«ãŽãªãºã ã®è€éãã¯ããªãã·ã§ã³ 4ãã€ãŸã O(1) ã®è€éããšåãã«ãªããŸãã
èšç®ã®è€éãã®ãã¹ãŠã®æšå®å€ã XNUMX ã€ã®è¡šã«ãŸãšããŠã¿ãŸãããã
åéãè¿œå ãã
å人ã®å®åŠã確èªãã
åéãåé€ãã
ãªãã·ã§ã³ 1 (ããã©ã«ã)
OïŒNïŒ
OïŒNïŒ
OïŒNïŒ
ãªãã·ã§ã³ 2 (ã«ãŠã³ã)
OïŒ1ïŒ
OïŒNïŒ
OïŒNïŒ
ãªãã·ã§ã³ 3 (å)
OïŒ1ïŒ
OïŒ1ïŒ
OïŒ1ïŒ
ãªãã·ã§ã³ 4 (è¡)
OïŒ1ïŒ
OïŒ1ïŒ
OïŒ1ïŒ
ãªãã·ã§ã³ 5 (ããã·ã¥)
OïŒ1ïŒ
OïŒ1ïŒ
OïŒ1ïŒ
ã芧ã®ãšããããªãã·ã§ã³ 3 ïœ 5 ãæãæãŸãããšæãããçè«çã«ã¯å¿ èŠãªãã¹ãŠã®ããŒã¿æäœã·ããªãªãäžå®æéã§ç¢ºå®ã«å®è¡ã§ããŸãã ç§ãã¡ã®ã¿ã¹ã¯ã®æ¡ä»¶ã§ã¯ããŠãŒã¶ãŒã®åäººå šå¡ã®ãªã¹ããååŸãããšããæ瀺çãªèŠä»¶ã¯ãããŸããããå®éã®ãããžã§ã¯ã掻åã§ã¯ãåªããã¢ããªã¹ããšããŠããã®ãããªã¿ã¹ã¯ãçºçããå¯èœæ§ãããããšããäºæž¬ããã ãã¹ãããŒãåºããŠãã ãããã ãããã£ãŠãç§ã®åæ ã¯éžæè¢ 3 ã®åŽã«ãããŸããããããå®éã®ãããžã§ã¯ãã§ã¯ããã®èŠæ±ã¯ä»ã®æ段ã§ãã§ã«è§£æ±ºãããŠããå¯èœæ§ãéåžžã«é«ããããåé¡å šäœã®äžè¬çãªããžã§ã³ããªããã°ããã®èŠæ±ã¯è¡ããªãæ¹ãè¯ãã§ããããæçµçãªçµè«ã
å®éšã®æºå
äžèšã®çè«çè°è«ãå®éã«ãã¹ãããŠã¿ãããšæããŸããããããé·ãé±æ«ã®éã«æãã€ããã¢ã€ãã¢ã®ç®æšã§ããã ãããè¡ãã«ã¯ãããŒã¿ããŒã¹ã䜿çšããããã®èª¬æããããã¹ãŠã®ã·ããªãªã«ããããæ¡ä»¶ä»ãã¢ããªã±ãŒã·ã§ã³ãã®åäœé床ãšããœãŒã·ã£ã« ãããã¯ãŒã¯ (n) ã®ãµã€ãºã®å¢å ã«äŒŽããã®æéã®å¢å ãè©äŸ¡ããå¿ èŠããããŸãã ç§ãã¡ãèå³ãæã¡ãå®éšäžã«æž¬å®ããã¿ãŒã²ãããã©ã¡ãŒã¿ã¯ããæ¡ä»¶ä»ãã¢ããªã±ãŒã·ã§ã³ãã XNUMX ã€ã®ãããžãã¹æäœããå®è¡ããã®ã«è²»ãããæéã§ãã ãããžãã¹ååŒããšã¯ã次ã®ãããããæå³ããŸãã
- æ°ããåéã XNUMX 人远å ããŸã
- ãŠãŒã¶ãŒ A ããŠãŒã¶ãŒ B ã®åéãã©ããã確èªãã
- å人ã XNUMX 人åé€ãã
ãããã£ãŠãæåã®å£°æã§æŠèª¬ããèŠä»¶ãèæ ®ãããšãæ€èšŒã·ããªãªã¯æ¬¡ã®ããã«ãªããŸãã
- ããŒã¿èšé²ã ãµã€ãº n ã®åæãããã¯ãŒã¯ãã©ã³ãã ã«çæããŸãã ãçŸå®äžçãã«è¿ã¥ããããã«ãåãŠãŒã¶ãŒãæã€åéã®æ°ã確çå€æ°ã«ãªããŸãã ãæ¡ä»¶ä»ãã¢ããªã±ãŒã·ã§ã³ããçæããããã¹ãŠã®ããŒã¿ã HBase ã«æžã蟌ãæéã枬å®ããŸãã 次ã«ãçµæã®æéãè¿œå ãããåéã®ç·æ°ã§å²ããŸããããããXNUMX ã€ã®ãããžãã¹æäœãã®å¹³åæéãååŸããæ¹æ³ã§ãã
- ããŒã¿ã®èªã¿åãã ãŠãŒã¶ãŒããšã«ããŠãŒã¶ãŒã賌èªããŠãããã©ãããåçããå¿ èŠããããããŒãœããªãã£ãã®ãªã¹ããäœæããŸãã ãªã¹ãã®é·ã = ãŠãŒã¶ãŒã®å人ã®ãããã®æ°ããã§ãã¯ãããå人ã®ååã«ã€ããŠã¯çãããã¯ãããæ®ãã®ååã«ã€ããŠã¯çãããããããã§ããå¿ èŠããããŸãã ãã§ãã¯ã¯ããã¯ãããšãããããã®åçã亀äºã«ãªãé åºã§å®è¡ãããŸã (ã€ãŸãã1 åããšã«ããªãã·ã§ã³ 2 ãš XNUMX ã®è¡ã®ãã¹ãŠã®åã調ã¹ãå¿ èŠããããŸã)ã 次ã«ãåèšã¹ã¯ãªãŒãã³ã°æéããã¹ãããå人ã®æ°ã§å²ã£ãŠã被éšè ãããã®å¹³åã¹ã¯ãªãŒãã³ã°æéãæ±ããŸãã
- ããŒã¿åé€ã ãŠãŒã¶ãŒãããã¹ãŠã®åéãåé€ããŸãã ããã«ãåé€é åºã¯ã©ã³ãã ã§ã (ã€ãŸããããŒã¿ã®èšé²ã«äœ¿çšãããå ã®ãªã¹ãããã·ã£ããã«ãããŸã)ã 次ã«ãåèšãã§ãã¯æéãåé€ããå人ã®æ°ã§å²ã£ãŠããã§ãã¯ãããã®å¹³åæéãååŸããŸãã
æé·ã«äŒŽã£ãŠæéãã©ã®ããã«å€åãããã確èªããã«ã¯ã5 ã€ã®ããŒã¿ ã¢ãã« ãªãã·ã§ã³ã®ãããããšãããŸããŸãªãµã€ãºã®ãœãŒã·ã£ã« ãããã¯ãŒã¯ã«å¯ŸããŠã·ããªãªãå®è¡ããå¿
èŠããããŸãã 5 n 以å
ã§ã¯ããããã¯ãŒã¯å
ã®æ¥ç¶ãšãã§ãã¯ãããŠãŒã¶ãŒã®ãªã¹ãã¯ãåœç¶ãXNUMX ã€ã®ãªãã·ã§ã³ãã¹ãŠã§åãã§ããå¿
èŠããããŸãã
ç解ãæ·±ããããã«ãn= 5 ã§çæãããããŒã¿ã®äŸã以äžã«ç€ºããŸããæžãããããžã§ãã¬ãŒã¿ãŒãã¯ãåºåãšã㊠XNUMX ã€ã® ID èŸæžãçæããŸãã
- æåã®ãã®ã¯æ¿å ¥çšã§ã
- XNUMXã€ç®ã¯ãã§ãã¯çšã§ã
- XNUMXçªç® â åé€çš
{0: [1], 1: [4, 5, 3, 2, 1], 2: [1, 2], 3: [2, 4, 1, 5, 3], 4: [2, 1]} # вÑегП 15 ÐŽÑÑзей
{0: [1, 10800], 1: [5, 10800, 2, 10801, 4, 10802], 2: [1, 10800], 3: [3, 10800, 1, 10801, 5, 10802], 4: [2, 10800]} # вÑегП 18 пÑПвеÑÑеЌÑÑ
ÑÑбÑекÑПв
{0: [1], 1: [1, 3, 2, 5, 4], 2: [1, 2], 3: [4, 1, 2, 3, 5], 4: [1, 2]} # вÑегП 15 ÐŽÑÑзей
ã芧ã®ãšããããã§ãã¯å¯Ÿè±¡ã®èŸæžã«ãã 10 ãè¶ ãããã¹ãŠã® ID ã¯ããŸãã«ç¢ºå®ã« False ã®çããåŸããã ID ã§ãã ãåéãã®æ¿å ¥ã確èªãåé€ã¯ãèŸæžã«æå®ãããŠããé åºã©ããã«å®è¡ãããŸãã
å®éšã¯ Windows 10 ãå®è¡ããã©ãããããã§å®è¡ãããäžæ¹ã® Docker ã³ã³ãããŒã§ã¯ HBase ãå®è¡ãããããäžæ¹ã®ã³ã³ãããŒã§ã¯ Jupyter Notebook ãåãã Python ãå®è¡ãããŸããã Docker ã«ã¯ 2 ã€ã® CPU ã³ã¢ãš 2 GB ã® RAM ãå²ãåœãŠãããŸããã ãæ¡ä»¶ä»ãã¢ããªã±ãŒã·ã§ã³ãã®ãšãã¥ã¬ãŒã·ã§ã³ãšããã¹ã ããŒã¿ãçæããŠæéã枬å®ããããã®ããã€ããã®äž¡æ¹ã®ããžãã¯ã¯ãã¹ãŠ Python ã§èšè¿°ãããŸããã ãã®ã©ã€ãã©ãªã¯ HBase ãšé£æºããããã«äœ¿çšãããŸããã
ç¹å®ã®ã©ãããããã®èšç®èœåãèæ ®ããŠãn = 10ã30ã... ã®èµ·åãå®éšçã«éžæãããŸããã 170 â å®å šãªãã¹ã ãµã€ã¯ã« (ãã¹ãŠã® n ã®ãã¹ãŠã®ãªãã·ã§ã³ã®ãã¹ãŠã®ã·ããªãª) ã®åèšæäœæéã¯ãå€ããå°ãªãã劥åœã§ããã15 åã®ãè¶äŒ (å¹³å XNUMX å) ã«é©åãããšãã
ããã§ããã®å®éšã§ã¯äž»ã«çµ¶å¯Ÿçãªããã©ãŒãã³ã¹æ°å€ãè©äŸ¡ããŠããããã§ã¯ãªãããšã«æ³šæããå¿ èŠããããŸãã ç°ãªã XNUMX ã€ã®ãªãã·ã§ã³ãçžå¯Ÿçã«æ¯èŒããŠããå®å šã«æ£ãããšã¯éããŸããã ããã§ãn ã«å¿ããæéã®å€åã®æ§è³ªã«èå³ããããŸããããã¹ã ã¹ã¿ã³ããã®äžèšã®æ§æãèæ ®ãããšãã©ã³ãã ãªèŠå ããã®ä»ã®èŠå ã®åœ±é¿ããã¯ãªã¢ãããæéæšå®å€ãååŸããã®ã¯éåžžã«å°é£ã§ããããã§ã (ãã®ãããªã¿ã¹ã¯ã¯èšå®ãããŠããŸããã§ããïŒã
å®éšã®çµæ
æåã®ãã¹ãã¯ãåéãªã¹ãã«èšå
¥ããã®ã«è²»ããããæéãã©ã®ããã«å€åãããã§ãã ãã®çµæãäžã®ã°ã©ãã§ãã
ãªãã·ã§ã³ 3 ïœ 5 ã§ã¯ãäºæ³ã©ãããã»ãŒäžå®ã®ãããžãã¹ ãã©ã³ã¶ã¯ã·ã§ã³ãæéã瀺ãããŠããããããã¯ãŒã¯ ãµã€ãºã®æ¡å€§ãããã©ãŒãã³ã¹ã®åºå¥ã§ããªãå·®ã«ã¯äŸåããŸããã
ãªãã·ã§ã³ 2 ãäžå®ã§ã¯ãããŸãããããã©ãŒãã³ã¹ããããã«æªãããªãã·ã§ã³ 2 ïœ 3 ãšæ¯èŒããŠã»ãŒæ£ç¢ºã« 5 åã§ãã ããã¯çè«ãšçžé¢ããŠãããããåã°ãããåŸãŸããããã®ããŒãžã§ã³ã§ã¯ãHBase ãšã®éã® I/O æäœã®æ°ãã¡ããã© 2 åã«ãªã£ãŠããŸãã ããã¯ãååãšããŠãã¹ããã³ããè¯å¥œãªç²ŸåºŠãæäŸããããšã瀺ãéæ¥çãªèšŒæ ãšããŠåœ¹ç«ã¡ãŸãã
ãŸãããªãã·ã§ã³ 1 ã¯äºæ³ã©ãããæãé
ãããšãå€æãããããã¯ãŒã¯ã®ãµã€ãºã«åãããŠè¿œå ããã®ã«ãããæéãçŽç·çã«å¢å ããããšãããããŸãã
次ã«ãXNUMX åç®ã®ãã¹ãã®çµæãèŠãŠã¿ãŸãããã
ãªãã·ã§ã³ 3 ïœ 5 ãããããã¯ãŒã¯ã®ãµã€ãºã«é¢ä¿ãªããäžå®æéã§æåŸ
ã©ããã«åäœããŸãã ãªãã·ã§ã³ 1 ãš 2 ã¯ããããã¯ãŒã¯ ãµã€ãºãå¢å ããã«ã€ããŠæéãçŽç·çã«å¢å ããããã©ãŒãã³ã¹ãåæ§ã§ããããšã瀺ããŠããŸãã ããã«ããªãã·ã§ã³ 2 ã¯å°ãé
ããªãããšãããããŸãããããã¯æããã«ãè¿œå ã®ãã«ãŠã³ããåãæ ¡æ£ããŠåŠçããå¿
èŠãããããã§ããããã¯ãn ã倧ãããªãã«ã€ããŠé¡èã«ãªããŸãã ãã ãããã®æ¯èŒã®ç²ŸåºŠã¯æ¯èŒçäœããããçµè«ãåºãããšã¯å·®ãæ§ããŸãã ããã«ããããã®æ¯ç (ãªãã·ã§ã³ 1 ãš 2 ã®ã©ã¡ããéãã) ã¯å®è¡ããšã«å€åããŸãã (äŸåæ§ãšãè¡ãã€æ»ãã€ãã®æ§è³ªãç¶æããªãã)ã
ããŠãæåŸã®ã°ã©ãã¯é€å»ãã¹ãã®çµæã§ãã
ç¹°ãè¿ããŸãããããã§ãé©ãã¹ãããšã§ã¯ãããŸããã ãªãã·ã§ã³ 3 ïœ 5 ã¯ãäžå®æéã§åé€ãå®è¡ããŸãã
ããã«ãèå³æ·±ãããšã«ããªãã·ã§ã³ 4 ãš 5 ã¯ãåã®ã·ããªãªãšã¯ç°ãªãããªãã·ã§ã³ 3 ãããããã©ãŒãã³ã¹ãèãããããã«å£ã£ãŠããŸããæããã«ãè¡åé€æäœã¯ãäžè¬ã«è«ççãªååé€æäœãããã³ã¹ããé«ããªããŸãã
ãªãã·ã§ã³ 1 ãš 2 ã§ã¯ãäºæ³ã©ãããæéãçŽç·çã«å¢å ããŸãã åæã«ããªãã·ã§ã³ 2 ã¯ãã«ãŠã³ãåããç¶æãããããã®è¿œå ã® I/O æäœãåå ã§ããªãã·ã§ã³ 1 ãããäžè²«ããŠé ããªããŸãã
å®éšã®äžè¬çãªçµè«:
- ãªãã·ã§ã³ 3 ïœ 5 ã§ã¯ãHBase ãå©çšãããããå¹çãåäžããŸãã ããã«ããããã®ããã©ãŒãã³ã¹ã¯çžäºã«äžå®ã®å²åã§ç°ãªãããããã¯ãŒã¯ã®ãµã€ãºã«ã¯äŸåããŸããã
- ãªãã·ã§ã³ 4 ãš 5 ã®å·®ã¯èšé²ãããŸããã§ããã ããããããã¯ãªãã·ã§ã³ 5 ã䜿çšãã¹ãã§ã¯ãªããšããæå³ã§ã¯ãããŸããã ããããããã¹ããã³ãã®ããã©ãŒãã³ã¹ç¹æ§ãèæ ®ããã䜿çšãããå®éšã·ããªãªã§ã¯æ€åºã§ããªãã£ããšèããããŸãã
- ããŒã¿ã䜿çšããŠãããžãã¹æäœããå®è¡ããããã«å¿ èŠãªæéã®å¢å ã®æ§è³ªã¯ããã¹ãŠã®ãªãã·ã§ã³ã«ã€ããŠä»¥åã«åŸãããçè«çèšç®ãã»ãŒè£ä»ããŠããŸãã
ãã£ããŒã¬
è¡ããã倧ãŸããªå®éšã¯çµ¶å¯Ÿçãªçå®ãšã¿ãªãããã¹ãã§ã¯ãããŸããã èæ ®ãããŠããããçµæãæªããŠããèŠå ãå€æ°ãããŸã (ãããã®å€åã¯ããããã¯ãŒã¯ ãµã€ãºãå°ããã°ã©ãã§ç¹ã«é¡èã§ã)ã ããšãã°ãhappybase ã§äœ¿çšãããŠããç¯çŽã®é床ãPython ã§äœæããããžãã¯ã®å®è£ éãšæ¹æ³ (ã³ãŒãããã¹ãŠã®ã³ã³ããŒãã³ãã®æ©èœãæé©ãã€å¹æçã«äœ¿çšããŠäœæããããšã¯èšããŸãã)ãããããHBase ãã£ãã·ã¥ã®æ©èœãã©ãããããäžã® Windows 10 ã®ããã¯ã°ã©ãŠã³ã ã¢ã¯ãã£ããã£ãªã©ã äžè¬ã«ããã¹ãŠã®çè«çèšç®ã¯ãã®åŠ¥åœæ§ãå®éšçã«èšŒæãããŠãããšèããããšãã§ããŸãã ãŸããå°ãªããšãããã®ãããªãæ£é¢æ»æãã§åœŒãã«åè«ããããšã¯äžå¯èœã§ããã
çµè«ãšããŠãHBase ã§ããŒã¿ ã¢ãã«ã®èšèšãå§ããã°ããã®ãã¹ãŠã®äººã«å¯Ÿããæšå¥šäºé ã¯ããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã䜿çšãããããŸã§ã®çµéšãèŠçŽãããæãããèŠããŠããããšã§ãã
- èšèšæã«ã¯ããã¡ã€ã³ ã¢ãã«ã§ã¯ãªããããŒã¿æäœã®ã¿ã¹ã¯ãšãã¿ãŒã³ããé²ããŸãã
- å¹ççãªã¢ã¯ã»ã¹ (ãã«ããŒãã«ã¹ãã£ã³ãªã) â ããŒã®ã¿ã«ãã
- éæ£èŠå
- ç°ãªãè¡ã«ã¯ç°ãªãåãå«ããããšãã§ããŸã
- ã¹ããŒã«ãŒã®ãã€ãããã¯ãªæ§æ
åºæïŒ habr.com