質問

私はGEDCOMに準拠している家系でソーシャルネットワーキングサイトに取り組んでいます。我々は、ユーザープロファイルの水平または垂直データベース構造を使用する必要があるかどうかを判断する必要があります。だから、私は垂直データベース構造を使用する際に、水平データベース構造を使用するとしたときに誰もが答えることができるかどうかを知りたいと思います。

私は、フィールドが決定されていないショッピングサイトのためのいくつかの答えを見つけました:縦型データベース構造を使用する必要があります。しかし、私は家系サイトに使用するかについて混乱しています。私は、垂直または水平使用する必要がありますか?

役に立ちましたか?

解決

私はあなたが保存のためにMySQLの、のMS SQL、Sqliteを、PostgreSQLやOracleなどのリレーショナルデータベースを使用すると仮定しますか?

あなたが持っているでしょうどのように多くの列を知っているので、

GEDCOMは、情報交換のための規格です。たぶん標準は、将来的に新しいプロパティで拡張されたが、それはおそらく、新しいプロパティの多くも文句を言いません。あなたは簡単にいくつかの新しい列を持つテーブルを拡張することができます。

I「は、水平」テーブルとしないエンティティattribyte値システム(垂直テーブル)を使用します。垂直のテーブルシステムが遅くなる傾向にあります。彼らは、適切にインデックス付けとクエリオプティマイザを混同することはできません。

これは、ユーザーが目のCOLO(U)Rやお気に入りの結腸のような自分のプロファイルに新しいプロパティを定義することができます別の話になり(u)は自身rを。どのように柔軟なあなたは、これらのプロファイルになりたいですか?

他のヒント

垂直データベースはdetawarehousingに最適ですし、/レポートのみをお読みください。通常は一晩、それらを再生成します。彼らの書き込みパフォーマンスは、しかし、のSELECTは10〜100倍高速化され、通常は非常に悪いです。

垂直データベースを使用するための典型的なシナリオでは、データの(毎日)スナップショットを作成し、それに対してクエリを実行し、OLAP報告があります。利益の大部分は、例えば、フィールドのみの比較的少ない数を要求するクエリから来ていますあなたは広くて大きなテーブルのフィールドのほんの一握りを選択した場合。レコードの数百万人に対して、このようなクエリのクエリ(例えば、SUM / COUNT / AVGを計算する)は、唯一1秒か2秒かかります。

あなたの場合は、垂直方向のデータベースのための良い候補ではないようです。

私は、垂直テーブル/ EAVシステムは非常に複雑に遅いだけでなく、いくつかの時間だけではない、tuinstoelに同意します。時には複雑さを避けるために、これらのメソッドを扱うだけそれらのテーブルや開発者に対処する独自のAPIメソッドのいくつかを書くために必要とされます。

あなたは水平テーブルに滞在後、複数のフィールドを追加する必要はありませんので、もし。しかし、あなたはまた、あなたは、多言語機能をサポートしようとしている場合場合は、別のテーブルに必要なことがあります。しかし、私はまだ横のテーブルに固執することをお勧めします。

私はまた、サイト含むユーザプロファイルを開発していると私は、水平のテーブルを使用していますが、異なる言語があるだろう場合は、将来的に必要なサポート、私は唯一の言語は重要になるフィールドに変更します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top