1

リレーショナル データベースを noSQL 方式で使用することの長所と短所は何ですか?

noSQL とは、かなり単純なクエリ言語と水平方向のスケーリングを備えたキー値ストレージを意味します。

ここで、postgreSQL データベースが設計され、キーと値の方法でクエリが実行される簡単な実験を行っています。これが例です。リレーショナル モデルで 1 対多の User と Article とします。

関連した:

User              Article
| id | login |    | id | user_id | title |
|----+-------|    |----+---------+-------|
|  1 | Alex  |    |  1 |    1    | FooBar| 
|  2 | Ann   |    |  2 |    1    | GoGoGo|
--------------    ------------------------
and some constraints on user id

すべてのユーザーの記事を取得するには、何らかの結合が必要です。

Key-Value スタイル:

User                          Article
| id | login | articles |    | id | user_id | title |
|----|-------|----------|    |----+---------+-------|
|  1 | Alex  |  1, 2    |    |  1 |    1    | FooBar| 
|  2 | Ann   |          |    |  2 |    1    | GoGoGo|
-------------------------    ------------------------

User.articles を配列にします。たとえば、postgreSQL には配列を操作するためのツールがいくつかあります。

この場合、最初にユーザーのクエリを作成し、記事 ID を取得するときにそれらをすべて選択します。これは、MongdDB のコレクションのやり方と非常によく似ていると思います。

さらに、2 番目のケースは、私の大学の家庭教師が決してそうするように言わないものですが、このアプローチは非常に非常に拡張性が高いように見えます。

車輪の再発明のように見えますが、主な目標は、現在 postgres を使用している有望なプロジェクトにスケーラブルなソリューションを提供することです。

4

1 に答える 1

2

n:m 関係の正規化モデルを使用します。適切なインデックスを作成しSELECTてもパフォーマンスが十分でない場合は、トリガーによって自動的に更新されるマテリアライズド ビューを作成するでしょう。

このような具体化されたビューでは、関連するすべての ID を配列に集約することができます。または、実際に必要なものは何でも。ただし、それをプライマリ データ モデルとして使用したくはありません。

于 2012-12-02T16:15:29.503 に答える