私は何年もリレーショナル データベースの仕事をしてきましたが、最近は Cassandra/Redis の領域に移行しました。NoSQL は私たちがやっていることに意味があるので、それで問題ありません。
今日、Cassandra 列ファミリーの定義に取り組んでいるときに、ある疑問が浮かびました。リレーショナル データベースでは、データベース エンジン自体が結果として生じる一貫性の問題をネイティブに管理できるように、DDL で非正規化ルールを定義できないのはなぜですか。言い換えれば、リレーショナル データベース プログラマーがパフォーマンス目標を達成するために非正規化するとき、なぜ専用 SQL を介して一貫性を維持する必要があるのでしょうか?
たぶん、私が行方不明になっていることが明らかな何かがありますか?このような提案がばかげている理由は何かありますか?なぜなら、この機能を持っていると非常に便利なように思えるからです.
編集:
これまでのフィードバックに感謝します。私はまだ答えられていない質問を抱えているように感じます (おそらく、うまく表現されていないためでしょう)。マテリアライズド ビューは、非正規化されたデータに対してエンジン管理の一貫性を提供しようとしていることを理解しています。ただし、基になるテーブルが変更されてもすぐには更新されないことを理解しています。これが本当なら、それはエンジンが本当にそうではないことを意味します非正規化に起因する一貫性の問題の管理...少なくとも書き込み時ではありません。私が理解しているのは、複雑なリレーショナル モデルに対して読み取り負荷の高いシステムをスケーリングするときに、真の機能豊富なエンジン管理の非正規化を使用しない正規化されたデータ構造は、リレーショナル データベース エンジンを妨害するということです。マテリアライズド ビューのリフレッシュ レートを調整することは、Cassandra などの NoSQL エンジンによって提供される調整可能な「結果整合性」に等しいというのは本当だと思います。エンジンがどれだけ効率的にマテリアライズド ビューを同期できるかを調べる必要があります。NoSQL オプションと比較して実行可能であると見なされるためには、ビューの同期にかかる時間が、追加/更新された行の数に比例して増加する必要があります。
とにかく、もう少し考えて再編集します。うまくいけば、想像上の DDL の代表的な例がいくつかあります。