ä»åã¯ãããã€ãã®ã€ã³ã¡ã¢ãªDBMSã®å€§èŠæš¡ãªãã¹ããå®æœããŸããã çŸæç¹ã§ã®DWH管çè ãšã®äŒè©±ã¯ããããŠãã©ã®ããã«ã誰ããªãŒãããŸããïŒããšãããã¬ãŒãºããå§ãŸããŸãã ããã«å¿ããŠã人ã ã¯ãã¹ãã®é£ããããããŸã§ç¥ãããŠããªããã³ããŒãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã®ç¥æµãåã ã®è¢«éšè ã®æ¬ ç¹ã«ã€ããŠãé·ããŠéåžžã«ææ çãªåºæ¿ãåããŸããã
詳现ãçµæãããã³ãã¹ãããã®çµè«ã®äžéšã®é¡äŒŒæ§-åæžäžã
ãã¹ãã®ç®çã¯ãåœç€Ÿã®èŠä»¶ãæºããé«éåæã€ã³ã¡ã¢ãªããŒã¿ããŒã¹ã確èªããä»ã®ããŒã¿ã¹ãã¬ãŒãžã·ã¹ãã ãšã®çµ±åã®è€éããè©äŸ¡ããããšã§ãã
ãŸãããã¹ãã§ã¯ã€ã³ã¡ã¢ãªãœãªã¥ãŒã·ã§ã³ãšããŠäœçœ®ä»ããããŠããªã2ã€ã®DBMSãå«ããŸããã ããŒã¿éããµãŒããŒã®RAMã¡ã¢ãªãšã»ãŒåçã§ããã°ããããã®DBMSã§ããã©ãŒãã³ã¹ãåŸæ¥ã®ã¡ã¢ãªå ãœãªã¥ãŒã·ã§ã³ã«è¿ã¥ãããšãã§ãããšããæ¡ä»¶ã§ããã£ãã·ã¥ã¡ã«ããºã ã䜿çšã§ãããšããäºå®ã«é ŒããŸããã
ãŠãŒã¹ã±ãŒã¹ã®èª¬æ
ãã¹ãã®çµæãšããŠéžæãããDBMSã¯ãéžæããŒã¿ã»ããã®ããã³ããšã³ãã¹ãã¬ãŒãžããŒã¿ããŒã¹ãšããŠæ©èœãããšæ³å®ãããŸãïŒãã ãã2ã4 TBããã ããããŒã¿ã®éã¯æéãšãšãã«å¢å ããå¯èœæ§ããããŸãïŒïŒBIã·ã¹ãã ïŒSAP BusinessObjectsïŒããã³äžéšããã®èŠæ±ãåãå ¥ããŸãäžéšã®ãŠãŒã¶ãŒããã®ã¢ãããã¯ãªã¯ãšã¹ãã ã¯ãšãªã¯ã90ïŒ ã®ã±ãŒã¹ã§ãå¹³çã®æ¡ä»¶ïŒå Žåã«ãã£ãŠã¯ééã«å«ãŸããæ¥ä»ã®æ¡ä»¶ïŒã«å¿ãã1ã10ã®çµåãæã€SELECTã§ãã
çŸåšãã¡ã€ã³ã¹ãã¬ãŒãžããŒã¿ããŒã¹ã§ããGreenplumã§åŠçãããããã¯ããã«é«éã«åŠçããããã«ããã®ãããªèŠæ±ãå¿ èŠã§ãã
ãŸããåæã«å®è¡ããããªã¯ãšã¹ãã®æ°ãåãªã¯ãšã¹ãã®å®è¡æéã«å€§ãã圱é¿ããªãããšãéèŠã§ããããã¯ã»ãŒäžå®ã§ããå¿ èŠããããŸãã
ç§ãã¡ã®æèŠã§ã¯ãã¿ãŒã²ããããŒã¿ããŒã¹ã«ã¯æ¬¡ã®æ©èœãå¿ èŠã§ãã
- æ°Žå¹³æ¹åã®ã¹ã±ãŒã©ããªãã£ã
- ããŒã«ã«çµåãå®è¡ããæ©èœ-ããŒãã«ã§ãæ£ãããé åžããŒã䜿çšãã
- ãã«ã¯ããŒã¿ã¹ãã¬ãŒãžã
- ãã£ãã·ã¥ãšå€§éã®å©çšå¯èœãªã¡ã¢ãªãæäœããæ©èœã
ã¿ãŒã²ããã·ã¹ãã ãžã®ããŒã¿ã®ããŒãã¯ãã¡ã€ã³ã¹ãã¬ãŒãžããŒã¿ããŒã¹ã§ããGreenplumããè¡ãããããšã«ãªã£ãŠãããããGreenplumããã¿ãŒã²ããããŒã¿ããŒã¹ã«ããŒã¿ãïŒå¥œãŸããã¯å¢åã§ïŒè¿ éãã€ç¢ºå®ã«é ä¿¡ããæ¹æ³ãæã€ããšãéèŠã§ãã
SAP BOãšçµ±åã§ããããšãéèŠã§ãã 幞ããªããšã«ãWindowsçšã®å®å®ããODBCãã©ã€ããŒãåããã»ãŒãã¹ãŠã®ãã®ããã®ã·ã¹ãã ã§ããŸãæ©èœããŸãã
å°ãããªãããéèŠãªèŠä»¶ã®ãã¡ããŠã£ã³ããŠæ©èœãåé·æ§ïŒç°ãªãããŒãã«ããŒã¿ã®è€æ°ã®ã³ããŒãä¿åããæ©èœïŒããããªãã¯ã©ã¹ã¿ãŒæ¡åŒµã®ã·ã³ãã«ããããã³äžŠåããŒã¿ããŒããåºå¥ã§ããŸãã
è©Šéšå°
åããŒã¿ããŒã¹ã«2ã€ã®ç©çãµãŒããŒãå²ãåœãŠãããŸããã
- 16åã®ç©çã³ã¢ïŒHTã§32åïŒ
- 128 GB OP
- 3.9 TBã®ãã£ã¹ã¯ã¹ããŒã¹ïŒ8ã€ã®ãã£ã¹ã¯ã®ãã¡RAID 5ïŒ
- ãµãŒããŒã¯10 Gbãããã¯ãŒã¯ã§æ¥ç¶ãããŠããŸãã
- åããŒã¿ããŒã¹ã®OSã¯ããã®ããŒã¿ããŒã¹ãã€ã³ã¹ããŒã«ããããã®æšå¥šäºé ã«åºã¥ããŠéžæãããŸããã OSãã«ãŒãã«ãªã©ã«ã€ããŠãåãããšãèšããŸãã
è©Šéšåºæº
- ãã¹ããªã¯ãšã¹ãã®å®è¡é床
- SAP BOãšçµ±åããæ©èœ
- ããŒã¿ãã€ã³ããŒãããããã®é«éã§é©åãªæ¹æ³ãæã€
- å®å®ããODBCãã©ã€ããŒã®ååš
- 補åãèªç±ã«é åžãããŠããªãå Žåã¯ãé©åãªæéå ã«ã¡ãŒã«ãŒã®äŒç€Ÿã®æ åœè ã«é£çµ¡ãããã¹ãã«å¿ èŠãªããŒã¿ããŒã¹ã®ã€ã³ã¹ããŒã«ïŒé åžïŒãååŸããããšãã§ããŸããã
ãã¹ãã«å«ãŸããDB
ã¿ã©ã
Greenplumã«éŠŽæã¿ã®å€ããŠåªããã 圌ã«é¢ããå¥ã®èšäºããããŸãã
å³å¯ã«èšãã°ãGreenplumã¯ã€ã³ã¡ã¢ãªããŒã¿ããŒã¹ã§ã¯ãããŸããããããŒã¿ãæ ŒçŽããXFSã®ç¹æ§ã«ãããç¹å®ã®æ¡ä»¶äžã§ãã®ããã«åäœããããšãå®éšçã«èšŒæãããŠããŸãã
ãããã£ãŠãããšãã°ãèªã¿åãæã«ã¡ã¢ãªã®éãååã§ãããèŠæ±ã«ãã£ãŠèŠæ±ãããããŒã¿ãæ¢ã«ã¡ã¢ãªã«ããå ŽåïŒãã£ãã·ã¥ãããŠããå ŽåïŒãããŒã¿ãåä¿¡ãããã£ã¹ã¯ã¯ãŸã£ãã圱é¿ãåããŸãã-Greenplumã¯ãã¹ãŠã®ããŒã¿ãã¡ã¢ãªããååŸããŸãã ãã®åäœã¢ãŒãã¯Greenplumã«åºæã®ãã®ã§ã¯ãªãããšãç解ããŠããå¿ èŠããããŸãããããã£ãŠãç¹æ®ãªã€ã³ã¡ã¢ãªDBã¯ïŒçè«çã«ã¯ïŒãã®ãããªã¿ã¹ã¯ã«ãããã察åŠããå¿ èŠããããŸãã
ãã¹ãçšã«ãGreenplumã¯ããã©ã«ãã§ã€ã³ã¹ããŒã«ããããã©ãŒãªãïŒãã©ã€ããªã»ã°ã¡ã³ãã®ã¿ïŒã ãã¹ãŠã®èšå®ã¯ããã©ã«ãã§ãããŒãã«ã¯zlibå§çž®ãããŠããŸãã
ã€ã³ããã¯ã¹ã¯ãªãã¯ããŠã¹
æåãªæ€çŽ¢å€§æã®åæããã³ãªã¢ã«ã¿ã€ã ã¬ããŒãçšã®ååãããDBMSã
補é å ã®æšå¥šäºé ãèæ ®ããŠDBMSãã€ã³ã¹ããŒã«ãããããŒã«ã«ããŒãã«ã®ãšã³ãžã³ã¯MergeTreeã§ãããåæ£ããŒãã«ã¯ããŒã«ã«ããŒãã«ã®äžã«äœæãããã¯ãšãªã«åå ããŸããã
SAP HANA
HANAïŒé«æ§èœANalyticsã¢ãã©ã€ã¢ã³ã¹ïŒã¯ãåæããã³ãã©ã³ã¶ã¯ã·ã§ã³ã®ã¯ãŒã¯ããŒãçšã®æ±çšããŒã«ãšããŠäœçœ®ä»ããããŠããŸãã ããŒã¿ãè¡ããšã«ä¿åã§ããŸãã 補åããŒã¹ã«å¿ èŠãªçœå®³åŸ©æ§ããã©ãŒãªã³ã°ãããã³è€è£œããããŸãã HANAã䜿çšãããšãããã·ã¥ãšå€ã®ç¯å²ã®äž¡æ¹ã§ãããŒãã«ã®ããŒãã£ã·ã§ã³ïŒã·ã£ãŒãïŒãæè»ã«æ§æã§ããŸãã
è€æ°ã¬ãã«ã®ããŒãã£ã·ã§ã³ãååšããå Žåãç°ãªãã¬ãã«ã§ç°ãªãã¿ã€ãã®ããŒãã£ã·ã§ã³ãé©çšã§ããŸãã 1ã€ã®ããŒãã£ã·ã§ã³ã«æ倧20åã®ã¬ã³ãŒããèšé²ã§ããŸãã
SAP HANAãœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ãã£
ãã®DBMSã®èå³æ·±ãæ©èœã®1ã€ã¯ã衚圢åŒã®ãã¢ã³ããŒãåªå 床ãèšå®ã§ãã1ãã10ãŸã§ã®ã¡ã¢ãªããã®ã¢ã³ããŒãã®åªå 床ã§ããããã«ãããã¡ã¢ãªãªãœãŒã¹ãšããŒãã«ãžã®ã¢ã¯ã»ã¹é床ãæè»ã«ç®¡çã§ããŸããããŒãã«ãã»ãšãã©äœ¿çšãããªãå Žåãæãäœãåªå 床ã«èšå®ãããŸãã ãã®å ŽåãããŒãã«ãã¡ã¢ãªã«ããŒããããããšã¯ã»ãšãã©ãªãããªãœãŒã¹äžè¶³ã§ã¢ã³ããŒããããæåã®ããŒãã«ã®1ã€ã«ãªããŸãã
ãšã¯ãµãœã«
ãã·ã¢ã®è£œåã¯ã»ãšãã©ç¥ãããŠããªããããŒã¯ããŒã¹ã§ãã ãã®DBMSã䜿çšããŠãã倧äŒæ¥ã®ãã¡ãBadooïŒHabré ã«ã€ããŠã®èšäºããããŸãïŒãšãååãããç¥ãããŠããéITäŒæ¥ã®æ°ç€Ÿã®ã¿ã皌åããŠããŸã-å®å šãªãªã¹ãã¯å ¬åŒWebãµã€ãã«ãããŸãã
ãã³ããŒã¯ãé åçãªé«éåæã森ã®äžã®ç³ã®å®å®æ§ãã³ãŒããŒã°ã©ã€ã³ããŒã¬ãã«ã§ã®ç®¡çã®å®¹æããçŽæããŸãã
Exasolã¯ãã®OS-ExaOSïŒCentOS / RHELã«åºã¥ããç¬èªã®GNU / Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ïŒã§å®è¡ãããŸãã DBMSã®ã€ã³ã¹ããŒã«ã¯ãæ¢æã®OSã«åå¥ã®ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããã®ã§ã¯ãªããããŠã³ããŒããããã€ã¡ãŒãžãšæå°éã®ã»ããã¢ããïŒããŒãã£ã·ã§ã³ãã£ã¹ã¯ããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ãPxEããŒããèš±å¯ããïŒããåå¥ã®ã©ã€ã»ã³ã¹ãã·ã³ïŒãã®å Žåã¯ä»®æ³ãã·ã³ïŒã«OSãã€ã³ã¹ããŒã«ãããããå°ãªããšãçããããšã§ãããŒã
ç°¡çŽ åãããExasolã¢ãŒããã¯ãã£
ãã®ã·ã¹ãã ã®å©ç¹ã¯ãããŒãïŒOSãã«ãŒãã«ãã©ã¡ãŒã¿ãŒããŸãã¯ãã®ä»ã®åã³ïŒã«äœãã€ã³ã¹ããŒã«ããå¿ èŠããªããããã¯ã©ã¹ã¿ãŒãžã®æ°ããããŒãã®è¿œå ãéåžžã«é«éã§ããããšã§ãã ãµãŒããŒãã€ã³ã¹ããŒã«ãããåãæ¿ããããç¬éïŒãã¢ã¡ã¿ã«ãOSãªãïŒããã30å以å ã«ããŒããã¯ã©ã¹ã¿ãŒã«å ¥ããããšãã§ããŸãã ãã¹ãŠã®ããŒã¿ããŒã¹ç®¡çã¯ãWebã³ã³ãœãŒã«ãä»ããŠå®è¡ãããŸãã éå°ãªæ©èœã§ãªãŒããŒããŒããããŠããŸããããåãæšãŠããããšåŒã¶ããšãã§ããŸããã
ããŒã¿ã¯ã¡ã¢ãªã«é£ç¶ããŠä¿åãããé©åã«å§çž®ãããŸãïŒå§çž®èšå®ã¯èŠã€ãããŸããã§ããïŒã
èŠæ±ãåŠçãããšãã«RAMãããå€ãã®ããŒã¿ãå¿ èŠãªå ŽåãããŒã¿ããŒã¹ã¯ãã£ã¹ã¯äžã®ã¹ã¯ããïŒã¹ãã«ïŒã®äœ¿çšãéå§ããŸãã ã¯ãšãªã¯å€±æããïŒããã«ã¡ã¯HanaãšmemSQLïŒãåäœãé ããªããŸãã
Exasolã¯ãã€ã³ããã¯ã¹ãèªåçã«äœæããã³åé€ããŸãã åããŠã¯ãšãªãäœæãããšãã«ãã¯ãšãªãã€ã³ããã¯ã¹ã§ããé«éã«æ©èœãããšDBMSãå€æããå Žåãã¯ãšãªã®åŠçããã»ã¹ã§ã€ã³ããã¯ã¹ãäœæãããŸãã ãã®ã€ã³ããã¯ã¹ã30æ¥éå¿ èŠãªãŠãŒã¶ãŒãããªãå ŽåãããŒã¿ããŒã¹èªäœãåé€ããŸãã
Memsql
mySQLã«åºã¥ãã€ã³ã¡ã¢ãªDBMSã ã¯ã©ã¹ã¿ãŒãåææ©èœããããŸãã ããã©ã«ãã§ã¯ãããŒã¿ãè¡ããšã«ä¿åããŸãã
ãããã¹ãã¬ãŒãžãäœæããã«ã¯ãããŒãã«ã®äœææã«ç¹å¥ãªã€ã³ããã¯ã¹ãè¿œå ããå¿ èŠããããŸãã
KEY `keyname` (`fieldaname`) USING CLUSTERED COLUMNSTORE
åæã«ãè¡ã¹ãã¢ããŒã¿ã¯åžžã«ã¡ã¢ãªã«æ ŒçŽãããŸãããã¡ã¢ãªãäžè¶³ããŠããå Žåãåã¹ãã¢ããŒã¿ã¯èªåçã«ãã£ã¹ã¯ã«ãã©ãã·ã¥ã§ããŸãã
é åžããŒã¯ãSHARD KEYãšåŒã°ããŸãã ã·ã£ãŒãããŒã®åãã£ãŒã«ãã«å¯ŸããŠbtreeã€ã³ããã¯ã¹ãèªåçã«äœæãããŸãã
åºæ¬ããŒãžã§ã³ã¯å®å šã«ç¡æã§ãããŒã¿ãšRAMã®éã«å¶éã¯ãããŸããã ææçã«ã¯ãé«å¯çšæ§ããªã³ã©ã€ã³ããã¯ã¢ãããšåŸ©å ãããŒã¿ã»ã³ã¿ãŒéã®ã¬ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒæš©å©ç®¡çããããŸãã
ç°¡ç¥åãããMemsqlã¢ãŒããã¯ãã£
ã€ã³ãã©
C ++ã§éçºãããSQLãšã³ãžã³ã§ããClouderaã¯ãApache Hadoopãšã³ã·ã¹ãã ã®äžéšã§ãã HDFSããã³HBaseã«ä¿åãããããŒã¿ãåŠçããŸãã ã¡ã¿ããŒã¿ãªããžããªãšããŠãHive DBMSã®äžéšã§ããHiveMetastoreã䜿çšããŸãã Hiveãšã¯ç°ãªããMapReduceã¯äœ¿çšããŸããã é »ç¹ã«äœ¿çšãããããŒã¿ãããã¯ã®ãã£ãã·ã¥ããµããŒãããŸãã
è¿ éãªå¿çãå¿ èŠãšããåæã¯ãšãªãåŠçããããã®DBMSãšããŠäœçœ®ä»ããããŠããŸãã åºæ¬çãªBIããŒã«ã䜿çšã§ããã ANSI SQLã®å®å šãµããŒãããŠã£ã³ããŠé¢æ°ããããŸãã
Impalaã¯ãClouderaãªããžããªã®ããã±ãŒãžããã³ããŒã»ã«ãšããŠå©çšã§ããŸãã ãã¹ãäžãé åžãããCloudera CDH 5.8.0ã䜿çšãããŸããã ã€ã³ã¹ããŒã«ã«ã¯ãImpalaã®æå°éã®ãµãŒãã¹ã»ããïŒZookeeperãHDFSãYarnãHiveïŒãéžæãããŸããã ã»ãšãã©ã®èšå®ã¯ããã©ã«ãã§äœ¿çšãããŠããŸããã Impalaã®å Žåãåèš160 GBã®ã¡ã¢ãªãäž¡æ¹ã®ãµãŒããŒããå²ãåœãŠãããŸããã Cgroupsã¯ãã³ã³ããã«ãããµãŒããŒãªãœãŒã¹ã®äœ¿çšçãå¶åŸ¡ããããã«äœ¿çšãããŸããã
ãã®èšäºã§æšå¥šãããŠããæé©åã¯ãã¹ãŠå®è¡ãããŸããã
-ããŒãã«ãHDFSã«ä¿åãã圢åŒãšããŠãå¯æšçŽ°å·¥ãéžæãããŸããã
-ãããå¯èœãªæé©åãããããŒã¿å;
-åããŒãã«ã®ä»¥åã«åéãããçµ±èšïŒèšç®çµ±èšïŒã
-ãã¹ãŠã®ããŒãã«ã®ããŒã¿ãHDFSãã£ãã·ã¥ã«èšé²ãããïŒããŒãã«...ããã£ãã·ã¥ããã...ã«èšå®ïŒ;
-æé©åãããçµåïŒå¯èœãªéãïŒã
èšç»ã®ãã¹ããšåå ã®ããã®DBMSã®æ±ºå®ã®åæ段éã§ãImpalaã¯æ°å¹Žåã«æ¢ã«äœæ¥ããŠããããã®æç¹ã§ã¯æ¬çªçšã«èŠããªãã£ããããImpalaã¯ç Žæ£ãããŸããã ããäžåºŠãæ¥çã®ååã¯ãã¢ã³ãããŒãã®æ¹åã«ç®ãåããããã«ç§ãã¡ã説åŸããéå»ã«åœŒå¥³ã¯éåžžã«ãããã«ãªããèšæ¶ãé©åã«æäœããããšãåŠãã ãšç¢ºä¿¡ããŸããã
Impalaã«é¢ãã詳现æ
å ±
æ§æïŒ
Impala Daemonã¯ãã¯ã©ã¹ã¿ãŒå šäœã§ã®åãå ¥ããåŠçã調æŽãé åžãããã³èŠæ±ã®å®è¡ã«åœ¹ç«ã€ã¡ã€ã³ãµãŒãã¹ã§ãã ODBCããã³JDBCã€ã³ã¿ãŒãã§ãŒã¹ããµããŒãããŸãã ãŸããCLIã€ã³ã¿ãŒãã§ãŒã¹ãšHueïŒHadoopã§ã®ããŒã¿åæçšã®Web UIïŒãæäœããããã®ã€ã³ã¿ãŒãã§ãŒã¹ãåããŠããŸãã åã¯ã©ã¹ã¿ãŒã¯ãŒã«ãŒã§ããŒã¢ã³ãšããŠå®è¡ãããŸãã
Impala Statestore-ã¯ã©ã¹ã¿ãŒã§å®è¡ãããŠããImpala Daemonã€ã³ã¹ã¿ã³ã¹ã®ã¹ããŒã¿ã¹ã確èªããããã«äœ¿çšãããŸãã Impala Daemonãããããã®ã¯ãŒã«ãŒã§å€±æãããšãStatestoreã¯æ®ãã®ã¯ãŒã«ãŒã®ã€ã³ã¹ã¿ã³ã¹ã«éç¥ãããããåºçºãããªãã©ã€ã³ã€ã³ã¹ã¿ã³ã¹ãžã®ãªã¯ãšã¹ãã¯éä¿¡ãããŸããã ååãšããŠãã¯ã©ã¹ã¿ãŒã®ãã¹ã¿ãŒããŒãã§åäœããŸããããªãã·ã§ã³ã§ãã
Impala Catalog Server-ãã®ãµãŒãã¹ã¯ãHiveMetastoreãHDFS NamenodeãHBaseããImpala DaemonããµããŒãããæ§é ã®åœ¢åŒã§ã¡ã¿ããŒã¿ãåä¿¡ããã³éçŽããããã«äœ¿çšãããŸãã ãã®ãµãŒãã¹ã¯ãããšãã°ãŠãŒã¶ãŒå®çŸ©é¢æ°ãªã©ãImpalaèªäœãæä»çã«äœ¿çšããã¡ã¿ããŒã¿ã®ä¿åã«ã䜿çšãããŸãã ååãšããŠãã¯ã©ã¹ã¿ãã¹ã¿ãŒããŒãã§åäœããŸãã
Impala Daemonã¯ãã¯ã©ã¹ã¿ãŒå šäœã§ã®åãå ¥ããåŠçã調æŽãé åžãããã³èŠæ±ã®å®è¡ã«åœ¹ç«ã€ã¡ã€ã³ãµãŒãã¹ã§ãã ODBCããã³JDBCã€ã³ã¿ãŒãã§ãŒã¹ããµããŒãããŸãã ãŸããCLIã€ã³ã¿ãŒãã§ãŒã¹ãšHueïŒHadoopã§ã®ããŒã¿åæçšã®Web UIïŒãæäœããããã®ã€ã³ã¿ãŒãã§ãŒã¹ãåããŠããŸãã åã¯ã©ã¹ã¿ãŒã¯ãŒã«ãŒã§ããŒã¢ã³ãšããŠå®è¡ãããŸãã
Impala Statestore-ã¯ã©ã¹ã¿ãŒã§å®è¡ãããŠããImpala Daemonã€ã³ã¹ã¿ã³ã¹ã®ã¹ããŒã¿ã¹ã確èªããããã«äœ¿çšãããŸãã Impala Daemonãããããã®ã¯ãŒã«ãŒã§å€±æãããšãStatestoreã¯æ®ãã®ã¯ãŒã«ãŒã®ã€ã³ã¹ã¿ã³ã¹ã«éç¥ãããããåºçºãããªãã©ã€ã³ã€ã³ã¹ã¿ã³ã¹ãžã®ãªã¯ãšã¹ãã¯éä¿¡ãããŸããã ååãšããŠãã¯ã©ã¹ã¿ãŒã®ãã¹ã¿ãŒããŒãã§åäœããŸããããªãã·ã§ã³ã§ãã
Impala Catalog Server-ãã®ãµãŒãã¹ã¯ãHiveMetastoreãHDFS NamenodeãHBaseããImpala DaemonããµããŒãããæ§é ã®åœ¢åŒã§ã¡ã¿ããŒã¿ãåä¿¡ããã³éçŽããããã«äœ¿çšãããŸãã ãã®ãµãŒãã¹ã¯ãããšãã°ãŠãŒã¶ãŒå®çŸ©é¢æ°ãªã©ãImpalaèªäœãæä»çã«äœ¿çšããã¡ã¿ããŒã¿ã®ä¿åã«ã䜿çšãããŸãã ååãšããŠãã¯ã©ã¹ã¿ãã¹ã¿ãŒããŒãã§åäœããŸãã
Googleããã¥ã¡ã³ãã®1ã€ã®ããŒãã«ã«åéããããç§ãã¡ã«ãšã£ãŠéèŠãªãã¹ãŠã®ããŒã¿ããŒã¹ã®ç¹æ§
倪åã®å Žå-Habr圢åŒã®åãããŒãã«ïŒæ³šæããŠãHabrã®åèšèšã«ãããå¹
ã®åºãããŒãã«ãå°ãã§ãèªããªããªããŸããïŒ
ã¿ã©ã | ãšã¯ãµãœã« | ã¯ãªãã¯ããŠã¹ | Memsql | æš¹è± | ã€ã³ãã© | |
ä»å ¥å | EMC | ãšã¯ãµãœã« | ã€ã³ããã¯ã¹ | Memsql | 暹液 | Apache / cloudera |
ããŒãžã§ã³ã§ äœ¿çš | 4.3.8.1 | 5.0.15 | 1.1.53988 | 5.1.0 | 1.00.121.00.1466466057 | 2.6.0 |
ãã¹ã¿ãŒããŒã | ãã¹ã¿ãŒã»ã°ã¡ã³ãã äºçŽæžã¿ã
| ãšã³ããªãã€ã³ã-ä»»æã®ããŒãã ã©ã€ã»ã³ã¹ããŒãããããäºçŽãããŠããŸãã | ãšã³ããªãã€ã³ã-ä»»æã®ããŒã | ãšã³ããªãã€ã³ã-ä»»æã®ããŒã | ãã¹ã¿ãŒããŒãããããŸãã äºçŽæžã¿ã | ãšã³ããªãã€ã³ã-ä»»æã®ããŒãã ãã ããHiveã¡ã¿ã¹ãã¢ãµãŒããŒãå¿ èŠã§ãã |
äœ¿çš OS | RHEL 6.7 | EXA OSïŒå°æïŒ | Ubuntu 14.04.4 | RHEL 6.7 | RHEL 6.7 | RHEL 6.7 |
å¯èœãªé | ã©ãã§ã | PXEããŒãããµããŒãããŠãã人 | ã©ãã§ã | ã©ãã§ã | SAPãªã¹ãããã®ã¿ | ã©ãã§ã |
Greenplumããã®ã€ã³ããŒã | å€éšhttpããŒãã« | å€éšhttpããŒãã«JDBCã€ã³ããŒã | å€éšhttpããŒãã« | ããŒã«ã«ãµãŒããŒSPARKããã®CSV | ããŒã«ã«ãµãŒããŒããã®CSV | å€éšGPHDFSããŒãã« |
SAP BOãšã®çµ±å ïŒãŠãããŒã¹ã®ãœãŒã¹ïŒ | ã¯ãODBC | ã¯ãODBC | ããŒã¿ãªã | ããŒã¿ãªã | ã¯ã | ã¯ãODBCSIMBA |
SASçµ±å | ã¯ããSAS ACCESS | ã¯ãODBC | ããŒã¿ãªã | ããŒã¿ãªã | ããŒã¿ãªã | ã¯ããSAS ACCESS |
ãŠã£ã³ããŠé¢æ° | ãããŸã | ãããŸã | ãã | ãããŸã | ãããŸã | ãããŸã |
ããŒãã«ããé åž | ãã£ãŒã«ãããš/ãã£ãŒã«ãããš | ãã£ãŒã«ãããš/ãã£ãŒã«ãããš | ãã£ãŒã«ãããš/ãã£ãŒã«ãããš | ãã£ãŒã«ãããš/ãã£ãŒã«ãããš | ãã£ãŒã«ãããš/ fieldsChardsã¯ããŒãã«ãã£ãŠæåã§åæ£ãããŸã | ã©ã³ãã ã« |
ã«ã©ã åçŽ | ãããŸã | ãããŸã | ãããŸã | ãã£ã¹ã¯äžã«ãã | ãããŸã | ã¯ãïŒå¯æšçŽ°å·¥ïŒ |
ãªã¯ãšã¹ãã®å®è¡æã« ååãªã¡ã¢ãªããªãå Žå | ããŒã¿ã¯ãã£ã¹ã¯ã«ã«ãããããŸã | ããŒã¿ã¯ãã£ã¹ã¯ã«ã«ãããããŸã | ãªã¯ãšã¹ããèœã¡ã | ãªã¯ãšã¹ããèœã¡ã | ãªã¯ãšã¹ããèœã¡ã | ããŒã¿ã¯ãã£ã¹ã¯ã«ã«ãããããŸã |
èéå®³æ§ | ãã©ãŒæ©æ§ããããŸã | ãã©ãŒæ©æ§ããããŸã | ã¯ããããŒãã«ã¬ãã«ã§ | ãããŸã | ãããŸã | ã¯ããHDFSã«ãã |
é åžæ¹æ³ | ãªãŒãã³ãœãŒã¹ãAPACHE-2 | ã¯ããŒãºãã³ãŒããææ | ãªãŒãã³ãœãŒã¹ãAPACHE-2 | ã¯ããŒãºãã³ãŒããç¡æ | ã¯ããŒãºãã³ãŒããææ | ãªãŒãã³ãœãŒã¹ãAPACHE-2 |
è©Šéšçµæ
ãã¹ãã§äœ¿çšããããã¹ããªã¯ãšã¹ãã®èª¬æãšããã¹ã
d_financial_account_not_additiveã®ã¯ãšãªããã¹ãçšã«éžæãããŸããã d_financial_account_not_additiveã¯ãæ¯æ¥ã®åã¢ã«ãŠã³ãã®ããŒã¿ãå«ããã¥ãŒã§ãã ãã¥ãŒã¯ããã£ã¹ã¯ã¹ããŒã¹ãæé©åããããã«å¿ããŠãã£ã¹ã¯ããèªã¿åãããã«ã3ã€ã®ããŒãã«ã«åºã¥ããŠäœæãããŸãã ãã¹ãã§ã¯ã2015幎ã®åãããæåã®100äžã¢ã«ãŠã³ãã®ããŒã¿ã®äžéšãéžæãããŸããã ããã¯5å2200äžè¡ããããã«è¶ ããŠããŸãã not_additiveã«ã¯ãã¢ã«ãŠã³ãïŒfinancial_accountïŒããã³ãªã¯ãšã¹ãïŒfinancial_account_applicationããã³application_calling_channelïŒã®ããŒã¿ãæ·»ä»ããŸãã GreenplumïŒããšãã°ïŒã§ã¯ãã»ã°ã¡ã³ãã®ååžã®ããŒãããŒãã«ã«èšå®ãããŸããã¢ã«ãŠã³ãã®å Žåãããã¯account_rkãã¢ããªã±ãŒã·ã§ã³ã®å Žåãfinancial_application_rkã§ãã ã¯ãšãªã§ã¯ãã¡ã€ã³ããŒãã«éã®çµåãåçã«çºçãããããç°ãªãããŒãã«ã®è¡ããšã®å€æ°ã®è¡ãæ¯èŒããå¿ èŠãããå Žåããã¹ããããã«ãŒããªãã§ããã·ã¥çµåãæåŸ ã§ããŸãã
ããŒã¿ã®ç·éã¯ãéå§çž®åœ¢åŒã§çŽ200 GBã§ããïŒããããªããŒãžã³ã®ãããã®ããªã¥ãŒã ã¯ãã¹ãŠã¡ã¢ãªã«åãŸããšäºæ³ãããŸãïŒã
䜿çšãããããŒãã«ã®è¡æ°ïŒ
d_financial_account_not_additiveã®ã¯ãšãªããã¹ãçšã«éžæãããŸããã d_financial_account_not_additiveã¯ãæ¯æ¥ã®åã¢ã«ãŠã³ãã®ããŒã¿ãå«ããã¥ãŒã§ãã ãã¥ãŒã¯ããã£ã¹ã¯ã¹ããŒã¹ãæé©åããããã«å¿ããŠãã£ã¹ã¯ããèªã¿åãããã«ã3ã€ã®ããŒãã«ã«åºã¥ããŠäœæãããŸãã ãã¹ãã§ã¯ã2015幎ã®åãããæåã®100äžã¢ã«ãŠã³ãã®ããŒã¿ã®äžéšãéžæãããŸããã ããã¯5å2200äžè¡ããããã«è¶ ããŠããŸãã not_additiveã«ã¯ãã¢ã«ãŠã³ãïŒfinancial_accountïŒããã³ãªã¯ãšã¹ãïŒfinancial_account_applicationããã³application_calling_channelïŒã®ããŒã¿ãæ·»ä»ããŸãã GreenplumïŒããšãã°ïŒã§ã¯ãã»ã°ã¡ã³ãã®ååžã®ããŒãããŒãã«ã«èšå®ãããŸããã¢ã«ãŠã³ãã®å Žåãããã¯account_rkãã¢ããªã±ãŒã·ã§ã³ã®å Žåãfinancial_application_rkã§ãã ã¯ãšãªã§ã¯ãã¡ã€ã³ããŒãã«éã®çµåãåçã«çºçãããããç°ãªãããŒãã«ã®è¡ããšã®å€æ°ã®è¡ãæ¯èŒããå¿ èŠãããå Žåããã¹ããããã«ãŒããªãã§ããã·ã¥çµåãæåŸ ã§ããŸãã
ããŒã¿ã®ç·éã¯ãéå§çž®åœ¢åŒã§çŽ200 GBã§ããïŒããããªããŒãžã³ã®ãããã®ããªã¥ãŒã ã¯ãã¹ãŠã¡ã¢ãªã«åãŸããšäºæ³ãããŸãïŒã
䜿çšãããããŒãã«ã®è¡æ°ïŒ
ããŒãã« | è¡æ° |
d_financial_account_date | 522726636 |
d_financial_account_data_bal | 229255701 |
Financial_account_application | 52118559 |
application_calling_channel | 28158924 |
d_financial_account_data_scd | 3494716 |
Financial_account | 2930425 |
currency_rates | 3948 |
dds_calendar_date | 731 |
loyalty_program_types | 35 |
éèæ©é¢ | 5 |
ãªã¯ãšã¹ãN1
SELECT date_trunc('year', d_financial_account_not_additive.business_dt) || '-' || date_trunc('month',d_financial_account_not_additive.business_dt) as yymm, d_financial_account_not_additive.business_dt, financial_account.financial_account_subtype_cd, case when d_financial_account_not_additive.ofn_balance_amt <0 then 1 else 0 end, loyalty_program_by_day.loyalty_program_type_nm, financial_account.currency_cd, sum(d_financial_account_not_additive.balance_amt*Table__14.rate), sum(d_financial_account_not_additive.balance_amt) FROM prod_emart.loyalty_program_types loyalty_program_by_day RIGHT OUTER JOIN prod_emart.d_financial_account_not_additive d_financial_account_not_additive ON (d_financial_account_not_additive.loyalty_program_type_rk=loyalty_program_by_day.loyalty_program_type_rk AND loyalty_program_by_day.valid_to_dttm > now()) INNER JOIN prod_emart.financial_account financial_account ON (financial_account.account_rk=d_financial_account_not_additive.account_rk) INNER JOIN ( SELECT r.currency_from_cd, r.currency_to_cd, r.rate, r.rate_dt FROM prod_emart.currency_rates r WHERE ( r.currency_to_cd='RUR' ) union all SELECT 'RUB', 'RUR', 1, d.calendar_dt FROM prod_emart.dds_calendar_date d ) Table__14 ON (Table__14.currency_from_cd=financial_account.currency_cd) WHERE ( Table__14.rate_dt=d_financial_account_not_additive.business_dt ) AND ( d_financial_account_not_additive.business_dt >= to_date(( 2016 - 2)::character varying ||'-01-01', 'YYYY-MM-DD') AND d_financial_account_not_additive.business_dt <= (current_date-1) AND financial_account.financial_account_subtype_cd IN ( 'DEP','SAV','SVN','LEG','CUR' ) ) GROUP BY date_trunc('year', d_financial_account_not_additive.business_dt) || '-' || date_trunc('month',d_financial_account_not_additive.business_dt), d_financial_account_not_additive.business_dt, financial_account.financial_account_subtype_cd, case when d_financial_account_not_additive.ofn_balance_amt <0 then 1 else 0 end, loyalty_program_by_day.loyalty_program_type_nm, financial_account.currency_cd
ãªã¯ãšã¹ãN2
select count(*) from (SELECT date_trunc('year', d_financial_account_not_additive.business_dt) || '-' || date_trunc('month',d_financial_account_not_additive.business_dt) as yymm, d_financial_account_not_additive.business_dt, financial_account.financial_account_subtype_cd, loyalty_program_by_day.loyalty_program_type_nm, application_calling_channel.appl_channel, case when ( financial_account_application.application_product_type )='010222' then 'Y' else 'N' end , case when ( financial_account_application.application_product_type )='020202' then 'Y' else 'N' end, case when financial_account.parent_account_rk is null then 'N' else 'Y' end, prod_emart.financial_institution.financial_institution_nm, sum(d_financial_account_not_additive.principal_balance_amt), sum(d_financial_account_not_additive.interest_balance_amt), sum(d_financial_account_not_additive.f2g_balance_amt), sum(d_financial_account_not_additive.f2n_balance_amt), sum(d_financial_account_not_additive.overdue_fee_balance_amt), sum(d_financial_account_not_additive.pastdue_gvt_balance_amt), sum(d_financial_account_not_additive.annual_fee_balance_amt), sum(d_financial_account_not_additive.sim_kke_balance_amt) FROM prod_emart.loyalty_program_types loyalty_program_by_day RIGHT OUTER JOIN prod_emart.d_financial_account_not_additive d_financial_account_not_additive ON (d_financial_account_not_additive.loyalty_program_type_rk=loyalty_program_by_day.loyalty_program_type_rk AND loyalty_program_by_day.valid_to_dttm > now()) INNER JOIN prod_emart.financial_account financial_account ON (financial_account.account_rk=d_financial_account_not_additive.account_rk) LEFT OUTER JOIN prod_emart.financial_account_application ON financial_account.financial_application_rk=financial_account_application.financial_application_rk LEFT OUTER JOIN prod_emart.application_calling_channel on financial_account.financial_application_rk=application_calling_channel.financial_application_rk LEFT OUTER JOIN prod_emart.financial_account parent_account ON (financial_account.parent_account_rk=parent_account.account_rk) LEFT OUTER JOIN prod_emart.financial_institution ON (financial_account.financial_institution=financial_institution.financial_institution) WHERE ( d_financial_account_not_additive.business_dt >= to_date('2014-01-01', 'YYYY-MM-DD') AND d_financial_account_not_additive.business_dt <= (current_date-1) AND ( financial_account.financial_account_subtype_cd IN ( 'CCR','INS','CLN','VKR','EIC' ) OR ( financial_account.financial_account_subtype_cd IN ( 'PHX' ) AND ( parent_account.financial_account_subtype_cd Is Null OR parent_account.financial_account_subtype_cd NOT IN ( 'IFS' ) ) ) ) ) GROUP BY date_trunc('year', d_financial_account_not_additive.business_dt) || '-' || date_trunc('month',d_financial_account_not_additive.business_dt), d_financial_account_not_additive.business_dt, financial_account.financial_account_subtype_cd, loyalty_program_by_day.loyalty_program_type_nm, application_calling_channel.appl_channel, case when ( financial_account_application.application_product_type )='010222' then 'Y' else 'N' end , case when ( financial_account_application.application_product_type )='020202' then 'Y' else 'N' end, case when financial_account.parent_account_rk is null then 'N' else 'Y' end, financial_institution.financial_institution_nm) sq
ãªã¯ãšã¹ãN3
SELECT date_trunc('year', d_financial_account_not_additive.business_dt) || '-' || date_trunc('month',d_financial_account_not_additive.business_dt) as yymm, d_financial_account_not_additive.business_dt, financial_account.financial_account_subtype_cd, case when ( prod_emart.financial_account_application.application_product_type )='010222' then 'Y' else 'N' end , d_financial_account_not_additive.risk_status_cd, case when financial_account.utilization_dt<=d_financial_account_not_additive.business_dt then 1 else 0 end, case when ( d_financial_account_not_additive.current_limit_amt) > 0 then 1 else 0 end, prod_emart.financial_institution.financial_institution_nm, --sum(d_financial_account_not_additive.credit_balance_amt), sum(d_financial_account_not_additive.principal_balance_amt), sum(d_financial_account_not_additive.current_limit_amt), count(d_financial_account_not_additive.account_rk), sum(case when d_financial_account_not_additive.current_limit_amt > 0 then d_financial_account_not_additive.principal_balance_amt / d_financial_account_not_additive.current_limit_amt end) FROM prod_emart.d_financial_account_not_additive INNER JOIN prod_emart.financial_account financial_account ON (financial_account.account_rk=d_financial_account_not_additive.account_rk) LEFT OUTER JOIN prod_emart.financial_account_application on financial_account.financial_application_rk=prod_emart.financial_account_application.financial_application_rk LEFT OUTER JOIN prod_emart.financial_institution ON (financial_account.financial_institution=prod_emart.financial_institution.financial_institution) WHERE ( d_financial_account_not_additive.business_dt >= to_date(( 2016 - 2)::character varying ||'-01-01', 'YYYY-MM-DD') AND d_financial_account_not_additive.business_dt <= (current_date-1) AND financial_account.financial_account_subtype_cd IN ( 'CCR','CLN','VKR','INS','EIC' ) AND case when financial_account.close_dt<=d_financial_account_not_additive.business_dt then 1 else 0 end IN ( 0 ) ) GROUP BY date_trunc('year', d_financial_account_not_additive.business_dt) || '-' || date_trunc('month',d_financial_account_not_additive.business_dt), d_financial_account_not_additive.business_dt, financial_account.financial_account_subtype_cd, case when ( prod_emart.financial_account_application.application_product_type )='010222' then 'Y' else 'N' end , d_financial_account_not_additive.risk_status_cd, case when financial_account.utilization_dt<=d_financial_account_not_additive.business_dt then 1 else 0 end, case when ( d_financial_account_not_additive.current_limit_amt) > 0 then 1 else 0 end, prod_emart.financial_institution.financial_institution_nm
ãªã¯ãšã¹ãT1
SELECT count(*) FROM ( SELECT * FROM prod_emart.d_financial_account_data_bal ) ALL INNER JOIN ( SELECT * FROM prod_emart.d_financial_account_date ) USING account_rk, valid_from_dt
ãªã¯ãšã¹ãT2
SELECT count(*) FROM prod_emart.d_financial_account_data_bal a JOIN prod_emart.d_financial_account_date b ON a.account_rk = b.account_rk AND a.valid_from_dt = b.valid_from_dt LEFT JOIN prod_emart.d_financial_account_data_scd sc ON a.account_rk = sc.account_rk AND b.scd_valid_from_dt = sc.scd_valid_from_dt;
D1ïŒ1åã®ãã«ã«ãç©ïŒ
-- - 291 157 926 408 select count(*) from (SELECT * FROM WRK.D_FINANCIAL_ACCOUNT_DATE) t1 INNER JOIN (SELECT * FROM WRK.D_FINANCIAL_ACCOUNT_DATE) t2 on t1.account_rk = t2.account_rk;
D2ïŒããã€ãã®åã®ãã«ã«ãç©ïŒ
select count(*) ,sum(t1.last_day_of_month_flg - t2.last_day_of_month_flg) as sum_flg ,sum(t1.business_dt - t2.valid_from_dt) as b1v2 ,sum(t1.valid_from_dt - coalesce(t2.scd_valid_from_dt,current_date)) as v1s2 ,sum(coalesce(t1.scd_valid_from_dt,current_date) - t1.business_dt) as s1b2 from prod_emart.D_FINANCIAL_ACCOUNT_DATE t1 INNER JOIN prod_emart.D_FINANCIAL_ACCOUNT_DATE t2 on t1.account_rk = t2.account_rk;
çµæã¯ã¯ãšãªå®è¡ã®ç§åäœã§è¡šç€ºãããŸãã
ãªã¯ãšã¹ã
| ã¿ã©ã
| ãšã¯ãµãœã«
| ã¯ãªãã¯ããŠã¹
| Memsql
| æš¹è±
| ã€ã³ãã©
|
N1
| 14
| <1
| -
| 108
| 6
| 78
|
N2
| 131
| 11
| -
| -
| 127
| ãšã©ãŒ
|
N3
| 67
| 85
| -
| -
| 122
| 733
|
T1
| 14
| 1.8
| 64
| 70
| 20
| 100
|
T2
| 17
| 4.2
| 86
| 105
| 20
| 127
|
D1
| 1393
| 284
| -
| 45
| 1500
| -
|
D2
| > 7200
| 1200
| -
| > 7200
| ãšã©ãŒ
| -
|
ããŒã¿ããŒã¹ã§èå¥ããããã¥ã¢ã³ã¹
ã€ã³ããã¯ã¹ã¯ãªãã¯ããŠã¹
ãã¹ãäžããã®ããŒã¿ããŒã¹ã¯ã¿ã¹ã¯ã«é©ããŠããªãããšãå€æããŸãã-ããŒã¿ããŒã¹ãžã®çµåã¯åç®äžã®ã¿è¡šç€ºãããŸãã ããšãã°ã次ã®ãšããã§ãã
- JOINã®ã¿ãé©åãªéšåãšããŠãµãã¯ãšãªã§ãµããŒããããŠããŸãã
- çµåã®æ¡ä»¶ã¯ããµãã¯ãšãªå ã«ã¹ããŒãããŸããã
- åæ£çµåã¯éå¹ççã§ãã
ãéãããªã¯ãšã¹ãïŒN1-N3ïŒãClickhouseæ§æã«æžãæããããšã¯ã»ãšãã©äžå¯èœã§ããããšãå€æããŸããã ã¡ã¢ãªå¶éãæ²æšã§ã-ãªã¯ãšã¹ãå ã®ãµãã¯ãšãªã®çµæã¯ãã¯ã©ã¹ã¿ã®1ã€ã®ïŒïŒïŒãµãŒããŒã®ã¡ã¢ãªã«åãŸãã¯ãã§ãã
ãã®ããŒã¿ããŒã¹ã¯BIã¿ã¹ã¯ã«é©ããªãããšãå€æãããšããäºå®ã«ããããããããã¹ãçµæã«ãããšãå¥ã®ãããžã§ã¯ãã®ãªããžããªã«ã¢ããªã±ãŒã·ã§ã³ãèŠã€ãããŸããã
ãããšã¯å¥ã«ãå ¬åŒWebãµã€ãã§å ¥æã§ããéåžžã«è©³çŽ°ã§äŸ¿å©ãªããã¥ã¡ã³ãïŒæ®å¿µãªãããããŒã¿ããŒã¹ã®äœ¿çšã«é¢ãããã¹ãŠã®åŽé¢ãç¶²çŸ ããŠããããã§ã¯ãããŸããïŒã«æ³šæãããã¹ãäžã®è³ªåã«å¯Ÿããè¿ éãªåçãããŠãããYandexéçºè ã«æè¬ããŸãã
SAP HANA
ãµãŒããŒæ§æãšã¯ãšãªã®æé©åã®å€§éšåã¯ããã·ã¢ã®SAPã代衚ããã³ã³ãµã«ãã£ã³ã°äŒç€Ÿã®ååã«ãã£ãŠè¡ãããŸããã ãããããªããã°ãããŒã¹ãèŠãŠãã®å©ç¹ãè©äŸ¡ããããšã¯ã§ããŸãããå®è·µã瀺ããŠããããã«ãHANAã®çµéšãå¿ èŠã§ãã
HANAã¯ãããèªäœã®çµåããŒãã«ã®è¡æ°ãã«ãŠã³ãããã®ã«éåžžã«èå³æ·±ãããšãå€æããŸããã
HANAã®çµåããŒãã«èªäœã䜿çšããEXPLAINã¯ãšãª
ãªããã£ãã€ã¶ãŒã¯ãçµåãå®è¡ããªããŠããçµ±èšã䜿çšããŠçµæãèšç®ããŸãã ããã¯è¯ãããªãã¯ã§ãããããšãã°ã1 = 1ããªã©ãåžžã«Trueã§ããæ¡ä»¶ãè¿œå ãããšãããªãã¯ã¯æ©èœãããGreenplumãšã»ãŒåã25åãåŸãããŸãã
çŸæç¹ã§ã¯ãHANAã¯ãªã¯ãšã¹ãã®å®è¡æã«äžéã¯ãšãªçµæããã£ã¹ã¯ã«é 眮ã§ããŸããã ãããã£ãŠãååãªã¡ã¢ãªããªãå Žåãã»ãã·ã§ã³ã¯çµäºãããŠãŒã¶ãŒã¯çµæãªãã§æ®ããŸãã
ãã¹ãããã»ã¹äžã«å€æããããã«ãçµåã«åå ããŠãã2ã€ã®ããŒãã«ã®ããŒã¿ãã¯ã©ã¹ã¿ãŒããŒãå šäœã«æ£ããåæ£ãããŠããå Žåã§ããå®éã«ã¯1ã€ã®ã¯ã©ã¹ã¿ãŒããŒãã®ã¿ã§çµåãå®è¡ãããŸãã èŠæ±ãå®è¡ããåã«ãã¯ã©ã¹ã¿ãŒå šäœããã®ããŒã¿ã1ã€ã®ããŒãã«åçŽã«æ³šãããããã§çµåãæ¢ã«èšç®ãããŠããŸãã ãã¹ãã«å²ãåœãŠãããæéã§ã¯ããã®ããžãã¯ãç¡å¹ã«ããŠãããŒã«ã«ã§çµåãå®è¡ããããšã¯äžå¯èœã§ããã
ã¡ãªã¿ã«ãã¡ãŒã«ãŒã¯ãå¯èœã§ããã°ããã¹ãã®çµæã«ãã£ãŠç¢ºèªãããã·ã³ã°ã«ã¢ãŒãããŒã¿ããŒã¹æ§æã䜿çšããããšãæšå¥šããŠããŸãã2å°ã®ãã·ã³ã®æ§æãæé©ã«æ©èœãããããšã¯ã1å°ã®äœåãå°é£ã§ãã
ãšã¯ãµãœã«
ããŒã¿ããŒã¹ã䜿çšããäž»ãªå°è±¡ã¯ãããã«é©ãã»ã©å®å®ããŠåäœããããšã§ãã ã»ãšãã©ãã¹ãŠã®ãã¹ãã¯ãä»ã®DBMSãšæ¯èŒããŠé床ãåªããŠããããšã瀺ããŠããŸãã ãã ããä»ã®å€ãã®DBMSãšã¯ç°ãªããããã¯ãã©ãã¯ããã¯ã¹ã§ããsshãä»ããŠããŒãã«æ¥ç¶ããiotopãhtopãªã©ãå®è¡ããæ©äŒãããããŸããã
ãã¡ãããç¬èªã®ãµãŒããŒãå¶åŸ¡ã§ããªããããè² æ ãããããŸãã å ¬å¹³ã§ã¯ãããŸãããããŒã¹ã®åäœãšã¢ã€ãã³ã®è² è·ã«é¢ãããã¹ãŠã®å¿ èŠãªããŒã¿ã¯ãããŒã¹å ã®ã·ã¹ãã ãã¥ãŒã«ããããšã«æ³šæããŠãã ããã
JDBCãODBCãã©ã€ããŒãANSI SQLã®åªãããµããŒããããã³Oracleã®ç¹å®ã®æ©èœããããŸãïŒäŸãšããŠããã¥ã¢ã«ãã1ã€ãéžæããŸãïŒã å€éšããŒã¿ããŒã¹ïŒOracleãPostgreSQLãMySQLãªã©ïŒã«æ¥ç¶ããããã®JDBCãã©ã€ããŒã¯æ¢ã«ããŒã¿ããŒã¹ã«çµã¿èŸŒãŸããŠãããããããŒã¿ã®ããŒãã«éåžžã«äŸ¿å©ã§ãã
EXASOLã§ã¯ãå®äºãããªã¯ãšã¹ãã®ã¿ã®ãã©ã³ã衚瀺ã§ããŸãã ããã¯ãäžéçµæãåæããããšã«ãããå®è¡äžã«å®è¡äžã«èšç»ãäœæãããããã§ãã å€å žçãªExplainããªããŠãäœæ¥ã«å¹²æžããããšã¯ãããŸããããããæ £ã芪ããã§ããŸãã
éãã䟿å©ã§ãå®å®ããŠãããé·ããã¥ãŒãã³ã°ã¯å¿ èŠãããŸãã-èšå®ããŠå¿ããŠãã ããã äžè¬ã«ãäžéšã¯ãã¹ãŠæ£ããã§ãã ãããããã©ãã¯ããã¯ã¹ã¯é©ãã¹ããã®ã§ãã
ãŸãããµããŒãã®åŠ¥åœæ§ã«çæããããšæããŸããããã¯ããã¹ãŠã®è³ªåã«å³åº§ã«åçããŸããã
Memsql
ç°¡åãã€è¿ éã«é 眮ãããŸãã 管çè ã¯çŸããã§ãããããŸãè³¢ãã¯ãããŸããã äŸïŒã¯ã©ã¹ã¿ãŒã«ããŒããè¿œå ããããšã¯ã§ããŸããã管çããã«ããåé€ããããšã¯ã§ããŸãã/é£ãã/ãããã«ãã çŸåšããã³å®äºãããªã¯ãšã¹ãã衚瀺ã§ããŸããããããã«é¢ãã詳现ã¯è¡šç€ºã§ããŸããã
memsql adminã§ã¯ã1ç§ãããã®ã¬ã³ãŒãæ°ããã€ãŒãã§ããŸã
MemSQLã¯äœæ¥äžã«ããã»ããµãããŒãããã®ã倧奜ãã§ãã¡ã¢ãªãªãŒããŒãããŒã«ãããšã©ãŒã¯ã»ãšãã©ãããŸããã§ããã
MemSQLã¯ã2ã€ã®ããŒãã«ãçµåããåã«ãçµåããŒã«ããåããŒãã£ã·ã§ã³åïŒããŒãã«ããããŒã¿ã®åé åžïŒãè¡ããŸãã
ãã®å Žåãè€éãªã·ã£ãŒãããŒïŒaccount_rkãvalid_from_dtïŒã䜿çšããŠdata_balããã³dateããŒãã«ãä¿åã§ããŸããscdããŒãã«ã®ã·ã£ãŒãã£ã³ã°ããŒã¯ïŒaccount_rkãscd_valid_from_dtïŒã§ãã ãã®å Žåãdata_balãšdateã®éã®æ¥ç¶ã¯ããã«çºçãããªã¯ãšã¹ããå®è¡ããããšãããŒã¿ã¯account_rkãšscd_valid_from_dtã«ãã£ãŠåé åžããã次ã®ã¹ãããã§ã¯account_rkã«ãã£ãŠFinancial_accountããŒãã«ã«æ¥ç¶ãããŸãã ãµããŒãã«ãããšãåããŒãã£ã·ã§ã³åã¯éåžžã«æéã®ãããæäœã§ãã
ãããã£ãŠãå€æ°ã®å€æ§ãªçµåã®ããã«ãããŒã¿ããŒã¹ã«å¯Ÿããã¯ãšãªã¯å°é£ã§ããããšãå€æããŸããã Greenplumã§ã¯ããªã¹ããããããŒãã«éã®çµåã¯ããŒã«ã«ã§çºçãããããããŒããä»ããŠåé åžããããšãªããããé«éã«ããããããåé åžã¢ãŒã·ã§ã³ããšåŒã°ããŸãã
äžè¬ã«ãMemSQLã¯MySQLããã®ç§»è¡ã«æé©ãªDBMSã§ãããæãè€éãªåæã§ã¯ãªãããã§ãã
ã€ã³ãã©
Impalaãå«ãClouderaã¯ã©ã¹ã¿ãŒã®ã€ã³ã¹ããŒã«ã¯ãéåžžã«ã·ã³ãã«ã§ãååã«ææžåãããŠããŸãã
ãã ããImpalaã¯ä»ã®ããŒã¿ããŒã¹ãšæ¯èŒããŠé床ã«éãã¯ãªãããšã«æ³šæããŠãã ãããããšãã°ãd_financial_account_not_additiveã®countïŒ*ïŒãã«ãŠã³ãããã¯ãšãªã¯ãImpalaã§3.5åéæ©èœããŸãããæ°åç§ä»¥äžã
ãŸããèå³æ·±ãå®éšãå®æœããŸãããåã«æžããããã«ãd_financial_account_not_additiveãã¥ãŒã«ã¯2ã€ã®çµåããããŸãã ããããã«ãaccount_rkã«ããããŒã¿åæŽæ°ã®æ¥ç¶ãšãããŒã¿åã®æ¥ä»ãæã€ãã£ãŒã«ãã«ããæ¥ç¶ããããŸãã Impalaã«ã¯æ¥ä»ããŒã¿åããªããããã¿ã€ã ã¹ã¿ã³ãã䜿çšããŸããã èå³ãåŒãããã«ãã¿ã€ã ã¹ã¿ã³ãã¯ãunixã¿ã€ã ã¹ã¿ã³ããå«ãbigintã«çœ®ãæããããŸããã ã¯ãšãªçµæã¯ããã«æ¹åãããŸããã 次ã®ã¹ãããã§ã¯ãaccount_rkããã®ããŒã¿ãšæ¥ä»ãã£ãŒã«ãvalid_from_dtããã³scd_valid_from_dtãçµã¿åãããŠã1ã€ã®ãã£ãŒã«ãã®ã¿ã«çµåãæäŸããŸããã ããã¯ç°¡åãªæ¹æ³ã§è¡ãããŸããã
account_valid_from = account_rk * 100000 + cast(unix_timestamp(valid_from_dt)/86400 as int)
1ã€ã®ãã£ãŒã«ãã«åå ãããšãçŽ30åã®ã²ã€ã³ãåŸãããŸããããããã«ããŠããä»ã®DBMSã®æ°åã§ãã
åºæ¬çãªã¯ãšãªã¯æ°åé·ãæ©èœããŸããã N2 - , .
Impala hash-, .
çµè«ã®ä»£ããã«
« - -, â
, , , BI-.
, :
â
â (aka 4etvegr)
â
â (aka kapustor)
, , Virtua Hamster ( Sega 32).