ポリグロット・パーシスタンスとは?複数のデータベースを使い分ける設計の基礎知識
※本記事は2018年4月30日にObjectRocket.com/blogで公開された記事をもとに再編集したものです。
ポリグロット・パーシスタンス(多言語永続化)とは
ポリグロット・パーシスタンス(Polyglot Persistence)とは、アプリケーションのさまざまなデータ保存要件に対して、複数の異なるデータストレージ技術を使い分けるアプローチのことです。これは、アプリケーション開発において複数のプログラミング言語を組み合わせて使う「ポリグロットプログラミング」から派生した概念であり、端的にいえば「1つのアプリケーションの中で、複数のコアとなるデータベース技術を併用する」という考え方です。
仕事には適切な道具を選ぶことが重要であるように、データベースもまた、目的に合ったものを選ぶことが重要です。それぞれのデータベースには固有の強み、弱み、そして特性があります。しかし世の中には数百種類ものデータベースが存在するため、すべてを把握し続けるのは容易ではありません。
データストレージのニーズを管理する
単一のデータベース(モノグロット)構成は、単一種類のワークロードしか扱わないシンプルなアプリケーションであれば、今でも十分に機能します。しかし、アプリケーションはあっという間に複雑化していきます。
たとえば、シンプルなECプラットフォームでも、次のような複数のツールが使われています。
- カートへの商品追加を管理するセッションデータ
- 商品を検索するための検索エンジン
- 購買履歴に基づいて将来の購入候補を提示するレコメンドエンジン
- 位置情報サービスと連携する決済プラットフォーム
ポリグロット・パーシスタンスを採用すれば、異なるストレージタイプからのデータを組み合わせてアプリケーションを動かせます。例えば、完了済みの金融取引データはOracle®から取得しつつ、ユーザー情報はMongoDB®で管理し、キャッシュ処理はRedis®に任せる、といった構成が可能になります。
ポリグロット・パーシスタンスの実装と検討ポイント
ポリグロット・パーシスタンスの構築が複雑だという声の多くは、実はそのストレージソリューションが適さないプロジェクトに無理やり組み込もうとしたことに起因しています。その結果、大量のサポートプロセスが生まれ、際限なく肥大化する「モンスター・アーキテクチャ」へと発展してしまうのです。
綿密な計画を立てれば、潜在的な問題の90%は未然に防げます。まず自社の目標を明確にしましょう。中核となるビジネス機能が必要なのか、それとも会社の業務の大部分をこのモデルへ移行させる必要があるのかを見極めることが大切です。
適切なデータストレージ技術を選ぶ
あなたのチームは、これまでにポリグロット・パーシスタンスのアーキテクチャを構築した経験がありますか? この種のモデルを設計した経験がないまま、適切なデータソリューションを正しく活用するのは困難です。そもそも、最初に取り掛かるプロジェクトが適切なものであるかどうかを、どう判断すればよいのでしょうか。
データストレージの主な種類
多くの組織では、アプリケーションにデータを供給するために、複数の異なるデータソースを利用することになります。ここで、代表的なストレージの選択肢を確認しておきましょう。
トランザクションデータベース(関係データベース/RDBMS)は、情報を行と列から成るテーブル形式で整理することにより、データ整合性を担保します。データの取得には「クエリ」と呼ばれる構文ステートメントを使用します。Microsoft® SQL Server®やOracle®といった人気製品は、多くの大規模組織で多用されています。一方で、トランザクションデータベースの弱点は、ストレージ需要の拡大に伴うスケーリングが難しい点です。また、データが密集してアクセスが複雑になるにつれ、検索速度も低下していきます。
非トランザクションデータベースは、表形式のRDBMSの枠組みから離れることで、高いスケーラビリティと高速な検索を実現します。Elasticsearchのような検索エンジンや分析エンジンとも相性が良く、一般にNoSQLという用語で呼ばれることが多いカテゴリです。
非トランザクション型ストレージの代表例は以下の通りです。
- キーバリュー型:データの格納場所を指すキーを使ってデータを管理する方式です。ハッシュテーブルを利用するものもあれば、Redisのようにペアをメモリ上に保持して高速アクセスを実現するものもあります。
- ドキュメント型:キーバリューのペアをJSONやXMLなどのエンコード形式で文書化し、構造を持たせたものです。MongoDBやCouchDB®などの人気オープンソース製品が該当します。
- カラム型:RDBMSのように行単位ではなく、グループ化された列(カラム)単位でデータを格納する方式です。Apache® CassandraやHBase®がこのモデルを採用しています。
- グラフ型:グラフ構造、すなわちノード・エッジ・プロパティを使ってデータを整理・取得する方式です。Neo4j®は、人気が高まり続けている代表例です。
ポリグロット・パーシスタンスを成功させる鍵は、アプリケーションの要件に対して、どのデータオプションが最適かを見極めることにあります。
意思決定の前に確認すべき質問リスト
データ構造に関する質問
- データは自然な構造を持っているか? それとも非構造化データか?
- 他のデータとどのように関連しているか?
- データはどのように分散されているか?
- 扱うデータ量はどのくらいか?
アクセスパターンに関する質問
- 読み書きの比率はどの程度か?
- アクセスは均一か、それともランダムか?
- アプリケーションにとって、読み込みと書き込みのどちらがより重要か?
組織の要件に関する質問
- 認証は必要か? 必要な場合、どのタイプか?
- 暗号化は必要か?
- バックアップは必要か?
- 災害対策サイト(DRサイト)は必要か?
- プラグインは必要か?
- どのレベルの監視(モニタリング)が必要か?
- どのドライバが必要か?
- どのプログラミング言語を使うべきか?
- サードパーティ製ツールを使うべきか?
適切な専門家の力を借りる
こうした意思決定を支援するために、ポリグロットアーキテクチャの専門家を招き入れることは、多くの企業にとって有益です。過度に複雑なアーキテクチャによる余計な保守負担を避けるためにも、専門家の知見は大きな武器になります。一部の人気オープンソースデータベースベンダーは管理サービスを提供していますが、果たして自社のデータソリューションが顧客のニーズに合っていない場合、それを正直に伝えてくれるでしょうか。
ポリグロット・パーシスタンスを始めるなら、さまざまなデータオプションの強みと弱みを理解している企業に相談するのが最善策です。Rackspace ObjectRocketは、ビジネスニーズに適用可能な多彩なデータベース選択肢を360度の視点でご提案します。ビッグデータソリューションを次のレベルへ引き上げるのに最適なDBA(データベース管理者)とエンジニアをご紹介いたします。
Rackspace DBA Servicesの詳細については、ぜひお問い合わせください。フィードバックタブからコメントやご質問をお寄せいただくことも可能です。またSales Chatをクリックして、今すぐチャットで会話を始めることもできます。
-
クラウドストレージとは?仕組み・バックアップとの違い・選び方を徹底解説
クラウドストレージとは、ファイルをインターネット上(クラウド)に保存する仕組みのことです。パソコンの内蔵HDDや外付けハードディスク、USBメモリにデータを保管する代わりに、オンライン上にファイルを置いておくことができます。クラウドストレージを利用する理由はさまざまです。ローカルディスクの空き容量が不足している場合、クラウドを追加の保存先として活用できます。音楽コレクションをどこからでもストリーミング再生したい、自宅から仕事のファイルにアクセスしたい、旅行の動画を手軽に共有したい——そんなニーズにも応えられます。さらに、重要なファイルをパスワードと暗号化でしっかり保護したいという場合にも有効で
-
ストレージボード解説:RAIDとは?仕組みと種類をわかりやすく紹介【動画】
動画の内容についてOntrackデータリカバリーのMikeyがお送りする「Storage Board」へようこそ。今回のエピソードでは、RAIDシステムとは何か、そしてどのように動作するのかを詳しく解説します。その前に、まず「RAID」という言葉の正確な定義から見ていきましょう。RAIDの定義RAIDは「Redundant Array of Independent Disks(独立ディスクによる冗長配列)」の略称で、複数のディスクにデータを分散・配置することで、パフォーマンスと信頼性の向上を目指すデータ保存方式です。信頼性が大幅に向上するため、RAIDシステムを最も多く利用しているのは企業や組