2

これは、概念/データベース アーキテクチャに関連する質問です。データの一貫性を維持するために、NoSQL データ ストアの代わりに、JSON オブジェクトを文字列/テキストとして MySQL に保存しています。したがって、MySQL の行は次のようになります。

ID, TIME_STAMP, DATA

JSON データを DATA フィールドに格納します。行を更新するのではなく、現在のタイム スタンプで新しい行を追加します。したがって、最新のデータが必要な場合は、max(timestamp) で行をフェッチするだけです。主なバックエンド アプリケーションとして、Tornado と Python MySQLDB ドライバーを使用しています。

このアプローチは非常に簡単で、エラーが発生しにくいと思います。JSON オブジェクトは非常に単純であり、あまりネストされていません。

このアプローチは根本的に間違っていますか? JSON データを MySQL にテキストとして保存することに問題はありますか、それとも HDFS などのファイル システム ベースのストレージを使用する必要がありますか。私にお知らせください。

4

3 に答える 3

1

これは問題ではありません。最新の MySQL で memcached ストレージ エンジンを使用することもできます。私はそれを試したことはありませんが。

もう 1 つの方法は、memcached をキャッシュとして使用することです。memcached と mysql の両方にすべてを書き込みます。データを読みに行くときは、memcached から読み込んでみてください。存在しない場合は、mysql から読み込みます。これは、データベースのボトルネックを軽減するための一般的な手法です。

于 2013-07-15T14:04:23.403 に答える
1

Pradeeb さん、質問に答えるには、ユース ケースを分析する必要があります。どのようなデータを保存していますか? 私にとって、これが決定的な要因です。すべてのテクノロジーには、それが優れている特定のユースケースがあります。

従来のリレーショナル DB と比較して、データ構造は非常に柔軟なドキュメントである必要があるため、JSON を使用していると想定しても安全だと思います。Phil が指摘したように、MongoDB (彼らはそれを「バイナリ JSON」またはBSONと呼んでいます) など、そのようなデータ構造をネイティブにサポートする特定のデータ ストアがあります。これにより、ストレージや検索機能が改善されます。繰り返しますが、ユーティリティはユースケースに完全に依存します。

ジョブ キューのようなものを探していて、水平方向のスケーラビリティが問題ではなく、最新のものにすばやくアクセスする必要がある場合は、RedisDB を使用できます。これは、ハッシュ (連想配列) データ型とこの種のリスト。または、HDFS と水平スケーラビリティが問題になる可能性が非常に高いとおっしゃっていたので、Apache ActiveMQ や RabbitMQ などのキュー システムを使用することをお勧めします。

最後に、大量の を作成していて、クライアントに制限されていないが、データ ストレージがボトルネックである場合は、HBase や Cassandra などの分散型の柔軟なスキーマ データ ストレージを検討してください。これらは柔軟なデータ スキーマを提供し、書き込みが大幅に最適化されており、データを追加して時系列に維持できるため、最新のデータを効率的に取得できます。

それが役立つことを願っています。

于 2013-07-15T13:49:49.733 に答える