データモデル

2004年2月12日

初期のお気に入りの本の1つは、Tsichritzis and Lochovskyのデータモデルに関する本でした。この本では、データの考え方に関するさまざまなモデル、特に当時最も議論されていた3つのモデル、リレーショナルデータモデル階層データモデル、およびネットワークデータモデルについて論じられていました。

最近では、さまざまなデータモデルの長所と短所について議論する人はあまり見かけません。データモデルについて語る人はデータベース関係者が多い傾向があり、ほとんどの人はその論争はリレーショナルモデルによってとっくに決着がついたと考えているようです。

しかし、それは決して真実ではなかったと思いますし、状況はますます面白くなってきています。

リレーショナルモデルがデータベースの世界で支配的であることは疑いありません。私が最近遭遇するほとんどすべてのビジネスアプリケーションは、SQLデータベースを使用しています。これは、人口の99%にとってリレーショナルモデルとほぼ同じものです。しかし、インメモリデータ構造を見ると、異なる世界が見えてきます。ここでは、ネットワークモデルが圧倒的です。実際、人々はディスク上のリレーショナルモデルをメモリ内のネットワークモデルに変換するために多大な労力を費やすことがよくあります(これが、貧血ドメインモデルが非常に人気がある理由の1つだと思います)。

私はこれを興味深いと思います。何度も人々になぜ関係をレコードに変換するのにわざわざ苦労するのか尋ねます。私が返ってくる答えはほとんどの場合同じことです。ほとんどの開発者は、リレーショナルモデルよりもネットワークモデルの方が扱いやすいと感じています。確かに、これは常に当てはまるわけではありませんが、レコードを好む人が多数いるとは思います。

これは、SQLはデータベースにはうまく機能しますが、インメモリ処理に相当するものがないという事実と関係があるかもしれません。リレーショナルに考えることは、ADO.NETについて私が興味深く思うことの1つですが、ここでも、リレーショナルスタイルでデータセットを操作したくない人が多いことがわかります。

現在のデータモデルの状況に絶えず挑戦しているもう1つのことは、XMLの台頭です。XPathやXQueryのようなXMLベースのテクノロジーは、階層データ構造にアクセスするための標準的な方法を提供します。多くの点で、XMLがそのデータの標準的なテキストシリアル化を提供するという事実は、この階層データを照会および操作するための標準的な方法があることへの単なるボーナスに過ぎません。

根本的な技術的変化が、さらにデータモデルの混乱を引き起こすだろうと思います。メモリサイズが価格の低下と同じくらい速く成長するにつれて、ほとんどのデータベースを完全にメモリに保持できる地点にますます近づいています。これを持続的な変更のメカニズムと組み合わせると、実行に必要な前提が根本的に異なる、まったく異なる種類のデータベースが生まれます。(この種の考え方の例として、Prevaylerを参照してください。彼らのパフォーマンス数値がどれほど有効かはわかりませんが、2桁程度ずれていても、それでも印象的でしょう。)

したがって、どのデータモデルが理にかなっているかについての前提を改めて見直し、これらのモデルの基本の一部について考え始める時期かもしれません。私の感覚では、さまざまな種類のデータはさまざまな種類のモデルでうまく機能します。リレーショナルモデルは表形式データには最適ですが、テンペストを保存したい場合には非常に不向きです。したがって、さまざまなデータモデル、それらを使用するテクノロジー、そしてどのモデルがどの種類のデータに適しているかを知っておくことは理にかなっています。