nhibernateの内部動作を知っている人には、facebook/myspaceのような大規模なWebアプリケーションはnhibernateを使うと思いますか?facebookのような大規模なプロジェクトでnhibernateを使用しますか? (議論のため)
また、会社サイトなどのトラフィック量の少ないサイトに適したnhibernateですか?そのチャットの性質のためにエンタープライズレディではない?
nhibernateの内部動作を知っている人には、facebook/myspaceのような大規模なWebアプリケーションはnhibernateを使うと思いますか?facebookのような大規模なプロジェクトでnhibernateを使用しますか? (議論のため)
また、会社サイトなどのトラフィック量の少ないサイトに適したnhibernateですか?そのチャットの性質のためにエンタープライズレディではない?
NHibernateはまったく冗談ではありません。スケーラビリティについては、すでにquestion on NH's groupsがありました。これはデータベースとトラフィックの複雑さに関するものですが、まだ面白いかもしれません。
ORMの一般的性質のために、すべてのORMで不必要なクエリについて常に苦情があったとしても、それはチャットであるということではありません。一方、手書きDALで最適化するには複雑すぎる状況を最適化します。例えば。クエリバッチまたは遅延ロード。
NHibernateは他のORMと比較して非常に軽量であり、強力な機能と比較しています。
オブジェクト指向のビジネスモデルがなくても最高のパフォーマンスを得るためには、NHibernate(他のORMと同じ)は過度であると考えることができます。私はGoogleがその検索エンジンのためにNHibernateを利用できるとは思わない。
編集:NHibernateはの
性能と消費電力は自由のために完全ではありません。開発者は、少なくともリレーショナルデータベースに関する基本を理解する必要があります。他のORMは、リレーショナル問題の全体を隠そうとします。これは、より多くの最適化されていない動作につながります。
nHibernateはプロのジョークです。 私の会社では、その使用はいくつかの理由で禁止されています。 ツールは非常に生産的ではありません。数え切れないほど多くの時間を費やして、稀な文書で代替戦略を見つけることができます。
高性能を実現するために、独自のDALとSPを使用してください。キャッシュされた実行計画があり、最終的にはそれが本当に重要です。
nHibernateにはmemcachedの高度なサポートがありません。これはFacebookのようなスケーラブルなWebソリューションを構築する場合に特に使用するものです。
私はソーシャルゲーム会社に勤務しており、特にnhibernateの使用は特に禁止されています。
NHibernateは、クエリキャッシュ、プライマリキーに基づく第2レベルのキャッシュ、同じセッション内の同じエンティティに対する繰り返しのヒットに対するセッションキャッシュをサポートしています。
これは大きな助けになりますが、負荷が大きいデータベースを使用している限り、スケーリングの問題が発生します。データベースをスケールする最も良い方法は、実際に使用する必要がある時間を最小限に抑えることです。 memcacheなどの分散型キャッシュ、および出力をキャッシュする(datacrunchedビューまたはhtmlのいずれか)は、アプリケーションの規模を拡大する最適な方法です。クライアントが定期的にデータベースにアクセスしている場合は、間違ってORMを実行しているかどうかを確認します。典型的なMVCアプリケーションのような.NETアプリケーションでは、NHibernateおよびViewModelsで使用されるMemcacheのクライアントだけでなく、多様な出力キャッシュ、ドーナツおよびドーナツ・ホール・キャッシュを使用できるという利点があります。
はい、NHibernateは悪い開発者の手に危険なツールとなります。 –
確かに、nHibernateは使いにくく、企業はEntity Frameworkのような新しい選択肢に賛成してそれを放棄し始めています。 –
Entity Frameworkはここで本当に冗談です。 :P – Jeff