Upgrade to Pro — share decks privately, control downloads, hide ads and more …

プロダクト分析サービスの超高速集計レイヤーとしてのTiDB - 株式会社プレイド - TiDB User Day 2023

プロダクト分析サービスの超高速集計レイヤーとしてのTiDB - 株式会社プレイド - TiDB User Day 2023

イベント開催日:2023年7月7日
講演者:株式会社プレイド Lead Product Engineer 小川 拓也 氏

CXプラットフォームを開発および運営するPLAIDでは「データによって人の価値を最大化する」というミッションのもとKARTEというプロダクトをはじめ様々な製品開発を行っています。その中でもユーザーを理解するための機能群は重要な位置付けであり、大量データを扱う技術基盤やそれらを活用した分析機能の開発によって、より解像度の高いユーザー理解の上でより良いサービス提供ができる環境の実現を目指しています。このスライドでは、新規開発しているProductAnalyticsサービスにおいて大量の行動ログを超高速かつ柔軟に分析処理するデータベースの1つとしてTiDBを採用したモチベーションやポテンシャルをお話しします。

アーカイブ動画:https://youtu.be/ZbSwGu25BtE

PingCAP-Japan

July 11, 2023
Tweet

More Decks by PingCAP-Japan

Other Decks in Technology

Transcript

  1. ɹɹʛɹɹ© 2019 PLAID Inc. 2 ࣗݾ঺հ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ ɹɹʛɹɹ©

    PLAID Inc. খ઒ ୓໵ Lead Product Engineer @ 2009೥ʹϠϑʔʹ৽ଔೖࣾ͠ɺΤϯδχΞͱͯ͠޿ࠂγεςϜ΍toCαʔϏεͷ։ൃɾӡ༻ɾϚ ωʔδϝϯτ౳ʹैࣄɻ ͦͷޙ2019೥12݄ʹϓϨΠυʹೖࣾ͠ɺϢʔβʔ෼ੳͷػೳͰ͋ΔʮKARTE Insightʯ΍ ʮKARTE LiveʯΛத৺ʹϓϩμΫτ։ൃΛߦͳ͍ɺݱࡏ͸࣍ੈ୅ܕͷϓϩμΫτ෼ੳSaaS ʮWicleʯͷ্ཱͪ͛΋ߦͳ͍ͬͯΔɻ
  2. 5 ɹɹʛɹɹ© PLAID Inc. PLAIDͷ໨ࢦ͢΋ͷ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ ”Ϛϧννϟωϧ ×

    1st Party Customer Data × ϦΞϧ λΠϜ” ΛϫϯετοϓͰఏڙ͢Δσʔλ׆༻ͷ৽͍͠ ϓϥοτϑΥʔϜ
  3. KARTEʹ͍ͭͯ 6 ɹɹʛɹɹ© PLAID Inc. 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ ֬ೝ͢Δ جຊαʔϏε΍͝ར༻ํ๏Λ͝঺հ͠·͢ɻ

    ͓ಘͳಛయ΍໾ཱͭ৘ใ͕ຬࡌͰ͢ɻ ॳΊͯͷํ΁ いますぐ確認する UIデザイナーだけどなかなか上達しない、今 よりスキルアップしたいという⽅必読です。 UIデザイナーが知っておくべき 7つのデザインルール DESIGN RULES » CHECK ずっと使えるアイテムだけを揃えました。 この機会をお⾒逃しなく。 絶対、 欲しい! ౙͷओ໾ɺ Ξ΢λʔ COLLECTION OUTER 検索条件を少し変更するだけで、あなたの理 想の物件に出会える可能性が⾼くなります。 条件を変えて検索してみてください。 ご希望の物件は ⾒つかりませんでしたか? 閉じる ҰਓҰਓʹ߹Θͤͨ ސ٬ମݧΛఏڙ WebαΠτͷ๚໰ऀͷߦಈΛ
 ސ٬͝ͱʹϦΞϧλΠϜʹղੳ $9 ސ٬ମݧ ϓϥοτϑΥʔϜ
  4. Stats of KARTE 7 ɹɹʛɹɹ© PLAID Inc. 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ

    σʔλن໛΋രൃతʹ૿Ճ 199 ԯUU ྦྷܭϢʔβʔ਺ ※1 0.x ඵ/ղੳ ղੳ଎౓ 134,000 over ඵؒτϥοΩϯά਺ ※3 2.59 ஹԁ ೥ؒղੳྲྀ௨ֹۚ ※2 ※1 ϩʔϯνʙ2023೥2݄·ͰͷϢχʔΫϢʔβʔ਺ͷ࣮੷ ※2 ECྖҬʹ͓͚Δղੳྲྀ௨ֹۚɻ2022೥3݄ʙ2023೥2݄·Ͱͷ୯೥ͷ࣮੷ 
 ※3 ӾཡɺΫϦοΫɺߪೖͳͲKARTEͰܭଌ͍ͯ͠ΔϢʔβʔͷશΠϕϯτ͕ ର৅ɻϩʔϯνʙ2023೥3݄·Ͱʹ͓͚Δ࠷େ஋ 8 + PB ஝ੵσʔλྔ 180 + PB ݄ؒղੳσʔλྔ
  5. 12 ɹɹʛɹɹ© PLAID Inc. ΞʔΩςΫνϟͱ՝୊ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ ɾ෼ੳػೳͰ͸BigQueryΛϝΠϯDBͱͯ͠ར༻ ɾϚϧνςφϯτߏ଄Ͱɺଟ༷ͳσʔλಛੑ(਺ɾ࣭)ΛҰݩͰѻ͏

    ɾେྔͷϨίʔυ਺Λ࣋ͭimmutableͳΠϕϯτσʔλͱmutable ͳಛੑͰେྔͷߋ৽ॲཧ͕ඞཁͳϢʔβʔσʔλ ɾͦΕͧΕͷσʔλΛ૊Έ߹Θͤͨର࿩తͳݕࡧɾՄࢹԽػೳ ɾΠϕϯτσʔλ͸ࣗ༝౓ͷ͋ΔεΩʔϚϨεσʔλͰ͋ΒΏΔ ϑΟʔϧυʹରԠ
  6. 14 ɹɹʛɹɹ© PLAID Inc. ΞʔΩςΫνϟͱ՝୊ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ 0.xඵҎ಺ͷΦʔμʔͰಈ࡞͢ΔΠϯλϥΫςΟϒͳσʔλ෼ੳମݧΛ࣮ݱ͍ͨ͠ ɾBigQueryͰ͸਺ेTBҎ্ͷن໛Ͱͷσʔλूܭॲཧʹ΋εέʔϧ͢Δ

    ɾҰํͰΞϯίϯτϩʔϥϒϧͳ෦෼΋ଟ͘User facingͳ૚ͷDBͱͯ͠ͷར༻ʹ͸޲͔ͳ͍ଆ໘͸ଟ͍ ɾϦιʔεΛ૬౰ྔ֬อ͠਺ඵ͔Βे਺ඵϨϕϧͷ଎౓ײ͸࣮ݱͰ͖Δ͕࠷ߴͷମݧͱ͸·ͩݴ͑ͳ͍ ɾσʔλ෼ੳͷ଴ͪ࣌ؒ͸࡞ۀίετͱϞνϕʔγϣϯʹଟେͳӨڹΛ༩͑Δ ɾ࠷ߴͷମݧͰ෼ੳͰ͖Δ؀ڥΛ࡞Δ͜ͱ͕ɺΫϥΠΞϯτ͕ϢʔβʔΛ஌Δ͜ͱɺͻ͍ͯ͸Ϣʔβʔʹ࠷ దͳମݧ ( CX ) Λಧ͚Δ͜ͱʹͭͳ͕Δ ɾ0.xඵҎ಺Ͱ෼ੳॲཧΛࡹ͚Δ͜ͱΛ໨ࢦ͢
  7. 15 ɹɹʛɹɹ© PLAID Inc. ΞʔΩςΫνϟͱ՝୊ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ ͦͷҝͷΠϯλϥΫςΟϒϨΠϠʔ༻ͷDBΛ୳ࡧ ɾOLAPಛԽͷσʔλϕʔεͷબ୒ࢶ΋͍͔ͭ͋͘Δ

    ( Druid, Clickhouse, PinotͳͲ) ɾҰํͰϢʔεέʔεͷ෯͕޿͘ɺσʔλ௥Ճ͚ͩͰແ͘ߋ৽ॲཧ΋ߟྀͨ͠ΞʔΩςΫνϟͷγϯϓϧ͞΍ߦ ࢦ޲ͱྻࢦ޲Λ૊Έ߹ΘͤͨΫΤϦॲཧͷඞཁੑ΋Ұఆ͋ΔͨΊHTAPσʔλϕʔε΋ݕ౼ ɾTiDBҎ֎ʹ΋AlloyDB΍Unistoreͱ͍͏બ୒ࢶ΋͋Δ
  8. 17 ɹɹʛɹɹ© PLAID Inc. TiDB΁ͷظ଴஋ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ TiDBݕূͷૂ͍ͱண໨ͨ͠ϙΠϯτ TiDBͷίϯηϓτͰ΋͋ΔɺOLTP/OLAPཱ྆͢ΔDBΛ΋ͬͯΞʔΩςΫνϟΛSimplifyͰ͖Δύλʔϯ͸ັྗɻ

    ·ͣେྔσʔλͱεΩʔϚϨεͳੑ࣭ʹରͯ͠෼ੳಛԽܕDBʹ͋Δఔ౓Ͱ΋ର߅Ͱ͖Δੑೳ͕͋Ε͹ ཧ૝తͳ׆༻έʔεͷՄೳੑ͕ੜ·ΕΔͨΊɺOLAPͷੑೳ͕ୈҰʹؾʹͳΔϙΠϯτͩͬͨɻ TiDBʹ͸ ɾMySQLޓ׵Λ࣮ݱ͠ΫΤϦΦϓςΟϚΠζΛ୲͏TiDB ɾߦࢦ޲ॲཧΛ୲͏TiKV ɾྻࢦ޲ॲཧΛ୲͏TiFlash ͷ3͕ͭओཁͳίϯϙʔωϯτ ಛʹOLAPͰඞཁෆՄܽͳʮྻࢦ޲ॲཧΛ୲͏TiFlashʯ Λॏ఺తʹ׆༻
  9. 18 ɹɹʛɹɹ© PLAID Inc. TiDB΁ͷظ଴஋ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ TiFlash ɾྻࢦ޲ܕετϨʔδίϯϙʔωϯτ

    ɾTiDB͕TiFlashͰॲཧ͢΂͖͔ίετϕʔε/ϧʔϧϕʔεͰΦϓςΟϚΠζ 
 ɾTiKVಉ༷ʹɺTiFlashͷ֤ϊʔυ΋Coprocessorͱͯ͠ಈ࡞ͤͨ͞ΓMPP workerͱͯ͠ॲཧͷେ෦෼ΛPushdown͞ ͤΔ͜ͱ͕Ͱ͖Δ ɾTiKV͔ΒRaft learnerϓϩτίϧͰTiFlashʹ΋MVCCԼͰҰ؏ੑΛอͬͯσʔλ͕࿈ܞ͞ΕΔ ɾҰ؏ੑΛߴ͘อͭঢ়ଶ͕σϑΥ͕ͩɺͦͷҰ؏ੑΛ٘ਜ਼ʹͯ͠ύϑΥʔϚϯεΛ޲্ͤ͞ΔΦϓγϣϯͳͲ΋͋Δ
  10. 19 ɹɹʛɹɹ© PLAID Inc. TiDB΁ͷظ଴஋ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ ɾOSSͰ͋Δ ɾTiDB֤ίϯϙʔωϯτ͸ಠཱతʹ։ൃ͞Ε͍ͯͯɺબ୒తʹಋೖ֦͠ுͰ͖Δߏ੒ͳ͕ΒγϯϓϧͳΦϖϨʔγϣ

    ϯͰ࣮ݱͰ͖ΔϞμϯͳ࡞Γ ɹɾTiDBΛ௨ͯ͠ɺTiKV/TiFlashΛಁաతʹ࢖͑Δ ɾਫฏεέʔϧੑ͕ॏࢹ͞Ε͍ͯͯɺଟ༷ͳ͓٬͞·ͷେྔͷσʔλΛѻ͏ϚϧνςφϯτܕαʔϏεͷDBͱͯ͠΋ े෼࢖͑ΔՄೳੑΛΞʔΩςΫνϟʹײͨ͡ ɾPingCAPࣾʹΑΔϑϧϚωʔδυܕαʔϏεɾαϙʔτͷଘࡏ ɾ౰ॳJSON_EXTRACTͳͲ࢖༻͍ͨ͠JSONؔ਺͕TiFlashͰαϙʔτ͕ແ͘Feature requestͱͳ͕ͬͨͦͷ࣍ͷ verͰରԠ͞Εͨ։ൃαΠΫϧͷ଎͞ TiDBͷݕূΛ։࢝͠Α͏ͱߟ͑ͨϙΠϯτ
  11. 20 ɹɹʛɹɹ© PLAID Inc. TiDB΁ͷظ଴஋ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ ɾϢʔβʔσʔλ͸mutableͳಛੑ͕ͩɺେྔʹൃੜ͢ΔΠϕϯτσʔλ͸immutable͕ݪଇ ɾ͜ͷಛੑ͕͋ΔͨΊɺྻࢦ޲ετϨʔδଆͰ΋σʔλߋ৽଎౓Λҙࣝͨ͠ΞʔΩςΫνϟʹͳ͍ͬͯΔTiDBͰ͸

    ଞͷOLAPಛԽDBʹରͯ͠ಡΈऔΓͷϨΠςϯγʔͳͲ͕τϨʔυΦϑʹͳ͍ͬͯΔͷͰ͸ʁͱ͍͏఺ ҰํͰݒ೦ࣄ߲΋ IUUQTXXXQJOHDBQDPNCMPHUIFMPOHFYQFEJUJPOUPXBSENBLJOHBSFBMUJNFIUBQEBUBCBTF
  12. 21 ɹɹʛɹɹ© PLAID Inc. TiDBݕূͷߏ੒ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ ˞όʔδϣϯ͸ݱࡏ͸WΛ࢖༻ TiDBݕূͷߏ੒

    ౰໘ͷධՁϙΠϯτ͸OLAPͷੑೳ΍ͦͷӡ༻ͷ༰қੑʹͳΔҝɺWriteଆͷվमͱධՁ͸޻਺ͷ؍఺͔Β ΋είʔϓ͔Β֎ͨ͠ɻ ͦͷͨΊɺBigQueryΛσʔλιʔεͱͯ͠पظతʹσʔλΛಉظ͠TiDBͰOLAPΛ࣮ߦ͢ΔܗΛऔ͍ͬͯΔɻ ※ϕετͰ͸ແ͍΋ͷͷɺαʔϏεͷಛੑ্σʔλͷ઱౓Λ͋Δఔ౓མͱ͢͜ͱ͕ڐ༰Ͱ͖ΔҝऔΕΔߏ੒
  13. 24 ɹɹʛɹɹ© PLAID Inc. νϡʔχϯάϙΠϯτ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ νϡʔχϯάϙΠϯτ -

    ςʔϒϧεΩʔϚ JSON_EXTRACT౳ͷؔ਺͕TiFlash pushdownͰαϙʔτ͞Εͨ΋ͷͷɺ ϥϑʹେྔͷJSONσʔλΛύʔεͤ͞ΔΫΤϦΛ࣮ߦͯ͠΋TiFlashͷCPUෛՙ͕ߴ͘ΫΤϦ୯ମͰ͸͋Δఔ౓ͷ଎౓ ͸ग़Δ΋ͷͷฒྻ਺͕ߴ·Δ͕ҰؾʹϨΠςϯγʔ͕ߴ·ͬͯ͠·ͬͨɻ scale-out/upͰղܾͰ͖Δ໘΋͋Δ͕ɺίετߏ଄ΛΑΓ࠷దԽ͍ͨ͠ͱߟ͑ͨɻ ૉ௚ͳΞϓϩʔνͱͯ͠ΧϥϜͷ෼ׂ͢Δߏ੒ʹஈ֊తʹมߋɻεΩʔϚϨεͳσʔλͰ͸͋Δ͕ɺϢʔβʔ͕ຖ೔ຖ ճࢀর͢Δॏཁͳσʔλ͸ݶΒΕΔੑ࣭΋͋Δҝɺ͋Β͔͡ΊॏཁͳϑΟʔϧυΛఆٛ͠ΧϥϜԽɻͦΕҎ֎ͷϑΟʔ ϧυ͸JSONΛಡΈʹߦ͘ɻ
  14. 25 ɹɹʛɹɹ© PLAID Inc. νϡʔχϯάϙΠϯτ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ νϡʔχϯάϙΠϯτ -

    ςʔϒϧεΩʔϚ(ύʔςΟγϣχϯά) ɾTiFlashͰ͸ςʔϒϧͷಡΈऔΓ͸ύʔςΟγϣϯͷ୯ҐͰ෼཭Ͱ͖Δ ɾద੾ͳύʔςΟγϣχϯά͕ൈຊతͳΫΤϦෛՙͷܰݮʹ ɾҰํͰ෼ׂ୯Ґ͕ࡉ͔͚Ε͹ࡉ͔͍΄ͲύϑΥʔϚϯε্͕͕Δ༁Ͱ͸ແ͘ɺύʔςΟγϣϯ؅ཧͷΦʔόʔϔου͕ ߴ͘ͳΓ͗͢ΔՄೳੑ͕͋Δҝɺσʔλͷಛੑʹ߹Θͤͨߏ੒͕ඞཁɻʢ·ͩฐࣾ͸νϡʔχϯά్தஈ֊ʣ ɾ(*Request) BigQuery΍SnowflakeͷClustering keyɺRedshiftͷSort keyͷ༷ͳܗͰσʔλͷϨΠΞ΢τΛಡΈऔ Γॲཧʹ߹Θͤͯ࠷దԽ͢Δ༷ͳػೳ͕͋Δͱ͞ΒͳΔύϑΥʔϚϯεͱ؅ཧੑͷ޲্͕ݟࠐΊͦ͏
  15. 26 ɹɹʛɹɹ© PLAID Inc. νϡʔχϯάϙΠϯτ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ v6ܥͷஈ֊Ͱ͸·ͩ࠷దԽ͞Ε͍ͯͳ͍ύϥϝʔλΛઃఆ͍ͯ͠Δ͜ͱ΋͕͋ͬͨ ݱࡏv7.1·Ͱver

    upͯ͠ຆͲͷύϥϝʔλ͸͋·ΓखΛՃ͑ͣͱ΋໰୊ແ͘ɺઃఆ͍ͯ͠Δͷ͸ҎԼ͚ͩʹ͍ͯ͠Δɻ tiflash_fastscan=ON; tidb_txn_mode=optimistic; tidb_mem_quota_query=-1; tidb_opt_force_inline_cte=ON; νϡʔχϯάϙΠϯτ - ֤छύϥϝʔλ
  16. 27 ɹɹʛɹɹ© PLAID Inc. νϡʔχϯάϙΠϯτ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ tiflash_fastscan: https://docs.pingcap.com/tidb/stable/use-fastscan

    TiFlashͷFastScanΛ༗ޮʹ͢Δɻ 
 ࣅͨػೳͱͯ͠Stale read͕͋Δ͕ɺͪ͜Β͸ڥքʹ͢Δ࣌ؒΛઃఆͳͲ͸ͤͣεΩϟϯ࣌ͷσʔλҰ؏ੑʹؔ͢ΔҰ෦ॲཧࣗ ମΛεΩοϓͯ͠σʔλΛऔಘ͢ΔػೳɻεΩοϓ͞ΕΔҝɺͦͷ࣌఺Ͱॻ͖ࠐ·Εͨσʔλɺͱ͍͏݁Ռʹ͸ͳΔ͕ͦΕͰ໰ ୊ແ͍έʔεͰ͸εϧʔϓοτ͕޲্͢Δɻ 
 ݱ࣌఺Ͱ͸Late materializationػೳͱ͸τϨʔυΦϑͰ྆ํಉ࣌ʹ࢖͏͜ͱ͸࢓༷ͱͯ͠ෆՄೳͱͷ͜ͱɻͦͷͨΊonʹ͢Δ͜ ͱͰύϑΥʔϚϯε͕མͪΔΫΤϦ΋͋Δɻ tidb_txn_mode: https://docs.pingcap.com/tidb/stable/optimistic-transaction ָ؍తτϥϯβΫγϣϯϞʔυΛ༗ޮʹ͢Δɻ ࠓճͷέʔεͰ͸όονॲཧతʹσʔλΛॻ͖ࠐΉྲྀΕͳͷͱɺϝΠϯͷΠϕϯτσʔλ͕immutableͳಛੑͳҝߦϩοΫ͸ຆ ͲͷෆཁͳͨΊॻ͖ࠐΈ଎౓Λ্͛ΔͨΊʹઃఆɻ tidb_mem_quota_query / tidb_opt_force_inline_cte ͋͑ͯΫΤϦͷϝϞϦ࢖༻ྔ͕େ͖͘͢Δέʔε΋͋ΓɺαΠζ੍ݶ؇࿨ͱ࢖༻ྔܰݮͷͨΊʹઃఆɻ νϡʔχϯάϙΠϯτ - ֤छύϥϝʔλ
  17. 28 ɹɹʛɹɹ© PLAID Inc. νϡʔχϯάϙΠϯτ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ νϡʔχϯάϙΠϯτ -

    ΫΤϦ جຊతʹ͸ΫΤϦͰ͸ओʹઌʹڍ͛ͨςʔϒϧεΩʔϚͷνϡʔχϯάʹ߹ΘͤྻɾύʔςΟγϣϯͷબ୒͕ద੾ͳߦΘ Ε༨ܭͳεΩϟϯ͕ͳ͍͔ɺద੾ͳengineʹpushdown͞Ε͍ͯΔ͔ͳͲΛ࣮ߦܭըΛݩʹ֬ೝ͍ͯͬͨ͠ɻ TiDB CloudͷMonitoringػೳͰ΋Slow Query΍ͦͷ࣮ߦܭըɺϝϞϦ࢖༻ྔɺࡉ෼Խ͞Ε࣮ͨߦ࣌ؒ౳͕֬ೝՄೳɻ ʮద੾ͳengineʹpushdown͞Ε͍ͯΔ͔ʯ͸ɺΫΤϦͷॻ͖ํ͔Βύϥϝʔλɺςʔϒϧߏ੒ɺ౷ܭ৘ใͷঢ়گͳͲʹ ΋ΑΓɺ࣮ߦܭըͷಡΈऔΓ΋ಠࣗͷߟ͑ํ͕ඞཁͳ෦෼΋͋ΓΩϟονΞοϓʹ͸͕͔͔࣌ؒͬͨɻ ͦ͜͸υΩϡϝϯτࣗମ͸๛෋Ͱ͋Δͷͱɺ࣮ߦܭըͷධՁ΍࠷దͳ࣮ߦϓϥϯΛऔΔҝͷύϥϝʔλͷϨίϝϯυɺ OOM΁ͷରॲ౳࣮ࡍͷΫΤϦΛҰॹʹ֬ೝ͠ͳ͕Βαϙʔτͯ͠΋Β͑ɺϚΠάϨʔγϣϯͰ͸ແ͘୳ࡧతͳධՁͩͬ ͨͷ΋͋Γඇৗʹॿ͔ͬͨɻ ·ͨɺؾʹͳ͍ͬͯͨϙΠϯτͩͬͨTiKVͱTiFlashΛ૊Έ߹ΘͤͨΫΤϦʹ͍ͭͯ΋ྑ޷ͳύϑΥʔϚϯεΛग़ͨ͠ɻ
  18. 29 ɹɹʛɹɹ© PLAID Inc. νϡʔχϯάϙΠϯτ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ EXPLAIN SELECT

    event.*, user.* FROM event_xxx event JOIN usersummary_xxx user USING (user_hash) WHERE view_uri_url LIKE '%hoge%' ORDER BY sync_date DESC LIMIT 10 avg 6,486ms
  19. 30 ɹɹʛɹɹ© PLAID Inc. νϡʔχϯάϙΠϯτ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ EXPLAIN WITH

    filtered_events AS ( SELECT event_hash, user_hash FROM event_xxx event WHERE view_uri_url LIKE '%hoge%' ORDER BY sync_date DESC LIMIT 10 ) SELECT event.*, user.* FROM filtered_events JOIN event_xxx event ON filtered_events.event_hash = event.event_hash JOIN usersummary_xxx user ON filtered_events.user_hash = user.user_hash ORDER BY 
 sync_date DESC avg 682ms
  20. 31 ɹɹʛɹɹ© PLAID Inc. νϡʔχϯάϙΠϯτ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ νϡʔχϯάϙΠϯτ -

    ͦͷଞ ɾͦ͜·Ͱ଎౓͕ग़ͳ͍ΫΤϦ͕͋ΓɺαϙʔτΤϯδχΞͷํʹϓϩϑΝΠϧΛऔͬͯ΋Βͬͨͱ͜ΖTiFlash୯ମͷ ଎౓͸ѱ͘ແ͍΋ͷͷ࠷ऴతʹ݁Ռ͕TiDBʹ౉͞ΕϨεϙϯε͢Δ෦෼Ͱॲཧͷ଺ཹ͕ى͖͍ͯΔͱ͍͏͜ͱ͕͋ͬͨ ɹɾσʔλͷಛੑ΍ߏ੒ʹదͨ͠ύϥϝʔλΛఏҊ௖͖ҰఆͷޮՌ͕͋ͬͨ ɹɾར༻ऀ໨ઢͰ͸ݪҼͷ੾Γ෼͚͸೉͔ͬͨ͠ͷ͸೉఺͕ͩɺαϙʔτʹΑΓςϯϙྑ͘ڀ໌Ͱ͖ͨ ɾʮALTER TABLE ... COMPACT TIFLASH REPLICAʯʹΑΓTiFlashͷ࡟আ͞ΕͨϨίʔυͷ෺ཧ࡟আͳͲετϨʔδͷ ࠷దԽ͕ߦΘΕΔ͕ɺݕূԾఆͰ͜ͷ࣮ߦલޙͰ1 - 2ׂఔ౓ΫΤϦͷ଎౓͕վળ͞Εͨ ɹɾ಺෦తʹपظతʹࣗಈ࣮ߦ͞Ε͍ͯΔ͕ɺධՁݕূաఔͰ͸ҙࣝతʹ࣮ߦ͢Δ͜ͱͰΑΓྑ޷ͳੑೳ͕ग़ͨ
  21. 32 ɹɹʛɹɹ© PLAID Inc. νϡʔχϯάϙΠϯτ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ νϡʔχϯάϙΠϯτ -

    ͦͷଞ ɾ௕ظؒඍྔͳ͕ΒTiDBͷಛఆϊʔυͷCPU͕ফඅ͞Εଓ͚Δͱ͍͏ঢ়ଶ͕͋ΓௐࠪΛґཔͨ͠ͱ͜ΖANALYZE TABLE͕಺෦తʹࣗಈͰ࣮ߦ͞ΕΔதͰɺϨίʔυ͕0͔͘͝গྔͷύʔςΟγϣϯ͕ଘࡏ͢Δͱ౷ܭ৘ใͷߋ৽ॲཧ͕ ࣦഊͦ͠ͷϦτϥΠॲཧ͕௕ظԽ͍ͯ͠Δɺ͔ͭखಈͰͷ࣮ߦΛߦΘͳ͍ͱ౷ܭ৘ใ͕ߋ৽͞Εͳ͍͜ͱ͕͋ͬͨ ɹɾݪҼڀ໌ʹਚྗ௖͖ɺى͖͍ͯͨ͜ͱ΋ৄࡉΛղઆͯ͠௖͖ॿ͔ͬͨ ɹɾ಺෦తͳAuto analyzeͷ࢓༷͕བྷΉΤοδέʔεͰ͸͋Δͱͷ͜ͱ͕ͩɺࠓޙվળ͸ر๬͍ͨ͠ϙΠϯτ
  22. 34 ɹɹʛɹɹ© PLAID Inc. ϨΠςϯγʔͷൺֱ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ ɾಉҰͷσʔλ͕ಘΒΕΔBQ/TiDBͦΕͧΕͷ σʔλऔಘʹؔ͢Δ୅දతͳػೳͷE2EͷϨΠ

    ςϯγʔͷൺֱ 
 ɾBigQueryଆͰ΋े෼ͳεϩοτ͕͋Δঢ়ଶ ԼΛҙ͍ࣝͯ͠Δ΋ͷͷ׬શʹϑΣΞͳൺֱ͸ ೉͍͠ҝΠϝʔδϨϕϧ ɾTiDBଆ͸νϡʔχϯά༨஍΋·ͩ࢒͍ͯ͠Δ ΋ͷͷಉ౳ͷσʔλྔΛࡹ͘ػೳͰେ͖ͳ଎౓ վળ͕Ͱ͖͍ͯΔ ݱஈ֊ͰͷBQ/TiDBͦΕͧΕͷE2EͷϨΠςϯγʔͷൺֱ
  23. 35 ɹɹʛɹɹ© PLAID Inc. TiDB vs Pinot vs Rockset 2023.07.07ɹɹʛɹɹTiDB

    User Dayɹɹʛɹ ɾTiDB / Apache Pinot / Rockset ͷ؆қతͳOLAPੑೳൺֱ ɾwikipediaͷެ։σʔληοτͷҰ෦(໿1000ສߦ)Λ࢖༻ ɾ୯७ͳΧ΢ϯτ͔Β࣌ܥྻΧ΢ϯτɺߴ/௿ΧʔσΟφϦςΟΧϥϜ ͷfacetܭࢉͳͲͷΫΤϦͷฏۉϨΠςϯγʔΛܭଌ OLAP query latency Pinot͸௿ϨΠςϯγʔ͕ಛ௃ͷOLAPʹಛԽͨ͠ྻࢦ޲DBɻඇৗʹ ߴύϑΥʔϚϯε͕ͩɺσʔλಛੑʹ߹Θͤͨηάϝϯτνϡʔχϯ ά౳΋ඞཁͰӡ༻ʹ͸ਓతίετ͕͔ͳΓ͔͔Δ Rockset͸Rockset͕ࣾఏڙ͢ΔOLAPʹಛԽͨ͠ϑϧϚωʔδυܕ ͷDBɻߦ/ྻࢦ޲྆ํͷಛੑΛ࣋ͪɺεϚʔτεΩʔϚͱ͍͏ػೳͰ εΩʔϚϨεͳJSONσʔλΛࣗಈͰߏ଄Խσʔλͱಉ౳ͷύϑΥʔ ϚϯεͰѻ͑Δͷ͕ಛ௃
  24. 36 ɹɹʛɹɹ© PLAID Inc. TiDBͷධՁ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ TiDBͷධՁΛ௨ͯ͠ັྗͱײ͡Δɾ͞ΒʹධՁΛਂΊ͍ͨϙΠϯτ ύϑΥʔϚϯεɾεέʔϥϏϦςΟ

    ઌͷεϥΠυͷ௨ΓOLAPಛԽܕͷDB͸७ਮͳੑೳ͸༏Ε͍ͯΔ͕ɺTiDB΋ൺݞ͠ಘΔੑೳɻ TiFlashͷਫฏεέʔϧੑͷߴ͞΋͋ΓɺαʔϏε੒௕ͱڞʹඇઢܗతʹσʔλྔ΍ϫʔΫϩʔυ͕૿Ճ͢Δ ؀ڥԼͰ΋े෼࢖༻Ͱ͖Δϙςϯγϟϧ͕͋Δͱײͨ͡ɻ ࠷ॳͷҹ৅Ͱ͸Ͳ͏ͯ͠΋τϨʔυΦϑ͕ੜ·Εͯόϥϯε͸ྑ͍͕ϋϚΓ͖Γ͸͠ͳ͍ͱࢥ͍͕ͬͯͨɺ OLTP/OLAP྆໘Ͱߴ͍ਫ४ͰϢʔεέʔεͷջ͸ਂ͍ɺͱ͍͏ҹ৅ʹมΘͬͨɻ ϑϧϚωʔδυαʔϏεΛར༻͢Ε͹؅ཧίετΛେ͖͘Լ͛Δ͜ͱ͕Ͱ͖Δ͜ͱ͕Ͱ͖ɺ τϥϒϧγϡʔςΟϯά΍ਂ͍νϡʔχϯά͕ඞཁͳ࣌͸۩ମ·Ͱαϙʔτͯ͘͠ΕΔϓϩϑΣογϣφϧ αʔϏε΋ͱͯ΋ྑ͍ϙΠϯτͩͬͨɻ ӡ༻ͷ༰қੑ
  25. 37 ɹɹʛɹɹ© PLAID Inc. TiDBͷධՁ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ TiDBͷධՁΛ௨ͯ͠ັྗͱײ͡Δɾ͞ΒʹධՁΛਂΊ͍ͨϙΠϯτ ίετޮ཰

    ੑೳϙςϯγϟϧ΋͋Γਫฏεέʔϧੑ΋ߴ͍͕ɺσʔλαΠζ΍QPSΛ૿΍ͨ࣌͠ʹίετޮ཰ͷ࠷దԽ ͕Ͳ͜·ͰͰ͖Δ͔͸ࠓޙධՁΛਂΊ͍ͨϙΠϯτɻ ػೳͱͯ͠͸ɺࠓޙΦʔτεέʔϦϯάͷػೳ΍Clusteringͱ͍ͬͨσʔλϨΠΞ΢τͷ࠷దԽͳͲ͕ΑΓ Ͱ͖Δ༷ʹͳΔͱར༻ن໛͕ॊೈʹͳΓελʔτΞοϓͱͯ͠͸ΑΓ࢖͍΍͘͢ͳΔͱײͨ͡ɻ
  26. 38 ɹɹʛɹɹ© PLAID Inc. ·ͱΊ 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ ฐࣾPLAIDͰ͸1st Party

    Customer DataΛத৺ʹ༷ʑͳϓϩμΫτΛ։ൃ͍ͯ͠Δ ɾϢʔβʔʹΑΓྑ͍ମݧΛಧ͚ΔͨΊʹɺϢʔβʔΛ஌ΕΔ͜ͱΛಛʹେ੾ʹ͍ͯ͠Δ ɾ๲େͳimmutableͳΠϕϯτσʔλɺmutableͳϢʔβʔσʔλΛBigQueryΛϝΠϯDBͱͯ͠ѻ͍෼ੳػೳΛఏڙ ɾ࠷ߴͷମݧͰσʔλ෼ੳͰ͖Δ؀ڥΛ໨ࢦͯ͠վળ͠ଓ͚͍ͯΔ 0.xඵͰσʔλ෼ੳͰ͖ΔDBΛ୳ࡧ ɾHTAP΋ࢹ໺ʹೖΕTiDB͸༗ྗͱײ͡ݕূ ɾOLAPಛԽ͍ͯ͠ͳ͍෼ɺେ͖ͳτϨʔυΦϑ͕͋Δ͔͸ݒ೦ͩͬͨ TiDBͷதͰ΋ಛʹTiFlashʹண໨ͯ͠ݕূ ɾԾ૝ͷσʔλ͚ͩͰແ͘ɺ࣮σʔλͷ౤ೖɾαʔϏεʹ઀ଓ΋ͯ͠ݕূ(ஈ֊త͕ͩಋೖࡁ) ɾPingCAPͷαϙʔτͷྗ΋͓आΓ͠ͳ͕Β༷ʑઃܭɾνϡʔχϯά(·ͩಓ൒͹) ·ͩνϡʔχϯά༨஍͕͋Δ͕ߴ͍ύϑΥʔϚϯεΛൃشͤ͞ΒΕ͍ͯΔ ɾOLAPಛԽܕͷDBͱൺݞ͠ಘΔੑೳϙςϯγϟϧ ɾύϑΥʔϚϯεҎ֎ͷεέʔϥϏϦςΟ΍ӡ༻༰қੑ͕ߴ͘૯߹ྗʹ༏Ε͍ͯΔ ɾίετޮ཰ʹ͍ͭͯ͸ར༻ن໛ͷ֦େͱڞʹྑ͘Ͱ͖Δ͔͸ࠓޙධՁΛਂΊ͍ͨ
  27. 39 ɹɹʛɹɹ© PLAID Inc. We are hiring! 2023.07.07ɹɹʛɹɹTiDB User Dayɹɹʛɹ

    PLAID ࠾༻৘ใ https://recruit.plaid.co.jp/ WicleΤϯδχΞืूϖʔδ https://recruit.plaid.co.jp/requisitions/wicle-engineer