DynamoDBとAmazon Redshiftなど複数のデータベースを、1つのNewSQL「TiDB」で統合に成功[PR]
現在、企業で使われているデータベースの主な役割は、会計や経理、受発注管理、製造管理など、社内業務を適切に管理することで経営を支援するためにデータを記録、分析するための基盤でしょう。
しかしそれに加えて現在急拡大しているのが、顧客との取引やコミュニケーションの履歴やアンケート結果、ソーシャルメディアのデータなど、さまざまな種類の膨大なデータを蓄積し分析することで、適切かつ効果的な顧客や顧客候補とのエンゲージメントを実現するためのデータの蓄積と分析基盤としての役割です。
データを活用して企業と顧客とのエンゲージメントを高めるサービス「MicoCloud」を提供するMicoworks社は、まさにこうした新しいデータベース基盤の実現と利用によって急成長している企業の1つです。
同社のサービスは600社以上の企業や組織に利用されており、その顧客および顧客候補の膨大な属性データなどを蓄積して高速に分析することがサービスの重要な核となっています。
大規模なデータの蓄積と分析を実現するデータベース基盤とはどのようなものなのかを見ていきます。
企業と顧客のコミュニケーションを最適化するMicoCloud
MicoCloudは企業と顧客のコミュニケーションを最適化し、「売上最大化・運用コスト削減」を実現するSNSコミュニケーションプラットフォームだと説明されています。
具体的には、LINEをはじめとするコミュニケーションツールを活用し、企業とその顧客の良好な関係の構築をコンサルティングも含めて支援。顧客がその企業や製品サービスのファンやロイヤルカスタマーになってもらうことを促進すると同時に、企業には顧客の見える化を提供します。
ユーザーには株式会社阪急阪神百貨店や京都トヨペット株式会社、ワタミ株式会社、京王観光株式会社、株式会社アイデム、株式会社中西呉服店、広島県などをはじめとする600社以上の多様多様な企業や組織が存在します。
これらの企業や組織がMicoCloudによって、店舗やサービスへの来店率や再訪率などの向上、販売促進、密接なコミュニケーション、あるいは従業員の帰属意識の向上などの成果に結びつけているのです。
3種類の用途が異なるデータベース構成の課題
このMicoCloudを支えるデータベース基盤は当初、主にそれぞれの用途に適した3つのデータベースで構成されていました。
数百種類の顧客属性を含む顧客のさまざまな情報を保存するNoSQLの「Amazon DynamoDB」、マスターデータベースとして企業を中心とした情報を扱うリレーショナルデータベースの「Amazon Aurora MySQL」、そしてデータウェアハウスとしてデータ分析を担う「Amazon Redshift」です。
しかしMicoCloudの急成長とともに種類の異なる3つのデータベースを運用し続けていく過程で、さまざまな課題が表面化します。
まず、DynamoDBとAmazon Aurora MySQLから、データウェアハウスのAmazon Redshiftへデータを集約するためのデータ転送の複雑さがありました。
データベース間のデータ転送は一見単純そうに見えますが、スキーマを持たないNoSQLからスキーマを持つAmazon Redshiftへのデータの変換、値を検査するバリデーションなどを伴い、さらに転送済みのデータは元のデータベースから削除するなど、いくつもの仕組みが備わっています。
通常の運用作業においても、3種類のデータベースに対してそれぞれ監視や通知の設定が必要となり、データベースのバックアップやリストアを行う際には3種類のデータベース相互の整合性を維持する慎重さが求められました。
アプリケーション開発においてもどのデータがどのデータベースに格納されているのかを考慮する必要がありますし、データベースのスキーマ変更を行う場合には、3種類のデータベース全体の整合性を維持しつつ行わなければなりません。
Micoworks社は約10名がMicoCloudの開発や運用に関わっていますが、「Amazon Redshiftの性能を出し切れるような最適化まで手が回らなかった」(プロダクト統括本部 SREチーム Senior Specialist 陳瀚氏)ことも課題とされていました。
TiDBで2種類のデータベースを統合へ
これらの課題を持つなかで、同社はMySQL互換のNewSQLデータベースである「TiDB」(タイデービー)の存在を知ります。
TiDBはサーバを増やすことで性能もデータ容量も向上していくスケーラブルな分散リレーショナルデータベースであり、さらにカラム型データストアのTiFlashを組み込むことによって、1つのデータベースシステムでトランザクション処理とデータ分析処理の両方を高い性能で実現できる特長を備えています。
TiDBを用いることでデータベースを統合できれば、Micoworks社の抱えていた課題は解決されます。さっそく同社はTiDBの検証を行いました。
検証時に目標とされていたのは、DynamoDBで実現されていたような高い書き込み性能、Amazon Redshiftのような高いデータ分析性能、そして同社が使い慣れていたMySQLとの高い互換性などです。
「検証結果は満足するものでした。MySQLとの互換性は問題なく高く、想定していたデータ量での性能も目標に達していました」(陳瀚氏)。
短期間で移行を成功。データ分析は1秒に短縮
この検証からわずか1カ月後、同社はTiDBへの移行を成功させました。このような短期間で移行できた理由を陳瀚氏は2つ挙げました。
1つは、TiDBのMySQLとの互換性の高さにより、それまでの知見が生かせたこと。そしてもう1つは、TiDBが持つ分散データベースという新しい技術に触れることで技術者のモチベーションが高まった、という点です。
同社が導入したのは、TiDBの開発元であるPingCAP社がクラウド上で提供するマネージドサービス「TiDB Cloud」です。
これは、この時点で同社のTiDBの運用経験がほとんどないため、マネージドサービスの方が安定した運用が期待できること、PingCAP日本法人のサポートが手厚いことなどを考慮した結果だと同社プロダクトマネージャの淡島良太氏は話します。
移行直後には、データベース設計上の不備によって特定のテーブルの特定の部分にアクセスが集中することによる処理の遅延が発生するなどのトラブルがあったとのことですが、想定通りPingCAP日本法人との連携により数時間で問題を特定し解決できました。
そしてTiDBに移行後は、それまで数種類だったデータベースを減らして運用できるようになり、運用の手間などに関するこれまでの課題が解決されました。
さらに、それまで1分程度かかっていたデータ分析が、TiDBでは1秒程度に高速化されるなどの性能向上も実現されています。
「結果的に私たちの(TiDB Cloudへ移行するという)判断は正しかったな、と思いました」(淡島氏)。
アジア1位を目指すプロダクトが求めるDB基盤とは
MicoCloudは、同社が「Cコマース」と呼ぶ会話型のコマースの分野でアジアナンバーワンを目指すためのプロダクト作りを進めていると、淡島氏は今後のビジョンを語ります。
それを支えるデータベース基盤にはどのようなものを求めるのでしょうか。
「データベース基盤にはいまままで以上に多くの企業、多様な顧客のデータが保存されるでしょうし、顧客に対して適切なタイミングでコミュニケーションが行えるように、よりリアルタイムな形でデータ分析を可能にする性能も必要でしょう。
こうした大規模データと高トラフィックへの対応かつリアルタイム性といった要件に対応しつつ、適正なコストで実現される、そうした性能とコストを両立するデータベース基盤が実現されれば、大変ありがたいと思っています」(淡島氏)。
≫NewSQLデータベースカンファレンス「TiDB User Day」- 動画や資料を公開中!
(本記事はPingCAP株式会社提供のタイアップ記事です)
あわせて読みたい
GitHub Copilot、開発中のコードがパブリックリポジトリのコードと150文字程度一致したら教えてくれる「code referencing」機能を追加
≪前の記事
「NativePHP」、PHPでデスクトップアプリを開発できるフレームワークが登場