¥ª¥Ö¥¸¥§¥¯¥È¥¹¥È¥ì¡¼¥¸ÍѤι⮸¡º÷¥¨¥ó¥¸¥ó¥µ¡¼¥Ó¥¹¡Öturbopuffer¡×¤ò³«È¯¤·¤¿¥µ¥¤¥â¥ó¡¦¥Û¥ë¥×¡¦¥¨¥¹¥­¥ë¥»¥ó»á¤¬¡¢¤É¤Î¤è¤¦¤Ë¥ª¥Ö¥¸¥§¥¯¥È¥¹¥È¥ì¡¼¥¸¤Î¸¡º÷¤ò°Â²Á¤«¤Ä¹â®¤Ë¹Ô¤¨¤ë¤è¤¦¤Ë¤·¤¿¤Î¤«¤Ë¤Ä¤¤¤Æ¥Ö¥í¥°¤ËÅê¹Æ¤·¤Þ¤·¤¿¡£

turbopuffer: fast search on object storage

https://turbopuffer.com/blog/turbopuffer



¥¨¥¹¥­¥ë¥»¥ó»á¤Ï¸½Âå¤Î¥¤¥ó¥Õ¥é¥¹¥¿¥Ã¥¯¤Ç¤è¤¯»ÈÍѤµ¤ì¤Æ¤¤¤ë¥Ç¡¼¥¿¥Ù¡¼¥¹5¤Ä¤ò²¼¤Îɽ¤Ë¤Þ¤È¤á¤Þ¤·¤¿¡£¥ï¡¼¥¯¥í¡¼¥É¤´¤È¤ËŬÀÚ¤ÊÀìÍѥǡ¼¥¿¥Ù¡¼¥¹¤ò»ÈÍѤ¹¤ë¤Î¤Ï±¿ÍѤÎÉé²Ù¤¬¹â¤¤¤¿¤á¡¢ÆÃÄê¤Î¥ï¡¼¥¯¥í¡¼¥É¤ÇÌäÂ꤬¿ȯ¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¤Þ¤Ç¤ÏPostgres¤äMySQL¤Ê¤É¤Î¥ê¥ì¡¼¥·¥ç¥Ê¥ë¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤Ã¤Æ¤ª¤±¤ÐÎɤ¤¤È¤Î¤³¤È¡£

¥«¥Æ¥´¥êµ»½ÑÆɹþ¥ì¥¤¥Æ¥ó¥·½ñ¹þ¥ì¥¤¥Æ¥ó¥·¥¹¥È¥ì¡¼¥¸¥æ¡¼¥¹¥±¡¼¥¹¥­¥ã¥Ã¥·¥åRedis, Memcached<500µs<500µs¥á¥â¥ê¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹½Å»ëRDBMySQL, Postgres<1ms<1ms¥á¥â¥ê¡ÜSSDSOT¡¦¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¡¦CRUD¸¡º÷ElasticSearch, Vector DBs<100ms<1s¥á¥â¥ê¡ÜSSD¥ì¥³¥á¥ó¥Ç¡¼¥·¥ç¥ó¡¦¸¡º÷¡¦¥Õ¥£¡¼¥É¡¦RAGÊݸBigQuery, Snowflake>1s>1s¥ª¥Ö¥¸¥§¥¯¥È¥¹¥È¥ì¡¼¥¸¥ì¥Ý¡¼¥È¡¦¥Ç¡¼¥¿Ê¬ÀÏ¥¹¥È¥ê¡¼¥ß¥ó¥°Kafka, Warpstream<100ms<100msHDD/¥ª¥Ö¥¸¥§¥¯¥È¥¹¥È¥ì¡¼¥¸¥í¥°¡¦¥·¥¹¥Æ¥à´Ö¥Ç¡¼¥¿°ÜÆ°¡¦¥ê¥¢¥ë¥¿¥¤¥àʬÀÏ

