私は長い間、データウェアハウスプロジェクトとビッグデータサンプルを除いて、ロー指向のデータベース設計を使用しましたが、私はOLTPアプリケーションの列指向データベース設計を使用していません。列指向のデータベースと行指向のデータベース
私の行指向の表は、
ID, Make, Model, Month, Miles, Cost
1 BMW Z3 12 12000 100
列指向データベースの設計を提唱私たちのチームの何人かの人々のように見えます。 すべての列名は、Propertyテーブルのプロパティ名である必要があります。 別のテーブルQuoteには、PropertyNameとPropertyValueの2つのカラムがあります。
.netコードでは、各キーを読み取り、厳密に型指定されたオブジェクトと比較して変換します。コードは本当に乱雑になってきています。
if (qwi.DomainCode == typeof(CoreBO.Base.iQQConstants.MBPCollateralInfo).Name)
{
if (qwi.RefCode == iQQConstants.MBPCollateralInfo.ENGINETYPE)
{
Aspiration = qwi.Value;
}
else if (qwi.RefCode == iQQConstants.MBPCollateralInfo.FUELTYPE)
{
FuelType = qwi.Value;
}
else if (qwi.RefCode == iQQConstants.MBPCollateralInfo.MAKE)
{
Make = qwi.Value;
}
else if (qwi.RefCode == iQQConstants.MBPCollateralInfo.MILEAGE)
{
int reading = 0;
bool success = int.TryParse(qwi.Value, out reading);
if (success)
{
OdometerReading = reading;
}
}
}
この列指向設計のためのarguementは、我々は(我々はまだ代わりに、Entity Frameworkののストアドプロシージャを使用している)テーブルスキーマとストアドプロシージャを変更する必要がないということです。
実際の問題に向かっているようです。列方向のデザインは業界で広く受け入れられていますか?
"列指向"(列ストア)のDBMSとは何の関係もないようです。質問は実際にはEAVのデザインパターンに関するものです。 – sqlvogel
"エンティティフレームワークの代わりにまだストアドプロシージャを使用しています" 私は多くの中小規模のプロジェクトでEFと遊んでいましたが、EFはこれ以上行くとは思わない。 私がテストしたことから、EFは、深刻な作業が考慮されるときに非常に頻繁にドアストッパーであるメモリを操作(更新)できるようにする必要があります。1アクティブ= 0 = UPDATE dbo.MyTable SETアクティブ: – Mariusz
「我々はまだ代わりに、Entity Frameworkののストアドプロシージャを使用している」 EFは、それを変更することができるようにメモリ内のデータを必要としているようだ、そうのような単純なもの 大量のデータの場合、EFを使用するのは簡単ではないかもしれません(しかし、私はそれも大胆な時間をキックするので大好きです)。 – Mariusz