現在の証拠は、正規データモデルよりもコンテキストデータの採用をサポートしていますか?


9

「標準」の考え方はソフトウェアに広まっています。Canonical ModelCanonical SchemaCanonical Data Modelなどのパターンは、開発中に何度も登場するようです。

多くの開発者と同様に、私は頻繁に、批判的ではない、正規モデルが必要であるという従来の知恵に従いました。それ以外の場合は、マッパーとトランスレーターの組み合わせの爆発に直面します。または、少なくとも、数年前にやや悪名高いEFの「自信なしの投票」を初めて読んだときまで、私はそれを行っていました。

正規データモデルの追求をかつて支持していたという仮説は、そのアイデアが実践されたときに発見されるであろう要因を含まず、含めることもできませんでした。長年の試行錯誤の結果、正規データモデルが使用される可能性のある個々のコンテキストに個別のモデルを使用することが、最も複雑なアプローチではなく、最もコストのかからないアプローチであり、保守性と拡張性の向上につながります。コンテキストモデルを使用したアプリケーションとエンドポイントの比較。これは、正規モデルが行うソフトウェアエントロピーを促進しないアプローチです。

エッセイはその主張を裏付けるいかなる種類の証拠も提示していませんが、代替案を試すのに十分長い間CDMアプローチに疑問を投げかけ、結果のソフトウェアは文字通りまたは比喩的に爆発しませんでした。しかし、それだけですべてが孤立しているわけではありません。運が良かっただけかもしれません。

ですから、ソフトウェアシステムまたはアーキテクチャに標準モデルとコンテキストモデルを組み合わせた場合の実際的な長期的な影響について、真剣な調査が行われたのでしょうか。

あるいは、それを尋ねるのが早すぎる場合は、開発者/アーキテクトに、CDMから独立したコンテキストモデルへの(またはその逆の)CDMから個人的なエクスペリエンスへの切り替えについて書いてもらい、生産性、複雑さ、信頼性などの実際的な影響は何でしたか?

異なるレベルでの違いについてはどうでしょうか。つまり、単一のアプリケーションで同じモデルを使用する場合と、アプリケーションのシステムまたは企業全体で使用する場合の違いはどうでしょうか。

(事実のみ、お願いします。戦争の話は大歓迎ですが、憶測はありません。)


「自信のない投票」記事で彼らが何について話しているのか私にはわかりません。記事の残りの部分は理にかなっていますが、正典主義に関するセクションは非常に抽象的なので、何も意味しません。彼らが話していることの例を提供してくれたら良かったのに。
ロバートハーベイ

@ロバート:それに真実があるかどうかはわかりませんが、それが何を意味するのかはかなりはっきりしています...確かにCM / CDMパターンに精通していますか?最も単純な具体化では、アプリケーションの特定の部分に対して特定のクエリを作成するという(認識された)ダクトテープのアプローチではなく、アプリケーション全体で単一のモノリシックEF(またはLinq to SQLなど)モデル/コンテキストを共有します。より高いレベルでは、すべての個別のアプリケーション/システムが変換する必要がある組織全体にユニバーサルスキーマを採用しています。
アーロノート

1
テーブルファーストデザイン(クラスがテーブルから生成される)がモノリシックモデル(常に特殊なクエリとビューがあるが)を提案する一方で、クラスファーストデザインはEFの議論がテーブルファーストとクラスファーストのデザインに集中しているように思われる(テーブルがクラスから生成される場合)は、よりダクトテープの柔軟なOOモデルを提案します。私は少し古い学校ですが、テーブルファーストのアプローチを好みますが、クラスファーストのアプローチが魅力的である場合もあります。
ロバートハーベイ、

@Robert、「EFの議論」を取り上げるつもりはありませんでした。最初に議論を聞いた場所だったので、そのページから一重引用符を取りました(そして、私がそれを聞いたかどうかはわかりません)他の場所で明確に表現されます)。それとは別に、テーブルファーストデザインが実際にはモノリシックモデルを表すことに同意するかどうかはわかりません。データベース自体はそうですが、DBMSだけがそれを本当に認識しています。アプリケーションのさまざまな部分は、それらが依存する特定のテーブルとクエリのみを認識する傾向があります。
アーロンノート

