ç§ã¯ããã«ããªãã«èŠåããŸããããã€ãã®ããšã誀解ããããã€ãã誀解ããå¯èœæ§ããããŸãã ãããããªãã«ãšã£ãŠéèŠãªå Žå-ãã®æçš¿ãèªãã§ã¯ãããŸãããã次ã®äŒè°ã«çŽæ¥æ¥ãŠãã ããïŒ
1æ¥ç®
VKontakteã³ã³ãã³ãã®ä¿åãšé ä¿¡
ã¬ããŒãã¯ã2幎åãPaKo Durovã«VKontakteããŠãŒã¶ãŒããŒã¿ãã©ã®ããã«ä¿åããããå°ãããšãã®è©±ããå§ãŸããŸããã ãã®æ¥ããã·ã£ã¯ããã£ã¹ã¯ã§ããšçããã ãã以æ¥ãç§ã¯åœŒã奜ãã§ã¯ãããŸãã:)ä»åããªã¬ã°ïŒã¹ããŒã«ãŒïŒã¯ãã®è³ªåã«å®å šã«çããããšãçŽæãã圌ã«ã¬ããŒãå šäœãæ§ããŸããã
æåã¯ããã¹ãŠã®ãã¡ã€ã«ïŒåçïŒã¯ã¢ããããŒããã©ã«ããŒå ã®ã³ãŒããšåããµãŒããŒã«ä¿åãããŠããŸããã ãã®ã¢ãããŒãã¯åçŽã§ãããã»ãã¥ãªãã£ïŒã³ãŒãã€ã³ãžã§ã¯ã·ã§ã³ãXSSïŒãšã¹ã±ãŒã©ããªãã£ãšãã2ã€ã®æ¬ é¥ããããŸãã
ããã«ããã¡ã€ã«ã¯ã¡ã€ã³ãµãŒããŒã«ã¢ããããŒããããŠãããè£å©ïŒãŠãŒã¶ãŒããŒã¿çšã«ç¹å¥ã«èšèšãããïŒã«è»¢éããããšããã¹ããŒã ãçµç¹ããããšã«ãããã¹ã±ãŒã©ããªãã£ã«å°æããŸããã
åãŠãŒã¶ãŒã¯ããŠãŒã¶ãŒIDã§èå¥ãããåãè£å©ãµãŒããŒã«åžžã«å¯Ÿå¿ããŠããŸãã
ãã ãããã®ã¢ãããŒãã«ã¯ããã«ããã¯ããããŸã-ã¡ã€ã³ãµãŒããŒã
ãããã£ãŠã次ã®æé ã¯ãã¢ããªã±ãŒã·ã§ã³ã§ã¡ã€ã³ãµãŒããŒã䜿çšããã«ãã³ã³ãã³ããµãŒããŒã«ãã¡ã€ã«ãçŽæ¥ã¢ããããŒãããããšã§ããã ãã ãããã®ã¢ãããŒããå®è£ ããã«ã¯ãã©ã®ãµãŒããŒã§åçãã¢ããããŒãããã®ããšãã質åã«çããå¿ èŠããããŸãã
- ã·ã¹ãã ã«æåŸã«è¿œå ããããµãŒããŒã«è¿œå ããŸãïŒãµãŒããŒã¯ããã«ã¹ããŒã¹ã䜿ãæãããããé©åããŸããïŒã
- æã空ãã®ãããµãŒããŒïŒãã¹ãŠã®ãã©ãã£ãã¯ããµãŒããŒã«ãã³ããããããé©åããŸããïŒ;
- ã©ã³ãã ã«ç¡æã®ãµãŒããŒïŒæè¯ïŒ;
ããã«ããã¯ãæ€çŽ¢ããŠæé€ããŸãã éåžžãããã«ããã¯ã¯1ã€ã§ã-ãããšæ¯èŒããŠãã·ã¹ãã å ã®æ®ãã®ããŒãã¯ã¯ããã«ããæ©èœããŸãã 倧éã®ãŠãŒã¶ãŒããŒã¿ãä¿åãããšãã®ããã«ããã¯ã¯æ¬¡ã®ãšããã§ãã
- ããŒã¿ããã¯ã¢ããïŒ2ã€ã®ãã£ã¹ã¯ã®ã¢ã¬ã€å šäœãçãå°œããå ŽåãRAIDã䜿çšãããŸã-ãŠãŒã¶ãŒãã¡ã€ã«ã¯æ°žä¹ ã«å€±ãããŸãïŒ;
- ãã£ãã·ã¥ïŒã³ã³ãã³ãã®60ïŒ ãã¯ã©ã€ã¢ã³ãã®ãã£ãã·ã¥ããååŸãããŸãïŒ;
- ãã©ãã£ãã¯ïŒç¹ã«ãããªã®å Žåããœãªã¥ãŒã·ã§ã³ã¯CDNã§ããã¢ã¹ã¯ã¯ã®VKontakteã«ã¯ããµã³ã¯ãããã«ãã«ã¯ã®ããŒã¿ã»ã³ã¿ãŒããã®ãããªããã£ãã·ã¥ãããµãŒããŒããããŸãïŒã
䜿çšããããã¡ã€ã«ã·ã¹ãã ã¯XFSã§ãã ãã ãããŠãŒã¶ãŒãã¡ã€ã«ã¯ãã¡ã€ã«ã·ã¹ãã ã§ã¯ãªãã1ã€ã®å€§ããªãã¡ã€ã«ã«ä¿åãããŸãã ãã¡ã€ã«ã¯åžžã«èªã¿åãçšã«éããããã¡ã€ã«ã€ã³ããã¯ã¹ã¯RAMã«ä¿åãããŸãã ç©çã¡ãã£ã¢ããã®å®å šãªæœè±¡åã«ããããã®æè¡ã®ãããªãçºå±ãèŠãããŸãã
WiFiãåºãæ®åããŠãããšããäºå®ãèæ ®ããŠãVKontakteã¯HTTPSã«åãæ¿ããŠããŸãã ã³ã³ãã³ããåãããµãŒããŒã¯å€æ°ãããããåãµãŒããŒã®èšŒææžãè³Œå ¥ããããšã¯ã§ããŸããïŒé«äŸ¡ãããŸãïŒã ãããã£ãŠãVKontakteã«ã¯ãHTTPSãä»ããŠã³ã³ãã³ãããããã·ãããµãŒããŒãããã€ããããŸãã
åçã¯ã©ãã§ããïŒ
- åèš30,000,000,000ãè¶ ãã1æ¥ããã17,000,000ãè¿œå ãããŸãã
- ç»åã¯ã¯ã©ã€ã¢ã³ãåŽïŒFlashïŒã§äºåã«å§çž®ãããŠããŸãã
- ã°ã©ãã£ãã¯ããžãã¯ã䜿çšããŸãã
- åçãä¿åãããšãå¿ èŠãªãã¹ãŠã®èš±å¯ã®ããã«ããã«ã«ãããããŸãã
é³å£°ã«ã€ããŠïŒ
- 1æ¥ããã130Kãè¿œå ãããŸãã
- ãŠãŒã¶ãŒã¯ãä»ã®ããŒãžã®ããŒã¿ãèªåèªèº«ã«ãè¿œå ãããããšãã§ããŸããããã«ãããããŠã³ããŒãããããªãŒãã£ãªã®éãå€§å¹ ã«åæžãããŸãã
- èäœæš©ææè ã®èŠæ±ã«ããããã¡ã€ã«ã¯æåã«md5ããã·ã¥ã«ãã£ãŠæ€çŽ¢ãããŸããã çŸåšãããã€ãã®ãªãŒãã£ãªç¹æ§ã«ãã£ãŠåæ§ã®ãªãŒãã£ãªã¬ã³ãŒããèŠã€ããã¢ã«ãŽãªãºã ãéçºãããŸããã
ãããªã«ã€ããŠïŒ
- 1æ¥ããã320Kãè¿œå ãããŸãã
- ãã¥ãŒãä»ããé 延ãããªåŠçã䜿çšãããŸã-ãããªããªã³ã©ã€ã³ã§åŠçããã«ã¯é«ãããŸãã
- ffmpegã¯ãããªåŠçã«äœ¿çšãããŸãã
- ä»ã®ãŠãŒã¶ãŒããªããŒããããšãããªãè€è£œãããŸã-ããã¯åé¡ã§ã¯ãããŸããã
- ãã€ãŠãVKontakteã«ã¯ãã©ãã·ã¥äžã®ãããªçšã®P2PããããŸããïŒwatïŒïŒïŒã
äžè¬çã«ãç§ã¯é£çµ¡ãæ¯èŒçç°¡åã§ãããšæããŸããã ã·ã³ãã«ã ãå¹æçã
é«è² è·ãããžã§ã¯ãã®NoSQL
NoSQLãMambaã§ã©ã®ããã«äœ¿çšãããŠããããå ±åããŸãã åé¡ã®ã·ã¹ãã ã®æ©èœã¯ãå®è¡ãããã¯ãšãªã®30ïŒ ä»¥äžãã€ã³ã¯ãªã¡ã³ããšã«ãŠã³ã¿ã®èªã¿åãã§ããããšã§ãã
Memcacheã䜿çšããŠãããŒã¿ã«é©ããã¹ãã¬ãŒãžã®æ€çŽ¢ãéå§ããŸããã æ°žç¶æ§ãšRAMã®ã¿ã®äžè¶³ã«æºè¶³ããŠããŸããã è©Šããã©ãžã¢ã³-RAMã®ã¿ã
ããã«ãè² è·ã倧ããå ŽåãMemcachedã®ããã©ãŒãã³ã¹ã¯100åäœäžããŸãïŒè² è·ã®ãã¹ãã«ã¯ãBrutisããŒã«ã䜿çšãããŸããïŒã
ã©ããããã®éãç°¡æœã«ã圌ãã¯TokyoTyrantã䜿ãããã«ãªããŸããã ãããã圌ã¯çªç¶ãµãŒããŒã®é»æºãåã£ããšãã«ããŒã¿ããŒã¹ã®æŽåæ§ã«é¢ããåé¡ãçºèŠããŸãã:)ãããã¯TokyoTyrant-KoytotTycoonã®äœè ã«ããæ°ããéçºã«ãã£ãŠè§£æ±ºãããŸããã ãã ããã¢ãŒããã¯ãã£äžã®å¶éã«ããã30MããŒã¿ããŒã¹ã«æžã蟌ãããšã¯ã§ããŸããã§ããã
ãããã£ãŠã圌ãã¯GoogleããLevelDBã®æ¹åã«é²ã¿ãŸããã ãã®ããŒã¿ããŒã¹ã¯LSMããªãŒæè¡ã䜿çšããŠããŸãã ããŒã¿ã¯SSTableãã¡ã€ã«ã«æ ŒçŽãããŸãïŒãœãŒããããäžå€ã®ããŒãšå€ã®ãã¢ã
ããŒã¿ã¯ãRAMå ã®åæ§ã®ïŒãã ãæ¢ã«å€æŽå¯èœãªïŒæ§é ã«æžã蟌ãŸããŸãã ã¡ã¢ãªãããã£ã¹ã¯ãžã®ãµãããªãŒã¯æã ããŒãžãããŸãã
çªç¶ã®åé»ã®å Žåã«åé¡ããã£ããããªãããã«-å è¡ãã°ã®æžã蟌ã¿ãæžã蟌ãŸããŸãã
圌ãã¯ããäžåºŠãã¹ããè¡ããã»ãšãã©ã®å ŽåãLevelDBã©ã€ãã©ãªã以åã«äœ¿çšããããã¹ãŠã®ãªãã·ã§ã³ãããåªããŠããããšãçºèŠããŸããã çŸåšã4700 get /ç§ãš1600 update /ç§ãä¿æããããŒã¿ããŒã¹å ã®200Mã¬ã³ãŒããä¿æããŠããŸãã
ãã¹ã¯ãããŠããªãMVCC
MultiVersion Concurency Controlã¯ããªãŒããŒãæžã蟌ã¿ããããã¯ããããªãŒããŒãæžã蟌ãããšãå¯èœã«ããã¡ã«ããºã ã§ãã äžè¬ã«ãããŒã¿ããŒã¹å ã®ããã¯ã®æ°ãå€§å¹ ã«åæžããŸãã ãªã©ã¯ã«ãMysql InnoDBãPostgreSQlãªã©ã«ååšããŸãã
MVCCããŒãã«ã®åã¬ã³ãŒãã«ã¯2ã€ã®å±æ§ããããŸããcreatonïŒxminïŒ-ã¬ã³ãŒããäœæããããã©ã³ã¶ã¯ã·ã§ã³ã®æ°ãexpirationïŒxmaxïŒ-ã¬ã³ãŒããåé€ããããã©ã³ã¶ã¯ã·ã§ã³ã®æ°ã
INSERT xmin 40ãxmax Null åé€xmin 40ãxmax 47 æŽæ°xmin 64ãxmax 78 / xmin 78ãxmax NUll
åã¹ããŒãã¡ã³ããå®è¡ããããšãMVCCã¹ãããã·ã§ãããäœæãããŸããããã«ãããããŒã¿ããŒã¹å ã®ã©ã®ããŒã¿ãã¹ããŒãã¡ã³ãã«å¯ŸããŠå¯èŠ/ã¢ã¯ã»ã¹å¯èœãã決ãŸããŸãã
æååã®å¯èŠæ§ã決å®ããã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
- æåŸã«å®äºãããã©ã³ã¶ã¯ã·ã§ã³ïŒçŸåšïŒã®çªå·ãååŸããŸãã
- 以äžã®ã¬ã³ãŒãã衚瀺ããããšèããŸãã
- xmin <çŸåšã®æ°;
- ãããã¯åé€ãããŸããïŒxmax = nullïŒããŸãã¯ããããåé€ããããã©ã³ã¶ã¯ã·ã§ã³ã¯å ¬éãããŸããã
xminããã³xmaxãã£ãŒã«ãã¯åããŒãã«ã«ãããŸãããããã©ã«ãã§ã¯é衚瀺ã«ãªã£ãŠããŸãã ãã ããéžæã§åžžã«æ瀺çã«æå®ããããšãã§ããŸãïŒ SELECT xminãxmaxã* FROM test ;
SELECTã¯ãšãªtxid_currentïŒïŒã䜿çšããŠãçŸåšã®ãã©ã³ã¶ã¯ã·ã§ã³ã®IDãååŸã§ããŸãã ãã®ã¯ãšãªã¯ãpg_clogããŒãã«ããããŒã¿ãéžæããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ã®ããŒã«ããã¯ã¯ãé©åãªããŒã¯ã³ãèšå®ããã ãã§ããã®ããŒãã«ã«ãã©ã³ã¶ã¯ã·ã§ã³ãèšé²ããããšãç解ããããšãéèŠã§ãã åæã«ããŒã¿ã¯åé€ãããŸããã ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãåã«ããŒã«ããã¯ããããšããŒã¯ãããŸãã
éMVCC DBMSã§ã¯ãã¬ã³ãŒããå€æŽãŸãã¯åé€ãããšãã«ããŒã¿ãçŽæ¥å€æŽããå¿ èŠããããŸãã MVCC DBMSã«ã¯ãã®åé¡ããããŸãã-ç¡é¢ä¿ãªããŒã¿ã¯ãã¹ãŠé 延ããŠæ¶å»ãããŸãã
ããã§ãé 延ã¯ãªãŒãã³ã°ïŒããããVACUUMïŒã¯ç§ãã¡ãæãã»ã©å®ç§ã§ã¯ãªãããšãèªåããä»ãå ããããšæããŸã...ããããããã¯å¥ã®è°è«ã®ãããã¯ã§ãã
ãšããã§ãããã«åœŒãå€ãã®èå³æ·±ãèšäºãçŽæããã¹ããŒã«ãŒã®ãµã€ãããããŸãã
Googleäžã®MySQL
ãããããã¬ããŒãã®äžã§æ倧ã®å€±æã èŠããã«ããã®æ¬è³ªã¯1ã€ã®è«æã«èŠçŽãããŸãïŒãã¯ããMySQLã¯ç§ãã¡ã«ãã£ãŠå°ãããããããŠããŸããã
éå°ãªèŠæ±ããããããããŸããããGood Corporationã«ã¯ãã£ãšé¢çœããã®ãæåŸ ããŠããŸããã
æ倧ã®ãããžã§ã¯ãïŒåºåãCheckoutããããŠãã¡ããYouTubeã
ããŒã¿ã»ã³ã¿ãŒã§ã¯ãæãé«äŸ¡ãªããŒããŠã§ã¢ã§ã¯ãªããæããé«åºŠãªãããŒããŠã§ã¢ã䜿çšãããŸãã ã³ã³ããŒãã³ãïŒãã£ã¹ã¯ïŒã¯éåžžã«é »ç¹ã«äœ¿çšã§ããªããªããŸãããç°¡åãã€å®äŸ¡ã«äº€æã§ããŸãã
MySQLã¯ã¯ã©ã¹ã¿ãŒãšããŠäœ¿çšãããŸãã åã·ã£ãŒãã«ã¯ãåå¥ã®ããã»ã¹ïŒæ±ºå®ïŒããããå€ããã¹ã¿ãŒãèœã¡ãå Žåã«æ°ãããã¹ã¿ãŒãéžæããŸãã
ããŒãããŒãã¯ãããã€ãã®ããŒã¿ããŠã£ã¶ãŒãã«æžã蟌ã¿ãã¬ããªã«äžã®ãã®ååšããã§ãã¯ããåçŽãªã¹ã¯ãªããã«ãã£ãŠå®è¡ãããŸãã
ã¹ã±ãŒãªã³ã°ãšãã©ãŒã«ããã¬ã©ã³ã¹ãæŽçããããã«ãããŒã¿ããŒã¹ã®æäœã«å€ãã®å¶éãèšããŠããŸãã ããšãã°ãæžã蟌ã¿ãã©ã³ã¶ã¯ã·ã§ã³ã¯30ç§ä»¥äžãããããšã¯ãããŸããã å¥ã®ã¹ã¬ãŒããããã¹ã¿ãŒããã°ããäœæã§ããããã«ããå¿ èŠããããŸãã
NginXã§ã®SPDYãµããŒã
SPDYã¯ãTCP / TLSæ¥ç¶ãä»ãããã€ããªãããã³ã«ã§ãã HTTPã®ãã©ã³ã¹ããŒãã§ãã Googleã«ãã£ãŠèšèšãããŸããã
äž»ãªæ©èœïŒ
- å€éåïŒãµãŒããŒããã¯ã©ã€ã¢ã³ããžãããã³ãã®éã®äž¡æ¹ã®æ¥ç¶ããšã®ããã€ãã®èŠæ±ïŒ;
- ããããŒå§çž®ïŒzlibãdeflateïŒ;
- ãããŒå¶åŸ¡ïŒtcpæ¥ç¶ã®ãŠã£ã³ããŠïŒ;
- ãµãŒããŒããã·ã¥ïŒãµãŒããŒã«ãã£ãŠéå§ããããã©ãŠã¶ãŒãžã®ããŒã¿ã®ãããŒããïŒ;
å©ç¹ïŒçµã¿èŸŒã¿HTTPSïŒTLSã«ããïŒãå€æ°ã®åçïŒå€éåã«ããïŒã§ã®è¯å¥œãªåäœã
ãã€ãã¹ã®ç¹ïŒçµæãšããŠ1ã€ã®ãã¡ã€ã³ã§åäœããŸã-CDNããµããŒãããŸããã
調æ»ïŒæŠéïŒã«ãããšãWordpress'aïŒSPDYã¯HTTPSãããé«éã§ãããéåžžã®HTTPãããäœéã§ãã
SQLã®ããªãã¯
ãã®ã¬ããŒãã¯èå³æ·±ããªã¹ãã§ããããã¹ãŠã®SQL / PostgreSQLæ©èœã«ç²ŸéããŠããããã§ã¯ãããŸããã
- ãã¥ãŒã¯ãããžãã¯ãããŒãã«ãã«ãã»ã«åããããã®å¹æçãªããŒã«ã§ãã æåã®ãã®ã«ã¯åæããŸãããã2çªç®ã®ãã®ã䜿çšããŸãïŒããŒãã«ã®ååãå€æŽããŸãïŒã
- postgresã¯OSãã£ãã·ã¥ã䜿çšããŸãïŒãããã£ãŠã圌ãã¯ãã®äžéšãŸãã¯ãã¹ãŠãå²ãåœãŠãããšãææ¡ããŸãïŒã
- pgbench-Postgresããã¹ãããããã®ãŠãŒãã£ãªãã£ã
- å ±éããŒãã«åïŒCTEïŒ/ååž°çCTE;
- ãŠã£ã³ããŠé¢æ°;
- JSONãµããŒãïŒc 9.2ïŒ;
- ã©ãã©ã«ãµããŒãïŒFROMå¥ã®çŸåšã®è¡ã§èšç®ãããããŒã¿ã®äœ¿çšãc 9.3ïŒ;
- ããã¹ããšãã©ã€ã°ã©ã ãæäœããããã®æ¡åŒµïŒpg_trgm;
- ããŒãšå€ã®ãã¢ãä¿åããããã®æ¡åŒµæ©èœïŒhstore;
- dblinkãä»ããŠä»ã®ããŒã¿ããŒã¹ããããŒãã«ãæ¥ç¶ããŸãã
- å°çããŒã¿ãæäœããããã®æ¡åŒµæ©èœïŒPostGISããã³EarthDistance;
- æºåãããã¹ããŒãã¡ã³ã-èŠæ±ã®è§£æãååšãšæš©å©ã®ç¢ºèªãèšç»ã®æ§ç¯ã®ãªãŒããŒããããåé¿ã§ããŸãïŒå Žåã«ãã£ãŠã¯ã
è¡ããããå€ãã®æéïŒ; - ããã¯ã¯ãselect ... for shareã³ã³ã¹ãã©ã¯ãã䜿çšããŠæ瀺çã«èšå®ã§ããŸãã
- PgSQLã®Prepared Statementã«ã¯ãexecuteãä»ããŠã¢ã¯ã»ã¹ã§ããŸãã
- ã³ãŒããããã¯ã¯$ code $ ... $ code $ïŒc 9.1ïŒ;
- upsertã¯ãinsert-> fk constraint-> updateã䜿çšããŠå®è£ ããã®ãæé©ã§ãã
- ã¬ãŒããè¿ãïŒãã©ã³ã¶ã¯ã·ã§ã³å ïŒããJSONãçæããïŒrow_to_jsonãarray_to_jsonïŒããšã«ãããé¢æ°ããè€æ°ã®å€ãè¿ãããšãã§ããŸãã
ãšããã§ãã¹ããŒã«ãŒã¯æ¬åœã«å±éºã§ããååž°CTEãšRegexpã䜿çšããŠã圌ã¯1ã€ã®ãªã¯ãšã¹ãã®é åã§JSONããŒãµãŒãPostgresã§äœæããŸããïŒ
身ããããããµãŒããŒããã€ãªãŒããé ã
ãããã«ã¡ã¯ãç§ã®ååã¯ã¢ã³ãã¬ã€ã§ããç§ã¯ãŽã©ãããžçã§ããã ã¬ããŒãã®ãã®èª¬æã¯å®äºããããšãã§ããŸã:)äžè¬çã«ãAksyonovã¯ãã¹ãŠã®æ å ã«æºã¡ãŠããŸãã
ããŒãã€ã³ãïŒ
- ãã³ãããŒã¯ã䜿çšãã-ç®æšã«ã€ããŠèŠããŠããã¹ãäž»ãªããšïŒè² è·å¹³åã§ã¯ãªããå¿ èŠãªãã®ã枬å®ããå¿ èŠããããŸãã
- ã¡ããªãã¯ã®å¹³åå€ã¯äœã®æå³ããããŸãããç é¢ã®å¹³åæ°æž©ã¯å·æ»äœãšç±æ§comç¡ã§ãã
- ã¹ã±ãŒã©ããªãã£ã¯éç·åœ¢ã§ãïŒã¢ã ããŒã«ã®æ³å-ããšã5ïŒ
䞊åããªãå Žåã§ãã
64 * CPU = 14.5 XïŒ
CïŒnïŒ= n /ïŒ1 + a *ïŒn-1ïŒ+ b * n *ïŒn-1ïŒïŒãããã§
a-競åã®åºŠåãïŒæ¯é¡ã®ãªãã³ãŒãã®ã³ã¹ãïŒã
b-äžè²«æ§ã®åºŠåãïŒäžè²«æ§ãéä¿¡ãåæã®ã³ã¹ãïŒ; - ã¹ã€ãŒãã¹ããã-ããã©ãŒãã³ã¹ãæé©ã«ãªããªãœãŒã¹ã®éã匷調ã§ããŸãã
- ããã©ããããã¹ã€ãŒãã¹ãããã®åŸãçç£æ§ãäœäžãå§ããŸã- æé·ãšãšãã«æªåããå¯èœæ§ããããŸãã
- ããã©ã«ãèšå®ã§ãã¹ãããªãã§ãã ãã-ã»ãšãã©ã®ãœãããŠã§ã¢ã§ã¯ããããŸãã«èšã£ãŠå¥åŠã§ãïŒMySQlã§ã¯åInsert'aããã³innodb_buffer_poolã32 MBã§ããããïŒã
- åããªã¯ãšã¹ãã1000åå®è¡ããŸã-ãã£ãã·ã¥ããã¹ãããŸãã
äžçã®å®æ°-ã¢ã¯ã·ã§ã³ã«ãããè²»çšãç解ããããšãéèŠã§ãã
- CPU L1-1,000,000,000 op /ç§ïŒ1e9ïŒ
- CPU L2ãåå²ãã¹-100,000,000 op /ç§ïŒ1e8ïŒ
- RAMã¢ã¯ã»ã¹-10,000,000 op /ç§ïŒ1e7ïŒ
- SSDã¡ã¬ã¬ã€ã-100,000 op /ç§ïŒ1e5ïŒ
- SSD-10,000 op /ç§ïŒ1e4ïŒ
- LANã1MB RAM-1,000 op /ç§ïŒ1e3ïŒ
- HDDã·ãŒã¯ã1MB LAN-100 op /ç§ïŒ1e2ïŒ
- WANåŸåŸ©-10 op /ç§ïŒ1e1ïŒ
- Memcachedã¢ã¯ã»ã¹-10,000 op /ç§ïŒ1e4ïŒ
- RDBåçŽéžæ-100 op /ç§ïŒ1e2ïŒ
èšèªãè¡ã
ã¯ããã«ãããã«ã¡ã¯ãWorld in GOã
2æ¥ç®
æ€çŽ¢ã®ä»çµã¿
ã¢ã³ãã¬ã€ã»ã¢ã¯ã·ã§ããã®æã®å·éã:)
ã©ã®æ€çŽ¢ãšã³ãžã³ã§ããããŒã¿åéïŒã¹ãã€ããŒããããïŒãã€ã³ããã¯ã¹äœæãæ€çŽ¢ãã¹ã±ãŒãªã³ã°ã®4ã€ã®ãã€ã«ã¹ããŒã³ãåºå¥ã§ããŸãã
玢åŒä»ãã«ã¯æ¬¡ãå«ãŸããŸãã
- ããã¹ãïŒhtmlãpdf->ããã¹ãïŒã®åä¿¡ã
- ããŒã¯ã³å
- 圢æ åŠçåŠçïŒã¹ããã³ã°ãlemotizationïŒã
- é玢åŒã®äœæïŒããŒã¯ãŒã->æ¬ã®ããŒãžçªå·ãšãã®äžã®åèªã®äœçœ®ïŒ;
ã€ã³ããã¯ã¹å ã®ããŒã¿ã¯å§çž®ããå¿ èŠããããŸãã å§çž®ã¯ããããããã€ãããããã¯ã«ããããšãã§ããŸãã ããŒã¿ãå°ãªãã»ã©ãèŠæ±ã«å¿ããŠåŠçããå¿ èŠãå°ãªããªããŸãã
æ€çŽ¢ã¯ã2ã€ã®çŽäº€ã¹ããŒãžã§æ§æãããŸãã è¿ éãªãããã³ã°ïŒæ€çŽ¢ïŒãšå®æ§çã¬ãŒãïŒã©ã³ã¯ïŒã§ãã
äžèŽåºæºã¯ããã®äœ¿çšé åïŒWebãããŒã¿ãã€ãã³ã°ïŒã«ãã£ãŠç°ãªãå ŽåããããŸãã ã©ã³ã¯ä»ãã«é¢ããŠã¯ãååãšããŠãé¢é£æ§ã¯åãŠãŒã¶ãŒã®å人çãªãã®ã§ãããããæåŸã«é¢é£ããããšã¯ã§ããŸããã ãããã£ãŠãBM25ïŒTFãIDFãDocLengthïŒãªã©ã®ããªãããŒãªã¢ã«ãŽãªãºã ãã©ã³ãã³ã°ã«äœ¿çšããããã®çµæã¯å¯èœãªéãããŒãœãã©ã€ãºãããŸãã
ã¹ã±ãŒãªã³ã°ã«é¢ããŠã¯ãæ€çŽ¢ã«ã¯ãªãœãŒã¹ãå¿ èŠã§ãã ãããã£ãŠãGoogleã«ã¯äœçŸäžãã®æ€çŽ¢ãµãŒããŒããããYandexã«ã¯äœäžãã®æ€çŽ¢ãµãŒããŒããããŸãã
ãªããã¯ã©ã¹ããæ€çŽ¢
圌ãã¯ã3,000äžäººã®ãŠãŒã¶ãŒã§ïŒMsSQlã§ïŒãã«ã¹ãã£ã³æ€çŽ¢ã䜿çšããããšãã§ããŸããã 16ããŒã¹ã®ã¯ã©ã¹ã¿ãŒã§ã¯ã1ã€ã®æ€çŽ¢ã¯ãšãªãå¹³å15ã30ç§ã§æ©èœããŸããã
ãã®ããã«çããããšãã§ããªãããšã«æ°ã¥ããç§ãã¡ã¯ã解決çãæ¢ãããšã«ããŸããã
Javaãããžã§ã¯ã以æ¥ã圌ãã¯Luceneã«ç®ãåãå§ããŸããã Luceneãšã®3幎éã®äœæ¥ã«ããã次ã®å€æŽãè¡ãããŸããã
- ã¬ããªã±ãŒã·ã§ã³ãè¿œå ããŸãã
- ã¡ã¢ãªå ã®ã€ã³ããã¯ã¹ã®ä¿åïŒRAMãã©ã€ãã§è©Šè¡ããããŒãå ã®ãã¡ã€ã«ããããã³ã°ããŸããããæçµçã«ã¯ByteArrayå ã®ãã¡ã€ã«ããã«ããŸãã-OldGenerationå ïŒ;
- ã€ã³ããã¯ã¹ã«ããæ€çŽ¢ã®æžãæãïŒããã©ã«ãã§ã¯äœæããããªããžã§ã¯ããå€ããããããGCã§åé¡ãçºçããŸããïŒã
çŸåšãå¥ã®ã€ã³ãã¯ãµãŒãµãŒããŒãã€ã³ãã©ã¹ãã©ã¯ãã£ã«å²ãåœãŠãããæ€çŽ¢ã€ã³ããã¯ã¹ãäœæãããŸãã ã€ã³ããã¯ã¹ã¯ããã£ã¹ã¯ãšã¡ã¢ãªã®äž¡æ¹ã«ã€ã³ããã¯ã¹ãä¿åããã¯ãšãªãµãŒããŒã«è€è£œãããŸãïŒã¡ã¢ãªããã®ã€ã³ããã¯ã¹ã¯ãã¯ãšãªã®åŠçã«äœ¿çšãããŸãïŒã ã€ã³ãã¯ãµãŒã¯ãã¥ãŒãä»ããŠããŒã¿ãåä¿¡ãããããæã ã¢ã¯ã»ã¹ã§ããªããªããŸãã
倧ããªæ¬ ç¹ã¯ããã¥ãŒããã€ãã¹ããŠãããŒã¿ããŒã¹ããã€ã³ããã¯ã¹ãçŽæ¥æŽæ°ããããã®ããžãã¯ã®æ¬ åŠã§ããã ãã¥ãŒããã®ããã€ãã®ã¡ãã»ãŒãžãæã æ¶ããã®ã§ã ç§ã¯äŒç€Ÿã§åãåé¡ãè¿°ã¹ãããšãã§ããŸãã çµè«ïŒ ãã¥ãŒãæäœãããšãã®å¥å šæ§ãã§ãã¯ã¯åžžã«ããå¿ èŠããããŸã ã
åžžã«5ïŒ ã®èŠæ±ïŒæãé »ç¹ã«èŠæ±ãããïŒã®ã¿ããã£ãã·ã¥ã«ãããŸãã ãã£ãã·ã¥ã§60ïŒ ãããã
å人çãªèŠæ±ã®å Žåãäžæçãªãã£ãã·ã¥ãïŒèŠæ±ã«å¿ããŠïŒäœæãããæ°åéåç¶ããŸãã
ããŒã¿ã«ã®åãŠãŒã¶ãŒã«ã¯ãåå¥ã®ã¢ããªãµãŒããŒãå²ãåœãŠãããŸãïŒuserIdã«åºã¥ããŠèšç®ãããŸãïŒã ãµãŒããŒã«åé¡ãããå ŽåããŠãŒã¶ãŒã¯ãªã¶ãŒãã«è»¢éãããŸãã
ãªã³ã©ã€ã³ãŠãŒã¶ãŒã®æ€çŽ¢ã¯ãæåã«äžè¬çãªã€ã³ããã¯ã¹ã«ãã£ãŠè¡ãããã€ã³ããã¯ã¹ã®å€åŽã®ããªã³ã©ã€ã³ããã©ã°ã«ãã£ãŠãã£ã«ã¿ãªã³ã°ãããŸããã 次ã«ããã®ç®çã®ããã«å¥ã®ã€ã³ããã¯ã¹ãäœæããŸããã
evernoteã«ããŒã¿ãä¿åãã
ããã€ã¹ãšEvernoteçªå·ã«é¢ããæŠèŠã¬ããŒãã
ãœãããŠã§ã¢ïŒJava 6ãMySQl 5.1ãDebianïŒå®å®çïŒãDRBDïŒåæ£ã¹ãã¬ãŒãžã·ã¹ãã ïŒãXenã
ããŒããŠã§ã¢ïŒSuperMicro 1Uã2x L5630 COUã96 GB RAMã6x 300GB Intel SSDãLSI RAID 5ïŒ+ã¹ãã¢ïŒã8000ãã«ã
ããŒã¿ããŒã¹ïŒMySQLã10TBïŒããŒã¯æã®riops 350ãããŒã¯æã®wiops 50ïŒ
æ€çŽ¢ãšã³ãžã³ïŒLuceneïŒããŒã¯riops 800ãããŒã¯wiops 50ïŒ
ãµãŒããŒã¯ç±³åœãšäžåœã«ãããŸãïŒLinuxãµãŒããŒ400å°ïŒã
ãã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ã¯ãApache / WebDAVãä»ããŠå¶åŸ¡ãããŸãã ããŒã¿ã¯åžžã«åããã¹ãã«ä¿åããã転éãããŸããã NFSãšæ¯èŒããŠãWebDavã«ã¯ããããªãªãŒããŒãããããããŸãããå±éãšãµããŒããäœåãç°¡åã§å®äŸ¡ã§ãã
è² è·åæ£ã¯ãSSL Iron BalancerãåããA10ã§äœ¿çšãããŸãïŒHTTPSã¯å€éšããèŠãŠããŸãããHTTPã¯å éšã§ãããã·ãããŠããŸãïŒã
ãµãŒãã¹ã®æ©èœïŒå€ãã®å°ããªãã¡ã€ã«ã®ä¿åïŒãèæ ®ããŠãåé¡ãšãã®é倧床ã次ã®è¡šã§èª¬æã§ããŸãã
/ | ãµã€ãº | éåžžã®è² è· | ããŒã¯è² è· |
垯åå¹ | - | äž | äž |
é å» | - | äœã | äœã |
CPU | - | äœã | äž |
ãã¡ã€ã«ãµã€ãº | é«ã | äœã | äž |
ã¡ã¿ããŒã¿ | äœã | äž | äœã |
èè ã¯ãã¢ããªã±ãŒã·ã§ã³ããªãœãŒã¹ã倧éã«æ¶è²»ããå ŽåïŒåž¯åå¹ ãã¹ãã¬ãŒãžãCPUïŒããŸãã¯å¯å€éã§äœ¿çšããå Žåãã¯ã©ãŠããã©ãããã©ãŒã ã®äœ¿çšãæšå¥šããŸããã
çãããå Žåã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããŒãºã«åãããŠãµãŒããŒãè³Œå ¥ããŠãµããŒãããã®ã«ãããè²»çšãšãAmazonã«ãããè²»çšãæ€èšããŠãã ããã Evernoteã®å Žåãå·®ã¯1ã4æ¡ã§ãã
DDOSã®ä»çµã¿
ç§ã¯å€é£ãé£ã¹ãŠããã®ã§ããã®å ±åæžãã»ãŒå®å šã«èŠèœãšããŸãã:)æåŸã®éšåãããç§ã¯ãããã®2ã3ã®è«æã ããåé¢ããããšãã§ããŸããã
HTTPæ»æã«å¯Ÿããæãç°¡åãªä¿è·ã¯ãNginxã®å¶éãŸãŒã³ã§ãã NGINXã¢ãžã¥ãŒã«ãtestcookieãã«ã泚æãæãããšãã§ããŸãã
ãã ããNginxã¯DDOSæ»æã®æ²»çæ³ã§ã¯ãªãããšãç解ããããšãéèŠã§ãã
ãã·ã¢2012幎ã®DDOSæ»æ
åèšã§ã2012幎ã®æ»æã¯2600以äžã§ããïŒæšå¹Žã¯1700以äžã§ããïŒã
3,000å°ã®è»ã®ããããããã¯ãå¹³åçãªãµã€ããããµããããã®ã«ååã§ãã æ倧ã®ããããããã¯15äžå°ã®ãã·ã³ã§æ§æãããŠããŸããã ã»ãšãã©ã®ãã³ãããã¯ããã€ããã¢ã¡ãªã«ããŠã¯ã©ã€ããã«ã¶ãã¹ã¿ã³ã«äœãã§ããŸãïŒéé ïŒã
DDOSã¢ã¯ãã£ããã£ã¯eã³ããŒã¹ã¢ã¯ãã£ããã£ãšåãã§ãïŒãŸããã¡ãã£ãšããæ¿æ²»ïŒã
æ¿æ²»çDDOSã¯ãã€ã³ãã®ããã¹ã¿ã³ïŒæ³å·è¡æ©é¢ãå±ããªãå ŽæïŒã®ããããããã䜿çšããŠããŸãã
ã»ãšãã©ã®æ»æã¯1GBæªæºã®ãã©ãã£ãã¯ãçæããŸãïŒéåžžã®ãµã€ã垯åå¹ ã¯ãã以äžã§ã¯ãããŸããïŒã
æ»æããå Žåãæåã«è¡ãããšã¯ããã°ïŒaccess.logïŒãåæãããã©ãã£ãã¯ãã²ãããäœæããããšã§ãïŒtcpdump -s0 -c1000000 -w attack.dumpïŒã æ»æã®ãããªãäžåïŒãžã£ã³ã¯ãã©ãã£ãã¯ããåé€ããæ»æãçºçããIPã¢ãã¬ã¹ããããã¯ããIPãå€æŽããŸãã
ãµã€ãã®ããã©ãŒãã³ã¹ã«ã¯å°ãªããšã2åã®ããŒãžã³ãå¿ èŠã§ãã
ãã·ã¢DDOSã®æ©èœ-ãã«ãã©ãŠã¶ãŒã¹ã¿ãã¯ïŒãã¹ãŠã®ã¢ã³ãddosãã¹ãã«åæ Œã§ããå®éã®ãã©ãŠã¶ãŒã䜿çšïŒã
ãŸããã¯ã-åé¡ãçºçããå Žåã¯ãQratorã«ãåãåãããã ããã
2012幎ã®ã¹ã±ãŒãªã³ã°
ã»ãšãã©ã®å Žåãã¬ããŒãã¯è² è·ã®æé©åãªã©ã«ã€ããŠã®ãã®ã§ããã æ²ããããªãç§ã¯ãã¹ãŠã®å§ãŸãããã€ã¬ã§éãããŸãã:)質åã®éã«å±éãããããªãèå³æ·±ãè°è«ãèæ ®ããŠã®ã¿èšåããããšã«ããŸããã
ã¹ããŒã«ãŒã¯ã圌ã®ãããžã§ã¯ãã®åé·æ§ãšã¹ã±ãŒãªã³ã°ã®æ¬ åŠã«èšåããŸããã ããã«ãããæåã¯ããªãäºæ³å€ã®è³ªåãçºçããŸããããµã€ãã®ããžãã¹ã¢ãã«ã¯äœã§ããïŒ çµå±ã®ãšãããã¹ããŒã«ãŒã®ãããžã§ã¯ãã§ã¯ããµãã¹ã¯ãªãã·ã§ã³ã䜿çšããŠãµã€ãã®æ©èœãžã®ã¢ã¯ã»ã¹ã«å¯ŸããŠãŠãŒã¶ãŒãæ¯æããŸãïŒ6ã12ã24ãæéïŒã ãµã€ãã眮ãããfakapyã1幎ã«2ã3åããçºçããªããšããäºå®ãšããµã€ãã®ãã¹ãŠã®ãŠãŒã¶ãŒãæ¢ã«ãã®äœ¿çšã«å¯ŸããŠæ¯æããããŠãããšããäºå®ãèæ ®ãããšãé«ããã©ãŒã«ããã¬ã©ã³ã¹ã¯éåžžã«é«äŸ¡ã§è€éã§ãæãéèŠãªããš-ããã»ã©å¿ èŠã§ã¯ãªãããš:)å¥ã®ããšã¯ããããžã§ã¯ãã®åçåããããžã§ã¯ããžã®åãªã¯ãšã¹ãã«äŸåããŠããå Žåã§ãïŒ
ããã¢ã¯ãã£ããªWebããã©ãŒãã³ã¹ã®æé©å
ãã®ã¬ããŒãã¯Twitterã®åŸæ¥å¡ãèªãããšã«ãªã£ãŠããã®ã§ãå人çã«ãã®ã¬ããŒãã楜ãã¿ã«ããŠããŠãäœãé¢çœãããšã楜ãã¿ã«ããŠããŸããã ããããã¬ããŒãã®éå§çŽåŸã圌ã¯æè¿Twitterã«åãçµãã§ããããã®åã¯ã»ãšãã©ã®æéã§Webæé©åã«åãçµãã§ããŸããã ãããŠã矀è¡ãå®å šã«çµããããããã«ã圌ã¯çŽ æŽãããããŒã«/ãŠãŒãã£ãªãã£/ãããã¡ã€ã©ãŒ/ãŠã§ãæé©åã®ããã®ãã©ã°ã€ã³-YSlowã«ã€ããŠæããŠãããŸãã
ä»®æ³ãã·ã³åãã®åæ£ãããã¹ã±ãŒã©ãã«ãªé«è² è·ã®ã¹ãã¬ãŒãžã·ã¹ãã
æŠããŠããã®ã¬ããŒãã¯ãParallelsããã£ã³ã¯ãã¡ã¿ããŒã¿ãµãŒããŒããã®ä»ã®å±æ§ã§GoogleFSã®ããŒãžã§ã³ãã©ã®ããã«è£å®ãããã瀺ããŠããŸãã
ïŒç§ã«ãšã£ãŠïŒç¹åŸŽçãªæ©èœã¯ããŸã é«äŸ¡ã ãé«éãªSSDã®äœ¿çšãææ¡ããããšã§ãã Googleã§ã¯ãããªã·ãŒã¯è³Œå ¥ã«åž°çããããã§ã
å®ãéã¯ãæšãŠãŠäº€æããã®ã¯æ®å¿µã§ã¯ãããŸããã
ä»®æ³åã®äž»ãªç®çã¯ã1ã€ã®ãã¹ãã®ãªãœãŒã¹ã®å ±æãå¹æçãªããã¯ã¢ãããšå±éã§ãã
ãã£ã¹ã¯ãã¢ã¬ã€ã«çµåããSANã¹ãã¬ãŒãžä»®æ³ãã·ã³éã§ããŒãã£ã·ã§ã³ãåå²ããããã®æé©ãªãœãªã¥ãŒã·ã§ã³ã ããããããã¯é«äŸ¡ãªã®ã§ã誰ããéåžžã®ãã£ã¹ã¯ã䜿çšããŸãã
FSããžã£ãŒããªã³ã°ããå ŽåãããŒã¿ã¯æåã«ãžã£ãŒãã«ã«éããã次ã«ãã£ã¹ã¯ã«éãããŸãã ããã¯ãçªç¶ãã£ã¹ã¯ããªãã«ããå Žåã«ãã°ãåçããäžè¶³ããŠããããŒã¿ããã£ã¹ã¯ã«è¿œå ã§ããããã«ããããã«å¿ èŠã§ãã
ã¬ããŒããããPAXOSã¢ã«ãŽãªãºã ã«ã€ããŠèšåãããŸããã ç§ãã¡ã¯è°äŒãããã®ãªã·ã£ã®å³¶PAXOSãèããŸãã è°å¡ã¯è°äŒã«åº§ã£ãŠããã圌ããããžãã¹ãã³ã§ãã åŸè ãèæ ®ããŠã圌ãã¯éåžžã«é »ç¹ã«é¢ããŠãããããåœäŒè°å¡ã®åæ°ä»¥äžãåžžã«è°äŒã«ããã äžåšè ãšã®é£çµ¡ã¯ãã¡ãã»ã³ãžã£ãŒã®å©ããåããŠã®ã¿å¯èœã§ãã åæã«ãè°äŒã¯åžžã«æ©èœããæ³åŸãæ¡çšãã¹ãã§ãã ããã«ããã¹ãŠã®è°å¡ã¯åžžã«ææ°ã®æ³åŸã«æ³šæããå¿ èŠããããŸãã ç§ãç解ããéããé£äžã¯ãã®ã¢ã«ãŽãªãºã ã䜿çšããŠãã£ã³ã¯ãµãŒããŒãåæããŸãã
SIGSTOPããã»ã¹ãéä¿¡ããããšã«ãããåé»ããšãã¥ã¬ãŒãã§ããŸãã ãã®å ŽåãTCPæ¥ç¶ã®ããäžæ¹ã®ç«¯ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãé»æºããªãã«ããããšããšåãç¶æ³ã«ãªããŸãã ããã¯å®éã®åé»ãããé«éã§ãã
ä»®æ³Hadoopã¯ã©ã¹ã¿ãŒã®æšå¥šãµãŒãã¹
ã¿ããªã¯ãHadoopã䜿çšããŠããã/ã¿ã¹ã¯ã®ããµã€ãäžã®ãµãŒãã¹ã®æšå¥šäºé ããåæžããŸããã ãããã®ç¹å®ã®åé¡ãšè§£æ±ºçã¯äŸãšããŠäžããããŠããã®ã§ãããããããã«æžãããšã¯äœããªãã§ãããã
MariaDBïŒæ°ããMySQL
Maria DBã«é¢ããæŠèŠã¬ããŒãã MySQLã®ãã©ãŒã¯ã¯ãMySQLãSunããOracleã«ç§»è¡ããåŸãMySQLã®åµèšè ã«ãã£ãŠãŒãããå®å šã«æžãçŽãããŸããã
ãšã³ãžã³ãšããŠãPerconaã®XtraDBãããã©ã«ãã§äœ¿çšãããŸãã InnoDBããµããŒãããŸãã
æ¬è³ªçã«ãã¬ããŒãã¯ãChanhelog MariaDBããŒãžã§ã³5.5ã«èŠçŽãããŸãã
MySQLãã©ã®ããã«æé·ãããããããŠæ ã§åºäŒã£ãææŠã®å人çãªè©±
Oracleããã®ã¬ããŒãã åºæ¬çã«ãæ°ããããŒãžã§ã³ã§äœãèµ·ãããã ããŒããããMySQlã®äžçš®ã
ã¬ããŒãã¯èå³æ·±ã質åã«çããŸããããªãOracleã¯MySQLããµããŒãããã®ã§ããïŒ å瀟ã¯ãã¹ãŠã®åžå Žã§ä»£ç人ãåããããšèããŠãããMySQLã¯Webãã¢ãã€ã«ãçµã¿èŸŒã¿ãã«ããŒããŠããŸãã ãŸããFacebookãTwitterãªã©ã®ã¯ã©ã€ã¢ã³ãã倱ããããããŸããã ããªããèšåã§ããªã巚倧ãªã³ãã¥ããã£ã«ã€ããŠã
ãŸããWindowsçšMySQL Installerã«ã¯ãMsSQLã Sybaseãªã©ã®ããŒã¿ããŒã¹ããã®ç§»è¡ãŠãŒãã£ãªãã£ãå«ãŸããŠããŸãã æ®å¿µãªããšã«ã圌女ã¯ä»éãããã¹ãŠã®ãããžã§ã¯ãã³ãŒãã1ã€ã«æžãæããæ¹æ³ãç¥ããŸããã ãã®èŠ³ç¹ãããç§ã«ãšã£ãŠã®æå³ã¯å€±ããããŸãŸã§ãã
æ£ããã€ã³ããã¯ã¹ã®éžã³æ¹
ã€ã³ããã¯ã¹ãšã¯äœã§ãäœãäžç·ã«é£ã¹ãã®ãã«ã€ããŠã®ã¬ããŒãã ã¬ããŒãã«ã¯ããªãã®æ°ã®æ©åšãšäŸãå«ãŸããŠããã®ã§ããã®åé¡ã«èå³ããã人ã¯èª°ã§ããã¬ãŒã³ããŒã·ã§ã³ãèŠãããšããå§ãããŸãã
ç§ã®æèŠã§ã¯ã次ã®ç¹ãæã䟡å€ããããŸãã
- æ¿å
¥é床ãäœäžããäžè¬ã«ãªãŒããŒãããã䌎ããããããŸãå€ãã®ã€ã³ããã¯ã¹ãäœæããå¿
èŠã¯ãããŸããã
å¿ èŠã§ã; - å¿ èŠãªããŒã¿ã®ã¿ãéžæããŸãããããã¯ãŒã¯çµç±ã§éä¿¡ãããããŒã¿ãå°ãªããªããããã»ããµã§åŠçãããããŒã¿ãå°ãªããªããŸãã
- ãœãŒãã¯éåžžã«é«äŸ¡ãªæäœã§ãã
- distinct-ãµã³ããªã³ã°ã®çµæã«å¯ŸããŠæ©èœãããããæäœãéåžžã«é ããªããŸãã
- ã€ã³ããã¯ã¹ïŒaãbïŒã¯ãã€ã³ããã¯ã¹ïŒaïŒãããåçã®æäœã§ã®ã¿åªããŠããŸãã
- ã¯ã©ã¹ã¿ãªã³ã°ã€ã³ããã¯ã¹ã«ã¯ãã¹ãŠã®è¡ããŒã¿ãå«ãŸããŸãïŒæããã«ãã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹ã®æ§ç¯æã«ãããŒãã«å ã®ããŒã¿ãã€ã³ããã¯ã¹ã«åŸã£ãŠãœãŒããããããšãæ瀺ãããŸããïŒã
- åãã€ã³ããã¯ã¹ã«ãªãããéžæã«äœ¿çšãããŠããå Žåã¯ãããŒãã«ãããã§ããããå¿ èŠããããŸãã
ãã¬ãŒã³ããŒã·ã§ã³
ãã¹ãŠã®ãã¬ãŒã³ããŒã·ã§ã³ã¯ SlideShareã§å©çšã§ããŸã ã
PS
ããšãé§ è¿ãã®MUMUã«ãã§ã®WiFiã¯å°å ã®Olivierã»ã©è¯ããªãã®ã§ãåçãªãã§æçš¿ããŸãã