¥¨¥¹¥­¥ë¥»¥ó»á¤Ë¤Ï2022ǯ¤ËReadwise Reader¤È¤¤¤¦¥ê¡¼¥À¡¼¥¢¥×¥ê¤Î³«È¯¤ò¼êÅÁ¤Ã¤Æ¤¤¤ë»þ¡¢¥¤¥ó¥Õ¥é¥³¥¹¥È¤¬¹â¤¹¤®¤ÆRDB¤«¤é¥á¥â¥êÆâ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë°Ü¹Ô¤Ç¤­¤º¡¢µ­»ö¤Î¥ê¥³¥á¥ó¥Ç¡¼¥·¥ç¥ó¤ä¥»¥Þ¥ó¥Æ¥£¥Ã¥¯¸¡º÷¤Î¼ÂÁõ¤ò¸«Á÷¤Ã¤¿·Ð¸³¤¬¤¢¤ê¤Þ¤¹¡£2022ǯÅö»þ¡¢´ë¶È¥°¥ì¡¼¥É¤Î¥Ù¥¯¥È¥ë¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ï¥á¥â¥êÆ⥹¥È¥ì¡¼¥¸¤ò»ÈÍѤ·¤Æ¤ª¤ê¡¢1GB¤¢¤¿¤ê2¥É¥ë(Ìó323±ß)¤Î¥³¥¹¥È¤¬¤«¤«¤Ã¤Æ¤¤¤Þ¤·¤¿¡£

¥ª¥Ö¥¸¥§¥¯¥È¥¹¥È¥ì¡¼¥¸¤¬ÉáµÚ¤·¤¿¤ê¡¢NVMe SSD¤¬°Â²Á¤«¤Ä¹â®¤Ë¤Ê¤Ã¤¿¤ê¤¹¤ë¤Ê¤É¤Îµ»½Ñ¤Î¿Ê²½¤Ë¤è¤ê¡¢Á´¤Æ¤Î¥Ç¡¼¥¿¤ò¥á¥â¥êÆ⥹¥È¥ì¡¼¥¸¤ËÊݸ¤¹¤ëÂå¤ï¤ê¤Ë¥Ç¥£¥¹¥¯ÇÞÂΤȺ®¹ç¤Ç»ÈÍѤ¹¤ë¤³¤È¤Ç¥³¥¹¥È¤òÂ礭¤¯Äã²¼¤µ¤»¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤Ã¤¿¤È¤Î¤³¤È¡£

¥Ç¡¼¥¿¤ò3¤Ä¤ÎSSD¤Ë3½Å¤ËÊݸ¤·¡¢Ê¿¶Ñ¥¹¥È¥ì¡¼¥¸»ÈÍÑΨ¤¬50¡ó¤Î¾ì¹ç¡¢¥³¥¹¥È¤Ï1GB¤¢¤¿¤ê0.6¥É¥ë(Ìó97±ß)¤Þ¤ÇÄã²¼¤·¤Þ¤¹¡£¤½¤Î¾¡¢¥¢¥¯¥»¥¹ÉÑÅÙ¤ÎÄ㤤¥Ç¡¼¥¿¤Ë¤Ä¤¤¤ÆAWS S3¤äGCS¤Ê¤É1GB¤¢¤¿¤êÌó0.02¥É¥ë(Ìó3±ß)¤Ç»ÈÍѤǤ­¤ë¥ª¥Ö¥¸¥§¥¯¥È¥¹¥È¥ì¡¼¥¸¤ò³èÍѤ·¤¿¤ê¡¢1GB¤¢¤¿¤ê0.1¥É¥ë(Ìó1.6±ß)¤Ç»ÈÍѤǤ­¤ëSSD¥­¥ã¥Ã¥·¥å¤ò³èÍѤ·¤¿¤ê¤¹¤ë¤³¤È¤Ç¥á¥â¥ê¤è¤ê¤âºÇÂç¤Ç100ʬ¤Î1¤Î¥³¥¹¥È¤Ç¥Ç¡¼¥¿¤òÊݸ¤Ç¤­¤Þ¤¹¡£

¤³¤¦¤·¤¿¾õ¶·¤òƧ¤Þ¤¨¡¢¥¨¥¹¥­¥ë¥»¥ó»á¤Ï¥³¥¹¥È¸úΨ¤È¹âÀ­Ç½¤òÁȤ߹ç¤ï¤»¤¿¿·¤·¤¤¸¡º÷¥¢¥×¥í¡¼¥Á¤È¤·¤Æ¡Öturbopuffer¡×¤ò³«È¯¤·¤Þ¤·¤¿¡£



