æ¬çªç°å¢ã§cassandraã®éç¨ãéå§ãã¦ã¿ã
è·å ´ã§cassandraã®éç¨ãéå§ããã®ã§ãé¸å®çç±ã¨ãéç¨ãã¦ã¿ã¦å¾ãç¥è¦ãææçãæ¸ãã¦ã¿ããã¨æãã (ã¾ã ååã«ç¥è¦ãå¾ãã¨ã¯è¯ãé£ãã®ã§ãééã£ãå°è±¡ãå¾ã¦ããããããè¯ããªãã¬ã¼ã·ã§ã³ã«æ°ä»ãã¦ããªãå¯è½æ§ãããã¾ãã)
cassandraã®æ¡ç¨çç±
ããããã®ç®çã¯ããããã¼ã¿ã®æ¸ãè¾¼ã¿å ã¨ãã¦ã®å©ç¨ã§ããè¦ä»¶ã¨ãã¦ã¯ä»¥ä¸ã®æ§ãªãã®ãããã¾ãã
- ã¨ã³ãã¦ã¼ã¶ã¼ç«¯æ«ã®æ°ã«æ¯ä¾ããã®ã§ãæ¸ãè¾¼ã¿ã®ã¹ã±ã¼ã©ããªãã£ãå¿ è¦
- æ¸ãè¾¼ã¿ãã¼ã¿ã¯æ´æ°ããã
- ä¸ä»¶åä½ããããã¯æ°ç§åä½ã®çãããµã¤ã¯ã«ã§ãããã¡ãã£ã³ã¯ãæ¸ãè¾¼ãå¿ è¦ããã
- prestoã§èªã¿è¾¼ãã (ææªconnectorã¯æ¸ãã¦ãããããã§ããã°é¿ããã)
- ä¸åº¦ã«æ°ç¾ä¸ä»¶ãããã¾ã§èªã¿è¾¼ãå¯è½æ§ãããã®ã§ããããªãã«èªã¿è¾¼ã¿ãã¹ã±ã¼ã«ãã¦æ¬²ããããã¬ã³ã¸ã¹ãã£ã³ã«ãããç¨åº¦å¹çãæ±ããããã
å ã ããã¼ã¿å å·¥ã§æ½°ããå¹ãæ§ã«kafkaã®å©ç¨ãæ¤è¨ãã¦ããã§ããããã¼ã¿ãé »ç¹ã«æ´æ°ãããå¯è½æ§ãããã®ã§ä¸æã®ãã¼ã§ãã¼ã¿ãç¹å®ã§ãã¦upsertãå¯è½ã§ãããæ¸ãè¾¼ã¿ã¬ã¤ãã³ã·ãå°ããä¿ã¤ãã¨ãã§ãããã¨ãããã¨ã§cassandraã«åãã¾ããã
ãã®ä»ãApache Kuduã¨ãã調æ»ã¯ãã¾ããããã¡ãã£ã¨æ°ãéããã®ã¨prestoã¨ã®æ¥ç¶æ§ã«ä¸å®ããã£ãã®ã§ãè¦éãã¾ããã
cassandraã®æ§ç¯æ¹æ³ã¨ç¾å¨ã®ã¯ã©ã¹ã¿è¦æ¨¡
ãã£ã¹ã¯ã¨ãããã¯ã¼ã¯ã«ããªãã®I/Oããããã®ã§ãã³ã³ããã¯ä½¿ããã«packerã§AMIãçæããEC2ã§æ®éã«ç«ã¦ã¦ã¾ãã
cassandraã«ã¯seedã¨ããæ¦å¿µããããã¯ã©ã¹ã¿ã®æ å ±ãæä¾ããããã®åæãã¼ããå¿ è¦ã«ãªãã¾ãã ãªã®ã§ãseedã¯åºå®ã§ãã¼ã«ã«IPãéã£ã¦3å°ç«ã¦ã¦ãããä»ã®ãã¼ãã¯Autoscalingã§èµ·åã§ããæ§ã«ãã¦ããã¾ãã ã¯ã©ã¹ã¿å ¨ä½ã§ã¯10å°ã§éç¨ãã¦ãã¾ãããã¼ãã«ã¯ç¾æç¹ã§3種é¡ãããä¸çªå¤§ãããã¼ãã«ã§50GBç¨ã®ãã¼ã¿ãå ¥ã£ã¦ã¾ãã ä»å¾å©ç¨ç¯å²ãåºãã¦ããäºå®ã§ãã
ç¾æç¹ã§ã®å©ç¨ã¹ã¿ã¤ã«
å©ç¨éå§å½åã¯ãã¢ããªã±ã¼ã·ã§ã³æ¬ä½ã®ã³ã¼ããå¼ããã«å®é¨ããããã«ãfluentdãçµç±ãã¦ãã¼ã¿ãæå ¥ãã¦ãã¾ããã å ã fluentdã«ãã¼ã¿ãæµãã¦ããã®ã§ãcopyãã¦è»½ãå å·¥ããã ãã§åºåå ãã³ã³ããã¼ã«ã§ããæ§ã«ãªã£ã¦ãã¾ãã ã§ããã¼ã¿ãæå ¥ããããã«fluentdã®ãã©ã°ã¤ã³ãæ¸ãã¾ããã(ããã¤ãæ¢åã®ãã®ããã£ããã§ããå¤ãã£ã) ; github.com
cassandraã¯æ¿å ¥ã¯ä¸ä»¶åä½ã§è¡ããã¨ã«ãªãã®ã§ãfluentdã®æ§ã«bufferãã£ã³ã¯ãæºãã¦å¦çããã®ã¯ä½ãç¸æ§ãè¯ããªãã¨ã¯æãã¾ããã ã¨ããã®ãfluentdã¯ãããã¡ãã£ã³ã¯åä½ã§ãªãã©ã¤ãããã¨ã«ãªãã®ã§ããã£ã³ã¯ã®ä¸ã®ä¸è¡ãã¨ã©ã¼ã«ãªã£ãå ´åã«ã©ããªãã©ã¤ããããèããã®ãé¢åãããã ã¨ããããç¡è¦ãããå ¨ä½ãªãã©ã¤ãããã®äºæãé¸ã¹ãæ§ã«ã¯ãã¾ãããâ¦â¦ã
ç¾å¨ã¯å©ç¨ã¹ã¿ã¤ã«ãåºã¾ã£ãã®ã§ãrubyã®cassandra-driverã使ã£ã¦ã¢ããªã±ã¼ã·ã§ã³ããç´æ¥ãã¼ã¿æå ¥ããæ§ã«å¤æ´ä¸ã§ãã
ã¡ããªãã¯åé
ä¼ç¤¾ã§ã¯datadogãå©ç¨ãã¦ãããdatadogã«cassandraã®ã¤ã³ãã°ã¬ã¼ã·ã§ã³ãããã®ã§ãããå©ç¨ãã¦ãã¾ãã 宿 ã¯datatdog-agentãJMXãä»ãã¦mbeanããå¤ãåå¾ããå½¢ã«ãªãã¾ãã
ã¨ãããã以ä¸ã®å¤ãåéãã¦ã¾ãã
- CPUå©ç¨ç
- èªã¿æ¸ãã®ã¬ã¤ãã³ã·
- ãã£ã¹ã¯å©ç¨é (ããã¤ã¹å ¨ä½ã¨ããã¼ãã«æ¯ã®ãã£ã¹ã¯å©ç¨é)
- æ¸ãè¾¼ã¿ä»¶æ°
- sstableã®æ°
- keycache hit ratio
- drop message rate
- pending task count
- JVMç³»ã®ã¡ããªã㯠(heap, nonheap, gcç)
å ãã¦ãããã»ã¹ç£è¦ãdatadogã§ãã£ã¦ã¾ãã
cassandraã®ç¹æ§ã«ã¤ãã¦ã®çè§£
ã¢ã¼ããã¯ãã£ã®ç´°ãã解説ã¯ãdatastaxã®ããã¥ã¡ã³ããèªãã®ãåããæãã¨æãã¾ãããcassandraã¯å¤§ã¾ãã«ã¯ä»¥ä¸ã®æ§ã«åãã¾ãã
æ¸ãè¾¼ã¿æ
- ã¬ã³ã¼ãã®ãã¼ãã£ã·ã§ã³ãã¼ããcoodinatorãæ±ºå®ãã
- coordinatorã«æ¸ãè¾¼ã¿ããã«ãã
- ã¾ãmemtableã¨ãããªã³ã¡ã¢ãªã®ãã¼ãã«ã«ãã¼ã¿ãæ¸ãè¾¼ã
- ä¸å®æéãä¸å®ãã¼ã¿éæ¯ã«flushããã¦sstableã¨å¼ã°ãããã¡ã¤ã«ã«æ¸ãåºããã
- åããã¼ãã£ã·ã§ã³ã§ãè¤æ°ã®sstableã«ã¾ããã£ã¦æ ¼ç´ããã
- sstableå ã®ãã¼ã¿ã¯ä¸å¤
- ãã¼ã¿ãè¥å¤§åããªãæ§ã«å®æçã«ã³ã³ãã¯ã·ã§ã³ãå®è¡ããã¦sstableããã¼ã¸ããã
- æ´æ°ãªãåé¤ãªããçºçããæã¯tombstoneãã¼ã«ã¼ãä»ä¸ããã¦ãã³ã³ãã¯ã·ã§ã³ã¿ã¤ãã³ã°ã§åé¤ããã
- æ´åæ§ã¬ãã«ã«å¿ããå¿çãè¿ã£ã¦ããããã¯ã©ã¤ã¢ã³ãã«ã¬ã¹ãã³ã¹ãè¿ã
èªã¿è¾¼ã¿æ
- ãã¼ãã£ã·ã§ã³ãã¼ãå ã«coordinatorã«ãã¼ã¿ãè¦æ±ãã
- memtableã確èªããããã°åå¾ãã
- è¡ãã£ãã·ã¥ã確èªããããã°åå¾ãã
- ãã«ã¼ã ãã£ã«ã¿ã¨key cacheã使ã£ã¦sstableã®èªã¿åºãå ãç¹å®ãã
- ããã§ãè¦ã¤ãããªãå ´åã¯ãsstableã«å«ã¾ãããã¼ãã£ã·ã§ã³ã¤ã³ããã¯ã¹ãããã¼ã¿ã®å ´æãç¹å®ãèªã¿è¾¼ã
- æ´åæ§ã¬ãã«ã«å¿ããçµæãéã¾ã£ãããã¬ã¹ãã³ã¹ãè¿ã
æ¸ãè¾¼ã¿ã¯åºæ¬çã«ã¡ã¢ãªã«æ¸ãããã追è¨ããèµ·ããªãã®ã§ã¹ã±ã¼ã«ããããããç¾å¨ã®ãã¡ã®å©ç¨è¦æ¨¡ã ã¨ä¸ä»¶è¾ºãã®æ¸ãè¾¼ã¿ã¬ã¤ãã³ã·ã¯100μsãããã§å®äºãã¦ã¾ãã(ãããã¯ã¼ã¯ã¬ã¤ãã³ã·ã¯å¥)
ããããèªã¿è¾¼ã¿ã®æã¯ãã¼ãã£ã·ã§ã³ãç¹å®ãã¦ã¯ã¨ãªããã®ãå¿ é ã«ãªããããã¯ã¨ãªã®ã¯ã¼ã¯ãã¼ãã«åããã¦ãã¼ãã£ã·ã§ã³ãã¼ãè¨è¨ããå¿ è¦ãããã
å®éããã¼ãã£ã·ã§ã³ãã¼ãæå®ããªãå½¢ã§ã¯ã¨ãªãããã¨ã¯åºæ¬ã§ããªãæ§ã«ãªã£ã¦ããã ãã®ç¹ã§ãèªã¿è¾¼ã¿ã«é¢ãã¦ã¯ãã¼ã¿æ§é ããªãããªKVSã«è¿ãã
ãªãªã¸ãã«ã®ãã¼ã¿ãåãã§ãåç §æ¹æ³ã«åããã¦ããã¼ãã«ãä½ãæ¹ãè¯ãã¨ããã¦ããæ§ã§ãã ãã®åæ¸ãè¾¼ã¿ã®æ°ãå¢ããããæ¸ãè¾¼ã¿ã¯ã¹ã±ã¼ã«ãããããã®ã§èªã¿è¾¼ã¿å½¢å¼ã«åãããæ§é ãåªå ããæ¹ãè¯ãã¨ãããã¨ã ã¨æãã¾ãã
prestoããã®èªã¿è¾¼ã¿
ãã¼ãã£ã·ã§ã³ãã¼ãæå®ããªãå ´åã¯å ¨ãã¼ãã£ã·ã§ã³ãããã¼ã¿ãèªããã¨ã«ãªãã ãã¼ãã£ã·ã§ã³ãã¼ãæå®ããã°å¿ è¦ãªãã¼ã¿ã ãåã£ã¦ãããããã¾ããã¼ãã£ã·ã§ã³ã忣ã§ããã°ã大éã«èªã¿è¾¼ãã§ããããªãã®ã¹ãã¼ããã§ããã¯ã¨ãªãã¿ã¼ã³ã«åããããã¼ãã«è¨è¨ã大äºã ãã¼ãã£ã·ã§ã³ãã¼è¨è¨ãå¿ è¦ãªã«ã©ã ã®çµãè¾¼ã¿ã䏿ãã§ããªãã¨10åãã100åãããè² è·ãå¤ããã
prestoãã¼ã30å°ãcassandraãã¼ã10å°ã§300ä¸ä»¶ã®user_idãåå¾ãã¦ãã¯ã¨ãªèªä½ã¯3ç§ãããã§çµããããè² è·ãããªã軽ãã ãã ã1è¡è¾ºãã®ãã¼ã¿éãå¢ããã¨sstableã®èªã¿åºãã«çµæ§ãªè² è·ããããã®ã§ãèªã¿è¾¼ã¿ãè©°ã¾ãå¾åããã£ãã
ã¾ãããã¼ãã£ãã·ã¥ãchunk cache (sstableã®ãã£ãã·ã¥)ã«ã¡ããã¨ãã¼ã¿ãè¼ãã¦ããã¦ãå®éã®ãã£ã¹ã¯I/Oãçºçããªãæ§ã«ãã¦ãããªãã¨èªã¿è¾¼ã¿ãå®å®ããªãã
ã»ã«ã³ããªã¤ã³ããã¯ã¹ã«ã¤ãã¦
ãã¼ãæ¯ã«ã¤ã³ããã¯ã¹ã使ãããããã¼ãã£ã·ã§ã³ãã¼ãæå®ããªãã¦ãã¯ã¨ãªå¯è½ã«ãªããã大éã®ãã¼ãã£ã·ã§ã³ãã¹ãã£ã³ããã¨ç°æ§ã«é ããªãã®ã§ãå°æ°ã®ãã¼ãã£ã·ã§ã³ã®ä¸ã§ãã¼ã¿ãæ´ã«çµãè¾¼ãã®ã«ã¯å½¹ã«ç«ã¤ãããã¼ãã£ã·ã§ã³ãã¼ã®ä»£ããã«ä½¿ããæ§ãªä¾¿å©ãªãã®ã§ã¯ãªãã
ä½ããã¼ã¿ã®ã«ã¼ãã£ããªãã£ãä½ãã¦ãé«ãã¦ãé§ç®ã§ãç¨ã ã«å ±éãã¦åå¨ãããã¼ã¿ãæå¹ããããã¾ãæ´æ°ãé »çºããã«ã©ã ã ã¨indexæ´æ°ã«è² è·ããããã®ã§ãå©ç¨ãé¿ããã¹ãã§ãã å¥éãã¼ãã£ã·ã§ã³ãã¼ã®ç°ãªããã¼ãã«ãä½ã£ã¦ãç¨éã«åããã¦ãã¼ã¿ãæå ¥ãã¦ããæ¹ãè¯ãããã§ãã
cassandraã®éç¨
ãã¼ã追å
è¨å®ãã¡ã¤ã«ã«seedæ å ±ã¨Snitchã®è¨å®ãæ¸ãã¦èµ·åããã¨èªåã§ã¯ã©ã¹ã¿ã«æå±ãã¾ãã èµ·åæã«bootstrapã¨å¼ã°ããå¦çãèµ°ããèªåã§ãã¼ã¿ã®å忣ãè¡ããã¾ãã
åæã«è¤æ°å°è¿½å ãããã¨ããã¨ãbootstrapãç«¶åããã®ã§ã追å ã¯1å°ã¥ã¤ã§ãªãã¨äºæ ã£ããæ¢ã¾ã£ãããã¾ãã æ¥æ¿ã«ã¯ã©ã¹ã¿ãå¢å¼·ã§ããªãã®ã§ãå¤å°ã®ä½è£ãè¦ã¦ãã³ããªã³ã°ããå¿ è¦ãããã
ãã¼ãã®åé¤
æ£å¸¸èµ·åãã¦ãããã¼ããã¯ã©ã¹ã¿ã¼ããåé¤ããå ´åã¯ãnodetool decomissionã³ãã³ããåé¤ããããã¼ãã§å®è¡ããã ãã¼ã¿ã®å忣ãè¡ããã¦å®äºãããã¯ã©ã¹ã¿ããæ å ±ãåé¤ããã¾ãã
ãã¼ãæ é
ãã¼ããæ éããå ´åã¯è²ã èæ ®ããèªä½ãå¢ãã¾ãã
æ¸ãè¾¼ã¿ã«é¢ãã¦ã¯hinted handoffã¨ããæ©è½ã«ãããæ éãã¼ãã¸ã®æ¸ãè¾¼ã¿è¦æ±ãcoordinatorã䏿çã«åãåããã¨ãã§ãã¾ãã ãã¼ãã復帰ããããhintãã¡ã¤ã«ã«èç©ãããæ¸ãè¾¼ã¿ãã¼ã¿ãåæããããhintãæºã¾ãéããã¨ãã¼ãã®å¾©å¸°ã«æéããããã
ãã¼ãã復帰ä¸è½ã®å ´åã¯ãnodetool removenodeã³ãã³ãã«node idãæ¸¡ãã¦ãã¼ãæ å ±ãã¯ã©ã¹ã¿ããåé¤ããããã®æç¹ã§hintãã¡ã¤ã«ãæºã¾ã£ã¦ããã°åé¤ãããã¯ãã§ãã ãã¼ããåæ°ã«æ»ãå ´åã¯ä»£ããã«æ°ãã1å°è¿½å ãã¾ãã
èµ·åæã«JVMãªãã·ã§ã³ã渡ãã¦ãããIPã®ãã¼ããç½®ãæããã¨ããæå®ããããã¨ã§ããã®ãã¼ãã®å½¹ç®ãå¼ãç¶ããã¨ãã§ããæ§ã§ããããªãã¬ã¼ã·ã§ã³ãè¤éåããã®ã§è«¦ãã¦ãæ éãã奴ãã¯ã©ã¹ã¿ããåé¤ããæ°è¦ã«ãã¼ãã追å ããªããã¦å忣ããæ¹ãæ¥½ã«æããã ãã ããããã¯ã¯ã©ã¹ã¿ãæã£ã¦ããã¼ã¿è¦æ¨¡çã«å·¦å³ãããã¨æãã¾ãã
seedãã¼ãæ é
seedãã¼ããæ éããã¨ãã¡ããã¡ãé¢åãªãã¨ã«ãªãã
seedãã¼ãã¯èµ·åæã«ç¹å¥æ±ãããã¦ãããbootstrapãè¡ãããªãããã®ãããä¸åé常ãã¼ãã¨ãã¦æ§æãã¦bootsrapãå®äºãã¦ããseedãã¼ãã¨ãã¦èµ·åããªãããã¨ã«ãªãã åä¸IPã§æ°ãããã¼ããæ§æããªãããã¨ããã¨ãé常ã«ãããããã®ã§è«¦ãã¦æ°ãããã¼ãã追å ãbootstrapãçµãã£ãæç¹ã§ãseedã«ããããã¼ãã®IPãåãã¼ãã®è¨å®ãã¡ã¤ã«ã«è¿½å ããé çªã«cassandraãåèµ·åããã¨ããã®ãä¸çªãã·ãªæé ã§ã¯ãªããã¨æãã¾ãã
åãIPã§æ§æããªããããå ´åã¯ãä¸åseedsãªã¹ãããé¤å¤ãã¦cassandraã¯ã©ã¹ã¿å ¨ä½ãåèµ·åããå¾ããã¼ãã追å ãã¦bootstrapãçµãã£ãå¾ã«ãå度seedsãªã¹ãã«IPã追å ãã¦ãã¾ãã¯ã©ã¹ã¿å ¨ä½ãåèµ·åããå¿ è¦ãããããã§ãã
ã¯ã©ã¹ã¿ãæ§æããããã«seedãã¼ãã«ããªãä¾åãã¦ããã®ã§ããããæ¬å½ã«ããããããåæã«seedãã¼ããå ¨é¨æ»ãã æã«ã©ããã£ã¦å¾©å¸°ããã°ããã®ãã¯è¯ãåãã£ã¦ããªããçãæ®ã£ã¦ãããã¼ããæ°ããseedã¨ãã¦æå®ããä¸ã§ãã¯ã©ã¹ã¿å ¨ä½ãåèµ·åããæ°ãããã¼ãã復活ããã¦è¨å®ãã¡ã¤ã«ããã¾ãã¾èª¿æ´ããã°å ã«æ»ãã¨æãã¾ããã
ä»ã¯10æ°å°ãããã®è¦æ¨¡ãªã®ã§ã©ãã£ã¦ãã¨ã¯ç¡ãã®ã§ãããããã100å°è¦æ¨¡ã«ãªã£ã¦ããã¨seedzeãã¼ãæ éã¯æ»ã¬ç¨é¢åãªã®ã§ã¯ãã¨æãã®ã§å¤§è¦æ¨¡ã¯ã©ã¹ã¿éç¨ãã¦ãã人ã®ç¥è¦ã欲ããæã§ãã
å ¨ä½çã«è¦ã¦ããã¼ãèªä½ãç¡äºã§ããã»ã¹ãçæéæ»ãã ç¨åº¦ãªãã©ãã¨ã§ããªãããã§ããããã¼ããã¨æ»ã¬ã¨ãªãã¨ããªããªãã¬ã¼ã·ã§ã³ãé¢åã ã£ããå忣ã®è² è·ããããã®ã§ã使¥ã¿ã¤ãã³ã°ã«æ³¨æããæ¹ãè¯ãããã§ãã
å ¨ä½æ
10å°ãããã§æ§ç¯ãããªããããç¨è¦å´ã¯ããªãã£ãã(ããç¨åº¦ã¤ã³ãã©ã®èªåæ§æãã¤ã¡ã¼ã¸ä½æã«ç¥è¦ãããããã§ãã) ã¢ãã¿ãªã³ã°ãdatadogã¨çµã¿åãããã°å²ã¨ç°¡åã«dashboardãæ§ç¯ã§ãã¾ãããç£è¦ãããã£ãããã¦ããã°ãè½ã¡çãã¦éç¨ã§ãããã§ãã
åé¡ã¯ãã¯ããã¼ãã¦ã§ã¢æ éã§ãã¼ããã¨çªç¶æ»ããå ´åã§ãããããå ´åã«ãã¼ã¿ãã¹ãããªãæ§ã«ãã¤éå°ãªè² è·ãããããªãæ§ã«ãªãã¬ã¼ã·ã§ã³ããã®ã¯ããªãé¢åãªæ°é ããã³ãã³ãã¾ãã
æ¸ãè¾¼ã¿ã¯æ¬å½ã«æ©ãããã¹ã±ã¼ã«ããã®ã§å®å¿æããããèªã¿è¾¼ã¿ã¯ã¨ã«ããã¯ã¨ãªãã¿ã¼ã³ãäºåã«ã¡ããã¨èãã¦ãããã«åããããã¼ãã£ã·ã§ã³è¨è¨ããããã¨ãå¿ é ã§ããã¾ãã¯ã¨ãªãããã§ãã¼ãã«æ§é èããªãã¨ãèªã¿è¾¼ã¿ã«ãã£ã¡ãè² è·ãããããã¨ã«ãªãã¾ãããã¼ãã£ã·ã§ã³ãã¼ã¨ã¯ã¨ãªãã¿ã¼ã³ãä¸å¿ã«ãããã¼ã¿è¨è¨ã¯æ £ããã¾ã§è¦å´ãããã§ãã
ãããã¥ã¼ãå ¥ã£ããã¨ã§ãã¯ã¨ãªãã¿ã¼ã³ã«åãããæè»ãªãã¼ãã«æ§æãå®ç¾ã§ããããªæ°é ãããã¾ãããå®é¨ãã¦ã¿ãææ¸ãè¾¼ã¿ããã»ã¹ãä¸å®å®ã«ãªã£ã¦OOMã§è½ã¡ããããã®ã§ãããã¡ããç¥è¦ãç©ããªããªã½ã¼ã¹èª¿æ´ããã¹ã¿ã¼ããå¿ è¦ããããå¾ãç¾æç¹ã§ã¯prestoããèªã¿è¾¼ã対象ã¨ãã¦å©ç¨ã§ããªãã®ãããã¡ã®ç°å¢ã ã¨è¾ãç¹ã§ããã
ã¨ãããããããããã¼ã¿ãå©ç¨ãããããã¤ã¤ã¹ã±ã¼ã©ããªãã£ã確ä¿ãããã¨ããå½åã®ç®çã¯éæã§ããããªã®ã§ããã°ããéç¨ãç¶ç¶ãã¦æ§åãè¦ã¦ãããã¨æãã¾ãã