1

非構造化データを保存する必要があるシナリオがありますが、残りのデータは構造化されたリレーショナルです。非構造化データのタイプの例を以下に説明します。

User Type 1:

How do you blah blah : 5 fields

User Type 2 :

How do you blah blah : 3 fields

User Type 3 :

How do you blah blah : 7 fields

3 つのタイプすべてに同じ質問「どうしたらいいですか」が尋ねられますが、各ユーザー タイプは異なる数のフィールドを使用して回答します。また、さまざまなユーザー タイプが存在する可能性があります。

リレーショナル データについては、MySQL を使用していますが、この非構造化データを保存する方法について少し混乱しています。

  1. JSON としてシリアル化して MySQL に保存する
  2. NoSQL を使用する

私の要件は、高い読み取り、平均的な更新、平均的な挿入、および削除なしです。JOINS は必要ありません。保証された書き込みと高可用性が必要です。もし NoSQL を選ぶとしたら、それは CAP 定理によると AP タイプです。すぐに何百万もの記録を達成することはありません。

将来的にはこのデータのテキスト検索も提供する予定ですが、リアルタイム検索である必要はないので、定期的にLuceneを使用していつでもデータのインデックスを作成できます。しかしもちろん、ドキュメントベースの NoSQL実装はこれをすぐに提供します。しかし、JSON データを MySQL に保存しないように人々がアドバイスしているいくつかの場所を読んだことがあります。しかし、NoSQL レイヤーを追加するのはやり過ぎかもしれません。

NoSQL DB を使用するようにアドバイスされた場合、どのデータベースを選択すればよいですか?

編集: 明確にするために、保存しているデータから特定のフィールドを照会する必要はありません。データが必要な場合は、特定のフィールドではなく、データ全体が必要になります。Lucene を使用して MySQL でも実行できる全文検索が必要です。

4

2 に答える 2

2

私は最近、SQL Server、MySQL、および Mongo を多用するプラットフォームに取り組みました。保存したデータは、これら 3 つのデータベース システムに分散していました。

たった 1 つのデータベース技術に憧れました。

経験から、テキスト フィールドを作成してそこに JSON を保存することをお勧めします。フィールドを直接クエリすることはできませんが、クエリ可能なテキスト フィールドの横に静的フィールドを作成できます。

ミックスに別のシステムを導入することは、決して自明ではありません。

これにはいくつかの理由があります:

  1. ドキュメント モデリングの習得には長い時間がかかります。正規化するのではなく、データを非正規化します。そうするのはちょっとした芸術です。
  2. CouchDB および MongoDB クラスターを構成したので、特に本番環境に移行する場合は、簡単ではないと言えます。
  3. データベース テクノロジでクエリを実行することは、確かに簡単なことではありません。

最後の手段として、別の NoSQL ソリューションを導入するだけです。

于 2013-06-03T16:22:15.277 に答える