非構造化データを保存する必要があるシナリオがありますが、残りのデータは構造化されたリレーショナルです。非構造化データのタイプの例を以下に説明します。
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 を使用していますが、この非構造化データを保存する方法について少し混乱しています。
- JSON としてシリアル化して MySQL に保存する
- NoSQL を使用する
私の要件は、高い読み取り、平均的な更新、平均的な挿入、および削除なしです。JOINS は必要ありません。保証された書き込みと高可用性が必要です。もし NoSQL を選ぶとしたら、それは CAP 定理によると AP タイプです。すぐに何百万もの記録を達成することはありません。
将来的にはこのデータのテキスト検索も提供する予定ですが、リアルタイム検索である必要はないので、定期的にLuceneを使用していつでもデータのインデックスを作成できます。しかしもちろん、ドキュメントベースの NoSQL実装はこれをすぐに提供します。しかし、JSON データを MySQL に保存しないように人々がアドバイスしているいくつかの場所を読んだことがあります。しかし、NoSQL レイヤーを追加するのはやり過ぎかもしれません。
NoSQL DB を使用するようにアドバイスされた場合、どのデータベースを選択すればよいですか?
編集: 明確にするために、保存しているデータから特定のフィールドを照会する必要はありません。データが必要な場合は、特定のフィールドではなく、データ全体が必要になります。Lucene を使用して MySQL でも実行できる全文検索が必要です。