2013-07-14 8 views
6

現在、Webプロジェクトの設計に取り組んでおり、そのためにJavaスタックを使用する必要があります。Javaスタック - ORMとデータベースのスケーラビリティ

限られた負荷を考慮して、最初は単一のデータベース(私たちの場合はPostgreSQL)を使うことができました。この場合は、we knowオブジェクト/リレーショナルの問題は常に最も時間とコストのかかる問題の1つなので、HibernateのようなORMは良い決定になります。これがORMツールを使用する理由のすべてです。安価で時間を節約できます。

しかし、この問題は、後でデータベース層でシャーディングとマスター/スレーブ(読み取り/書き込み)のレプリケーションが必要になることです。これはORMにとっては本当に問題です(少なくとも私が知る限り)。

私が間違っていて、私たちが使用できるJavaスタック用の良いORMツールがある場合は、私を修正してください。

私はこの問題を解決する可能性のあるHibernate Shardsというプロジェクトがあったと知っていますが、2007年にはベータ版と開発の開発が終わったことはありません。分散型のレベル2キャッシュを定期的にHibernateの使用

、我々は、ビジネスロジックとノード

の数を使用することができますが、これはデータベースのスケーラビリティの問題を解決することはできませんし、我々はまだアプリケーションのためにのみ1つのデータベースを使用することができます。

ボトムライン:私たちのケース(Javaスタック)に適したオープンソース/フリーORMがありますか、それともデータベースのスケーラビリティなどの利点を後で提供するために、かなりのコストをかけて自分で実装する必要があります。

ありがとうございます!

+0

水平または垂直シャーディングを検討していますか? –

+0

ボリス、水平シャーディングを検討しています。率直に言って、私は「垂直シャーディング」という言葉を知らないのですが、垂直のテーブル分割を意味しますか? –

+0

これで、HibernateのMultiTenantセッションファクトを使用できるはずです。各データベースに接続ソースを割り当ててから、どちらを使用するかを選択できます。 –

答えて

0

Javaデータオブジェクト、特に実装はhttp://www.datanucleus.orgです。特に、注釈と型保証されたクエリ言語を使用すると、非常に高速になり、非常に興味深いものをすばやく実行できます。

さらに、JDOはデータベースに依存しないため、リレーショナルデータベース以外のものを使用すると判断すると、変換は比較的簡単です。 JDBCドライバーを使用してデータベースに接続するので、そのレベルで接続するクラスター化/シャーディング・ソリューションは比較的透過的でなければなりません。

私はHibernateと大きな本で2〜3日を過ごして、私が繰り返していることに決めました(これは本当のことではありません。私自身はあまりにも頻繁に自分自身をRDBシステムに限定しています。それを見て、あなたの考えを見てください。

-1

これらの問題のすべてを処理する水平スケーラビリティソリューションを購入することを検討する必要があります。

アプリケーションに変更を加えずに水平方向に拡大縮小することができるソリューションがいくつかあります(シャーディングなどの技術で必要となる変更)。

関連する問題