多くの「BAW」(big ass-websites)は、インデックス付きの巨大なテーブルに依存するデータストレージおよび取得技術を使用しており、クエリでJOINを使用しない/使用できないクエリ(BigTable、HQLなど)を使用しています。スケーラビリティとシャーディングデータベースを処理します。非常に関連性の高いデータがたくさんある場合、それはどのように機能しますか?
この結合の多くはアプリケーション側で行わなければならないと推測することしかできませんが、それは高価になり始めませんか?コンパイルする情報を取得するために、いくつかの異なるテーブルに対していくつかのクエリを実行する必要がある場合はどうなりますか?そもそも結合を使用するよりも、データベースに何度もアクセスする方がコストがかかり始めていませんか?どれだけのデータがあるかによると思いますか?
また、一般的に利用可能なORMの場合、結合を使用できないことにどのように対処する傾向がありますか?今日頻繁に使用されているORMでこれをサポートしていますか?または、このレベルのデータにアプローチする必要があるほとんどのプロジェクトは、とにかく独自にロールする傾向がありますか?
したがって、これは私が行っている現在のプロジェクトには当てはまりませんが、「ベストプラクティス」とは何かについてしか推測できないようになったため、数か月前から頭に浮かびました。必要な規模に達したことがないため、どのプロジェクトでもこれに対処する必要はありませんでした。うまくいけば、この質問は他の人にも役立つでしょう。
誰かが以下に言ったように、ORMは参加なしでは「機能しません」。このレベルのデータを扱う開発者がすでに利用できる他のデータアクセスレイヤーはありますか?
編集: いくつかの明確化のために、VinkoVrsalovicは言った:
「スニッカーは、トランザクションデータが非正規化されてHadoop、BigTable、またはCassandraスキームで使用されるNO-SQLについて話したいと思っています。」
これは確かに私が話していることです。
xkcdリファレンスをキャッチした人のためのボーナスポイント。