私は長い間行指向のデータベース設計を使用してきましたが、データ ウェアハウス プロジェクトとビッグ データ サンプルを除いて、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;
}
}
}
この列指向設計の主張は、テーブル スキーマとストアド プロシージャを変更する必要がないということです (Entity Framework の代わりにストアド プロシージャを使用しています)。
私たちは本当の問題に向かっているようです。業界で受け入れられている列指向の設計です。