< All Blog

データベースを技術選定する時のポイント

June 25, 2023

世の中には、RDBMS から NoSQL、グラフデータベースなど、様々なデータベースが存在します。データベースを技術選定する際に考慮すべき観点は多岐に渡ります。要件によって大きく異なりますが、どんな場合でも最低限押さえておきたい観点があります。

  • Reliability - 信頼性、データが毀損することなく、サービスを安定して稼働させられるかどうか
  • Scalability - シーズンや将来の成長を加味して、必要に応じてシステムがスケールするか
  • Maintainability - 保守性や移行難易度、普段のオペレーション業務の負荷はどれくらいか

予算・インフラコストや現場のソフトウェアエンジニアの技術理解度などの制約条件を加味しながら、基本的には上記三つの Reliability / Scalability / Maintainability のトレードオフのバランスをみつつ選定していく形になります。

そして、それぞれのトレードオフのバランスをどうとっていくかがポイントになるわけです。

大抵のケースで、まずは Maintainability を最優先にすると良いでしょう。なぜなら、一番重要なのは「変更できること」「移行できること」「撤退できること」だからです。そして、要件の許す限り最低限のレベルでの Reliability / Scalability を担保するデータベースおよび設計を選定します。

そもそもサービスが成長するかどうかはわかりません。来るかどうかわからない将来に備えて必要以上に Reliability や Scalability を加味する必要はありません。選定したデータベースが、必要に応じて進化させていくことができれば、将来必要になってもそれら Reliability / Scalability を向上させる手掛かりになります。

具体的には、ツールがある程度枯れており、ソースコードが公開されていれば upstream に貢献したり fork したりすることで改善していけることができます。そこで必要とされるプログラミング言語に現場のソフトウェアエンジニアが習熟していればなおよいでしょう。普段のオペレーションコストも低ければ、アーキテクチャ改善やツール改善にエンジニアリングリソースを投下することもできるでしょう。

この三つの観点の最適なバランスを見極めてから初めて、以下の観点を考慮していくと良いです。

  • アプリケーションディベロッパーの観点から見た時の使いやすさ
  • クエリ言語の利用しやすさ
  • 分析ツールやパフォーマンス解析などのモニタリングの充実度
  • クライアントライブラリの品質
  • 他データシステムとの連携の可能性
  • 業界におけるベストプラクティスの豊富さ
  • スキーマの管理の容易さと必要性
  • コストモデル

上記三つの観点は、私が好きな DDIA 本にも書いてあることです。かなり簡約したので本来はもう少し観点を加えるべきなのですが、まず初めの第一歩として押さえておきたい最低限のポイントを紹介しました。

Recommended Posts

  1. MySQL を使うなら押さえておきたい知識

    June 25, 2023
    リレーショナルデータベースの一つである MySQL は、それ自体複雑なソフトウェアです。 クライアントからのコネクションを接続・維持して、クエリをパースして、クエリ最適化を施して、InnoDB を始めとするストレージエンジンと API を経由して連携をとって。進化をし続けるソフトウェアの全貌を理解するのはほとんど不可…