[解決済み] 非リレーショナルデータベース設計【終了しました
質問
で使用したことのあるデザイン戦略についてお聞きしたいのですが。 非リレーショナルなnosqlデータベース - つまり、伝統的なリレーショナルデザインやSQLを使用しないデータストア(Hypertable、CouchDB、SimpleDB、Google App Engine datastore、Voldemort、Cassandra、SQL Data Servicesなど)の(主に新しい)クラスのことです。これらはしばしば「キー/バリュー ストア」とも呼ばれ、基本的には巨大な分散永続ハッシュ テーブルのように動作します。
具体的には、次のような違いについて学びたいと思います。 概念的なデータ設計 の違いについて知りたいのです。何が簡単で、何が難しいのか、何がまったくできないのか。
-
非リレーショナルな世界でよりよく機能する代替設計を考え出しましたか?
-
不可能と思われることに頭をぶつけたことがありますか?
-
何かデザインパターンを使って、一方から他方への変換など、ギャップを埋めたことがありますか?
-
現在、明示的なデータモデル (例: UML) をまったく使用していないのですか、それとも半構造化/文書指向のデータブロブを支持して、それらを完全に削除したのですか?
-
リレーショナルインテグリティ、任意に複雑なトランザクションサポート、トリガーなど、RDBMS が提供する主要な追加サービスを逃していませんか?
私は SQL リレーショナル DB のバックグラウンドから来ましたので、正規化は私の血の中にあります。とはいえ、私はシンプルさとスケーリングのための非リレーショナル データベースの利点を理解しており、設計機能のより豊かな重複があるはずだと直感的に感じています。あなたは何をしましたか?
参考までに、同様のトピックについて StackOverflow のディスカッションがここにあります。
どのように解決するのですか?
非リレーショナルDBMSはデータモデルが大きく異なるので、概念的なデータ設計も大きく異なることを考慮する必要があると思います。このスレッドでは 非リレーショナル データベースのデータ設計 の NOSQL Google グループ では、さまざまなパラダイムがこのように分類されています。
- Bigtableライクなシステム(HBase, Hypertableなど)
- Key-value store (Tokyo、Voldemort, など)
- ドキュメントデータベース(CouchDB。 MongoDB、など)
- グラフデータベース(AllegroGraph, Neo4j、Sesameなど)
私が主に取り組んでいるのは グラフデータベース の欠点に嫌気がさした私は、このパラダイムを使ったデータ設計のエレガンスに惹かれて、この世界に飛び込みました。 RDBMS . グラフ・データベースを使ったデータ設計の例をいくつか、この wikiページ というページがあり、そこに をモデル化する方法の例があります。 基本的な IMDB 映画、俳優、役柄のデータも
発表スライド(slideshare) グラフデータベースと大規模ナレッジマネジメントの未来 傍点 マルコ・ロドリゲス は、グラフデータベースを使用したデータ設計についても、非常に素晴らしい紹介をしています。
グラフデータベースの観点から、具体的な質問に答えています。
代替デザイン:どのエンティティが接続されるかを事前に定義する必要がなく、多くの異なる種類のエンティティ間に関係を追加します。
ギャップを埋める 私は、"テーブル指向のグラフ"などは望まないので、ドメイン自体に基づいて、ケースごとに異なることをする傾向があります。しかし はここで には、RDBMSからgraphdbへの自動変換に関する情報があります。
明示的なデータモデル。私はいつもこれらを行い(ホワイトボードスタイル)、そしてDBでもそのままモデルを使用します。
RDBMSの世界からの逃亡:レポートを作成する簡単な方法。更新:もしかしたら、それは その グラフデータベースからレポートを作成するのは難しいことではないのかもしれません。 Neo4Jサンプルデータベースのレポートを作成する .
関連
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] データベース レコードを削除するかしないか
-
[解決済み] 外部キーを主キーにするのは問題ないですか?
-
[解決済み] マスター・マスターとマスター・スレーブ、どちらのデータベース・アーキテクチャが良いのか?
-
[解決済み] データベースの設計に外部キーは本当に必要なのか?
-
[解決済み] なぜORMを使う必要があるのですか?[クローズド]
-
[解決済み] 変更履歴/監査データベーステーブルの最適なデザインは?[クローズド]
-
[解決済み] リレーショナル・データベースにおけるカタログとスキーマの違いは何ですか?
-
[解決済み] SQLITE SQLダンプファイルをPOSTGRESQLに変換する
-
[解決済み] Postgresql - データベースをバックアップし、異なる所有者にリストア?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Graph-based Databases (http://neo4j.org/)のユースケースは?[クローズド]
-
[解決済み] データベースにはすでにオブジェクト名が存在する
-
[解決済み] マスター・マスターとマスター・スレーブ、どちらのデータベース・アーキテクチャが良いのか?
-
[解決済み] データベースの設計に外部キーは本当に必要なのか?
-
[解決済み] なぜORMを使う必要があるのですか?[クローズド]
-
[解決済み] SQLite UPSERT / UPDATE OR INSERT
-
[解決済み] Mavenプラグインを1回だけ実行する?
-
[解決済み] SQLITE SQLダンプファイルをPOSTGRESQLに変換する
-
[解決済み] Postgresql - データベースをバックアップし、異なる所有者にリストア?
-
[解決済み] 1対1の関係はどのようなときに使うべきですか?