回答:


5

EF不信任投票の記事に対応して、Tim Mallalieuは次のように書いています。

「標準スキーマ」でのXSDの使用を伝道していた時代に戻ることをお勧めしません。これは扱いやすいと人々が思っているとは思いません。ただし、多くのドメインモデルを記述できる単一のメタモデル(必要に応じてEDM)があり、単一の文法を使用することにより、与えられたドメインモデル。

たとえば、600のテーブルを持つデータベースに対して作成されるアプリケーションを考えてみます。このアプリには、600のエンティティタイプを含む単一のモデルが含まれている必要があると思いますか?いいえ...さらに、特定のドメインエンティティ(たとえば、顧客)はそのアプリで1つの図形のみを持ち、この図形はエンタープライズ全体の標準的な図形である必要があると思いますか?...いいえ。

Canonical Modelに関するWikipediaの記事は、Enterprise Service BusService-Oriented ArchitectureCORBAなどについて言及しています。それらはすべて、企業のデータの急増と通信の課題に対する解決策として提唱されましたTM 彼らは成功しましたか?それとも彼らは自重で倒れたのでしょうか?


あなたは個人的な経験を求めたので、それをあげます。航空宇宙産業では、テレメトリをよく使用しています。テレメトリシステムの課題の1つは、異なるテスト範囲がテストデータを互いに有意義な方法で通信する方法を見つけることです。一般的な用語のデータディクショナリを定義しようとするまで、その問題は十分に単純に思えます。

「高度」とはどういう意味ですか?それは地上の高さですか、それとも海抜ですか。潜水艦について話している場合はどうなりますか?次に、高度ではなく、その深さ。陸軍にとって、「トランスミッション」という言葉の意味は、レーダーアンテナを指す場合と地上ベースの車両を指す場合では異なります。航空機を回転させる翼面は、一部の飛行機では「エイロン」と呼ばれ、他の飛行機では「エレボン」と呼ばれます。

それは、続く問題の山のほんのヒントにすぎません。データ通信には標準がありますが、テスト範囲はそれぞれ異なり、ニーズ、目標、優先順位も異なります。標準は、同じ範囲の異なるプロジェクト間でも異なる場合があります。このため、テスト範囲は、ソリューションがすべてを単一のモノリシックシステムに置き換えることによってではなく、単純な通信プロトコルに同意し、1つの範囲の語彙を別の語彙に変換する方法を提供することによって得られることを理解しています


大企業が直面する問題も同様です。マイクロソフトはモノリシックに考える傾向がありますが、それは彼らの会社が概してモノリシックであるためです。文化やビジネスの方法が大きく異なるさまざまな企業間で(または同じ企業内の異なる部門間でさえ)通信する必要があるとすぐに、すべてを支配する1つのリング。TMはすぐに故障し始めます。


マイクロソフトのデザイナー自身が共有メガモデルを推奨していないことを知っておくのは興味深いことです。残念ながら、これがまさにLinq to SQLとEFや他の多くのORMが使用される傾向がある方法です。いずれにせよ、Canonical Modelのコンセプトを宣伝している人はまだたくさんいるので、代替案と比較して実際にどのように進んでいるかを知りたいと思います。
アーロノート

@Aaronaught:私の編集を見てください。
ロバートハーベイ

これは良い編集であり、参考までに私は賛成しています。ただし、モデルを正規化しようとするときに発生する特定の不一致の問題の多くはすでに認識しています。私は特に、エンドポイントごとに1つのマッパー(エンドツーモデル)を持つように、それらの不一致を解決するために時間を費やしたチームと、別のエンドに時間を費やしたチームの経験または長期データについて学ぶことに興味があります。その代わり、エンドツーエンドのマッパーであり、これにより、コストが最も低く、複雑性が最も低いソリューションが本当に実現されました。
アーロノート

または、より簡潔に言えば、正規モデルを作成して維持するのは大変な作業であることを知っています。知りたいのは、メリットがコストを上回っている場合(あるとしても)いつ観察されたかです。
アーロノート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.