½¾Íè¤Î¸¡º÷¥¨¥ó¥¸¥ó¤ÏRDB¤ÎÊ£À½¥Ç¥£¥¹¥¯¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤ò»ÈÍѤ·¤Æ¹½ÃÛ¤µ¤ì¤Æ¤ª¤ê¡¢¥ì¥¤¥Æ¥ó¥·¤¬Ä㤯¡¢¹¹¿·¤ä¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ÎƱ»þ¼Â¹ÔÀ­Ç½¤¬Èó¾ï¤Ë¹â¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¡¢¸¡º÷¥¨¥ó¥¸¥ó¤Ë¤Ï½ñ¹þ¥ì¥¤¥Æ¥ó¥·¤¬Ä㤯¤Æ¤âÎɤ«¤Ã¤¿¤ê¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÉÔÍפÀ¤Ã¤¿¤ê¤È¤¤¤¦ÆÃħ¤¬¤¢¤ê¡¢RDB¤ò»ÈÍѤ¹¤ë¤³¤È¤ÇÉÔÍפʵ¡Ç½¤Ë¥³¥¹¥È¤òʧ¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë¤È¥¨¥¹¥­¥ë¥»¥ó»á¤Ï»ØŦ¡£

¤è¤¯¥¢¥¯¥»¥¹¤µ¤ì¤ë¥Ç¡¼¥¿¤òSSD¥­¥ã¥Ã¥·¥å¤ËÇÛÃÖ¤·¡¢ÉáÃʤÏÍøÍѤµ¤ì¤Ê¤¤¥Ç¡¼¥¿¤ò°Â²Á¤Ê¥ª¥Ö¥¸¥§¥¯¥È¥¹¥È¥ì¡¼¥¸¤ËÊݸ¤¹¤ë¤³¤È¤Ç¤Û¤È¤ó¤É¤Î¸¡º÷¥¯¥¨¥ê¤Ø¤Î±þÅú®ÅÙ¤ò°Ý»ý¤·¤¿¤Þ¤Þ¥³¥¹¥È¤òÂçÉý¤Ë¸º¾¯¤µ¤»¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£°ìÉô¤Î¥¯¥¨¥ê¤Ë¤ª¤¤¤Æ¿ôÉ´¥ß¥êÉäȤ¤¤¦Ä¹¤¤Ãٱ䤬ȯÀ¸¤¹¤ë¤È¤¤¤¦¥Ç¥á¥ê¥Ã¥È¤âÊ»¤»»ý¤Ã¤Æ¤¤¤ë¤â¤Î¤Î¡¢ÃÙ±ä¤Î±Æ¶Á¤è¤ê¤â¥³¥¹¥È¤ÎÀáÌóÎ̤ÎÊý¤¬²ÁÃͤ¬Â礭¤¤¤È¤Î¤³¤È¡£



¥¯¥¨¥ê¤Î½èÍý»þ´Ö¤Î¥¤¥á¡¼¥¸¤Ï¤³¤ó¤Ê´¶¤¸¡£¥ª¥Ö¥¸¥§¥¯¥È¥¹¥È¥ì¡¼¥¸¤«¤é¥Ç¡¼¥¿¤ÎÆɤ߹þ¤ß¤¬É¬Íפˤʤ륳¡¼¥ë¥É¥¯¥¨¥ê¤Ë¤ª¤¤¤Æ¤â¡¢¥é¥¦¥ó¥É¥È¥ê¥Ã¥×²ó¿ô¤òưŪ¤ËÄ´À°¤¹¤ë¤³¤È¤Ç¤Ç¤­¤ë¸Â¤ê¹â®¤Ë½èÍý¤Ç¤­¤ë¤è¤¦¹©Éפ·¤Æ¤¤¤ë¤È½Ò¤Ù¤é¤ì¤Æ¤¤¤Þ¤¹¡£



turbopuffer¤Ï³«È¯Ãʳ¬¤Ç¤Ï¤¢¤ë¤â¤Î¤Î´û¤ËAI¥³¡¼¥É¥¨¥Ç¥£¥¿¤ÎCursor¤Ø¤ÎºÎÍѼÂÀÓ¤¬¤¢¤ë¤È¤Î¤³¤È¡£½é´ü¸ÜµÒ¤È¤·¤Æ»ÈÍѤ·¤¿¤¤¾ì¹ç¤ÏÌ䤤¹ç¤ï¤»¤¹¤ë¤è¤¦½Ò¤Ù¤é¤ì¤Æ¤¤¤Þ¤¹¡£