12

Spring/Hibernate/Tomcat と mysql データベースを使用して Route Planner Webapp を構築しています。バス停の座標、更新されないバス時間などの読み取り専用データを含むデータベースがあります。アプリケーションが実行されるたびに、ルートを計算するためにデータベースに対して約1000回の読み取りが実行されます。

データベースからの読み取り時間を大幅に改善する Ehcache をセットアップしました。現在、terracotta + Ehcache 分散キャッシングを設定して、キャッシュを複数の Tomcat JVM と共有しています。これは少し複雑に思えます。memcached を試しましたが、ehcache ほど高速ではありませんでした。

MongoDb と Redis のどちらが適しているか疑問に思っています。私はnosqlの経験はありませんが、何かアイデアがあれば幸いです。私が必要としているのは、読み取り専用データベースへの迅速なアクセスです。

4

3 に答える 3

12

データベースからの読み取り時間を大幅に改善するEhcacheをセットアップしました。現在、複数のTomcatJVMとキャッシュを共有するようにterracotta+Ehcache分散キャッシュを設定しています。これは少し複雑に思えます。

データは読み取り専用であるため、キャッシュの初期ロードのオーバーヘッドがそれほど重要でない限り(その場合、Ehcacheを構成するのはそれほど難しくありません)、分散および複製されたキャッシングなしで生きることができると言いたくなります、あなたはあなたがどこに行くかを知る必要があります)。したがって、これが本当に必要だと思われる場合は、より具体的なガイダンスを求めてください。

MongoDbとRedisのどちらが適しているのでしょうか。私はnosqlの経験はありませんが、誰かが何かアイデアを持っていれば幸いです。必要なのは、読み取り専用データベースへの迅速なアクセスです。

まず、NoSQLを使用する場合は、Hibernateを忘れてください(ただし、問題にはならない可能性があります)。第二に、私は本当にもっと複雑なことを疑問に思います:(ない)Ehcacheを分散するように構成する(まだあなたがそれを必要とするとは確信していません)または根本的に異なるもの(エンタープライズビジネスのVASTの大部分は必要としない)へのアプローチを変更します。第三に、同じJVMのメモリからデータを読み取るよりも高速なものはありません。

要約すると、1。分散キャッシングを使用しないことを検討します(そして構成の問題に別れを告げます)または2.分散キャッシング用にEhcacheを構成します(これはアプローチ全体を変更するよりも複雑ではないと思います)。

于 2010-05-19T04:01:03.797 に答える
7

ルーティングを試してみたい場合は、Neo4j を見ることもできます。A* アルゴリズムの使用に関するブログを参照してください。

于 2010-05-19T09:23:19.607 に答える
1

まず、mongodb 自体はキャッシュではありません。これは、mysql が永続的なデータ ストアであるように、永続的なデータ ストアです。

したがって、あなたの質問は「ehcacheまたはredisを使用する必要がありますか」に要約されます。ehcache を使用したことで、レプリケーション/クラスタリング、キャッシュの無効化、監視、およびインストルメンテーション機能を実行する分散キャッシュの非常に優れたソリューションであることがわかります。

データは読み取り専用であるため、hazelcast のような単純な分散マップも同様に機能します。使い方はとても簡単です。

于 2010-11-17T20:23:20.987 に答える