私は現在、ユーザー データの増分更新の戦略を開発しています。データベースには 100_000_000 レコードがあり、ワークフローごとに約 1_000_000 レコードが更新されると想定しています。
アイデアは、MapReduce ジョブでレコードを更新することです。現在のレコードにランダムにアクセスできるようにするために、インデックス付きストレージ (Cassandra など) を使用すると便利ですか? または、HDFS からデータを取得し、新しい情報を既存のレコードに結合することが望ましいですか。
レコードサイズはO(200バイト)です。ユーザー データは固定長ですが、拡張可能である必要があります。ログ イベントの構造は似ていますが、同じではありません。ユーザー レコードの数は増加する可能性があります。ほぼリアルタイムの更新が望ましいです。3 時間のタイム ギャップは許容できません。数分でも問題ありません。
これらの戦略とこのサイズのデータのいずれかを使用した経験はありますか? 豚のJOINは十分に速いですか?すべてのレコードを読み取ることが常にボトルネックですか? Cassandra はこの量のデータを効率的に保持できますか? スケーラブルなソリューションはどれですか? システムの複雑さはどうですか?