実際に表示されるはずの場所にコメントとして追加できなかったことをお詫びします。
しかし、以下は私に対する個人的な攻撃を構成し、私は応答する権利を行使します。
私は実際にはあなたに同意しますが、精神的にはあなたに同意しません。セットベースが唯一の方法であると信じて洗脳されたのはあなただと思います(多分私はあなたの口に言葉を入れています)。
FWIW、私はあなたがおそらく「関係のある宗教的信念」と呼ぶかもしれないものに「洗脳」されていないことは間違いありません。洗脳とは、ある家庭教師が何かを言うときであり、生徒はそれを批判的思考の形をとらずに唯一の真実として盲目的にそして頭を使わずに受け入れます。実際、私はリレーショナルモデルを教えられたことさえありません。実際、私はそれらすべてを自分で発見しなければなりませんでした。意見更新についての伊達の意見に対して、私が厳しい批判を表明したことは事実の記録です。(訂正:「だった」は記録された事実の問題でした。ページは公開されたサイトから削除されたようです。おそらく、Dateが実際に私が批判したビュー更新位置を放棄したという事実と関係があります。)
ですから、私が自分自身を洗脳させたという主張は、まったくの無礼であると言うのには十分な理由があると思います。自由に考えてみてください。しかし、不当で何にも基づかない個人的な意見を公に表明するのであれば、事実に反論されているのを見て認めるのに十分な大人であることを願っています。
階層モデルとネットワークモデルがRMに取って代わられた理由は、この主題に関する本でいっぱいのライブラリ全体に十分に文書化されています。それらを注意深く調べてください。
「キーバリューが市場を引き継ぐ」に関しては、「市場で最も一般的な意見」を完全に自由に取ることができます(つまり、非常に満足している自分自身を考えるのが面倒な愚か者の平凡な大多数)自分自身(および彼らの意見)を、この世界のエリソンとゲイツとジョブズに率いられて、価値のあるものとそうでないものの主要な基準として。個人的には愚かなことだと思いますが、それは私の個人的な意見にすぎません。私はここに、EAVとKey-Valueの恐怖に直面している誰かが彼の職業生活のほぼ毎日行ったいくつかの観察結果をコピーして貼り付けます:
私は、すべてではありませんが、多くの論理テーブルに対して次の「EAVモデル」(少なくとも、私が理解している「EAVモデル」)を使用するアプリケーションに取り組んでいます。
R1 {EAV_RELVAR_NAME*, ... }
R2 {EAV_RELVAR_NAME*, ATTRIBUTE_NUMBER*, COLUMN_NAME, DATA_TYPE, ...}
R3 {EAV_RELVAR_NAME, ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ..., ATTRIBUTE50}
次の値が表示される場合があります。
R1 { {'STATE_CODES'} }
R2 { {'STATE_CODES', 1, 'STATE_NAME', 'CHAR(30)'} ,
{'STATE_CODES', 2, 'STATE_CODE', 'CHAR(2)' } ...}
R3 { {'STATE_CODES', 'ALABAMA', 'AL'} ,
{'STATE_CODES', 'ALASKA', 'AK'} ...}
基本的に、「EAV relvars」は、R1およびR2への挿入/更新/削除で作成/変更/ドロップされます(DDLと比較して)。これは、モデル全体の縮小版です。R1とR2には、eav-primary-keys、eav-foreign-keys、ビジネスルールなどを指定するための追加の列があります。モデルの真のフロントエンド」。
今朝、私はシステムAがCODE_XYZがATTRIBUTE2にあると思ったときに生じた、20時間以上の試練に夢中になりましたが、システムBは実際にそれをATTRIBUTE3に定義しました...私は半分聞いていたという事実を笑わなければなりませんでした会話に、そしてEAVに関するこのグループの談話を半分読んでください。
先月、ユーザーが入力した430個のデータポイントのATTRIBUTE16を「2010年5月」から「2010年5月」に変更する緊急アップデート(16工数とアプリケーションの「不良マーク」)を追加する必要がありました。
EAV_RELVARは、テスト/開発で行われたのと同じように本番環境でR1またはR2にコード化されなかったため、コードリリースの約5〜10%に「月曜日の朝のランタイムエラーのクリーンアップ」が伴います(アプリケーションコードとDDLの両方が厳密なバージョン管理のソフトウェア制御...私たちのEAVモデルは、開発者が開発、テスト、および製品で自律的にEAVをセットアップできるようにするため、そのような官僚主義に縛られていません。
昨年、私はR3の主キーの不足に対処するためだけに、レプリケーションソフトウェアのチューニングに3週間を費やしました。
EAV_RELVAR_NAME_zを使用した別のプログラムのパフォーマンスを台無しにしていたため、EAV_RELVAR_NAME_xのATTRIBUTE4にインデックスを付けることができなかったことを一度お詫びしなければなりませんでした。
2年前、R3に参加する必要のある複雑なクエリを永続的に調整するために数百時間を費やした後、DBMSオプティマイザーに統計情報を提供するために、最終的に3か月かけてR3を数百の物理パーティション(EAV_RELVAR_NAMEごとに1つ)に分割しました。たとえば、50個の「STATE_CODES」と200,000個の「LOCATION_CODES」があることを確認する必要がありました。独創的な解決策を祝福しましたが、この変更により、新しいEAV_RELVAR_NAMEを追加すると、関連するパーティションをR3に追加するスクリプトを実行する必要があるという新しいポリシーがあることを指摘したとき、誰もが皮肉を逃しました(はい、DDLを使用)。
私のクライアントは、EAV_RELVAR_NAMEの1つ(すべての適切な制約とセキュリティを適用しながら)のデータをR3にロードするための新しいフロントエンドを望んでおり、ビルドに4か月かかる理由を知りたいと考えています。
R1とR2に対してDMLではなくデータディクショナリに対してdynamic-DDLを使用することで、あらゆる点で優れた方法でEAVシステム全体を書き直すことができるとよく指摘しますが、私たちは常に「コミットしている」と通知されます。 「このアプローチでは(ビルドには7桁の先行投資があり、スタンドアロンテーブルに切り替えるにはコードベースの98%を書き直す必要があります)、その目的は手段を正当化するものではありません。 。
そのようなシナリオがRMの改善であると本当に信じている場合は、ぜひ先に進んでください。ついに壁に頭をぶつけたとき、それがどれほど痛いのか私を責めないでください。