2章データモデルとクエリ言語

私の言語の限界は、私の世界の限界を意味する。

――ルートヴィヒ・ウィトゲンシュタイン、『論理哲学論考』(1922)

データモデルは、おそらくソフトウェアを開発するにあたって最も重要な部分でしょう。これは、データモデルがソフトウェアの書き方だけではなく、私たちが解決しようとする問題に対する考え方に対して、きわめて重大な影響力を持っているためです。

多くのアプリケーションは、いくつものデータモデルのレイヤーを積み重ねていくことによって構築されます。それぞれのレイヤーにおける主題は、そのレイヤーが1つ下位のレイヤーでの表現方法に基づいてどのように表現されているか、ということです。例を挙げましょう。

  1. アプリケーション開発者は、現実の世界(そこには人々、組織、物、行動、金銭の流れ、センサーなどがあります)を見て、それをオブジェクトやデータ構造と、それらのデータ構造を操作するAPIによってモデル化します。こういった構造は、しばしばアプリケーション固有のものになります。
  2. こういったデータ構造を保存したい場合には、JSONやXMLドキュメント、リレーショナルデータベースのテーブル、あるいはグラフモデルといった汎用的なデータモデルでそれらを表現することになります。
  3. あなたが利用しているデータベースソフトウェアを構築したエンジニアは、JSON/XML/リレーショナル/グラフといったデータを、メモリ、ディスク、ネットワーク上でバイト列として表現する方法を決定しています。こうして表現されたデータは、様々な方法でキューイング、検索、操作、処理できます。
  4. さらに低いレベルでは、ハードウェアエンジニアがバイト列を電流や光のパルス、電磁気などで表現する方法を編み出してきました。 ...

Get データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.