ユーザーデータ用のキャッシュソリューションを構築しています。データは現在sybaseに格納されており、5〜6個の表に分散されていますが、hibernateを使用してその上にクエリー・サービスが構築されており、パフォーマンスは非常に低下しています。キャッシュにデータをロードするためには、10〜15時間の範囲が必要です。多数の列と行(50列、5mm行)のデータベーステーブルのクエリパフォーマンスの向上
したがって、別のリレーショナルデータベース(UDB)に50〜60列と5mm行の非正規化テーブルを作成し、そのテーブルをまず取り込み、JDBCを使用して新しい非正規化テーブルからキャッシュを移入することにしました。私たちのキャッシュは低いです。これにより、パフォーマンスが大幅に向上し、1時間ほどでキャッシュを構築できるようになりましたが、これは5分でキャッシュを構築するという当社の要件を満たしていません。 denormlizedテーブルは、次のクエリを使用してクエリされます。
select * from users where user id in (...)
ここで、ユーザIDはプライマリキーです。また、クエリを試しました
select * from user where user_location in (...)
また、ユニークでないインデックスを場所に作成しましたが、それも役に立ちませんでした。
クエリを高速化できる方法があります。もしそうでなければ私たちはいくつかのNOSQL解決策を検討するために開いています。
私たちのニーズに適したNOSQLソリューションはどれですか?大きなテーブルとは別に、毎日テーブル上で約1mmの更新を行います。
私はmongo dbについて読んだことがあるかもしれませんが、誰も非常に多くの行と非常に多くの毎日の更新とmongo dbの経験を投稿していると思われる。
ご意見をお聞かせください。
私には、基本的な問題があるようですが、今は多くの追加テクノロジスタックでそれを強制終了しようとしています。最初にキャッシュ内のすべてのデータが必要なのはなぜですか?そのデータに対してどのような操作を実行していますか?あなたが提供する情報が有資格の回答には十分であるかどうかは疑問です... –
起動時にこのデータを読み込み、新しいユーザーアカウントが作成されたり、データやアカウントが変更されたりすると定期的にデータを更新します削除されました – user1162439
一度にすべてのデータ??なぜあなたはメモリ内のデータを必要としますか?現代のデータベースは、ディスク上のデータにアクセスすることで非常に効率的です...私はあなたが何をしようとしているのか分からない –