相关疑难解决方法(0)

面向列的数据库与面向行的数据库

我已经长时间使用面向行的数据库设计,除了数据仓库项目和大数据样本,我还没有使用面向列的数据库设计用于OLTP应用程序.

我的面向行的表看起来像

ID, Make, Model, Month, Miles, Cost
1   BMW   Z3     12     12000  100
Run Code Online (Sandbox Code Playgroud)

我们团队中的一些人主张面向列的数据库设计.他们建议所有列名都应该是Property表中的属性名.然后另一个表Quote将有两列PropertyName和PropertyValue.

在.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;
           }
}
}
Run Code Online (Sandbox Code Playgroud)

这个面向列的设计的争论是我们不必更改表模式和存储过程(我们仍然使用存储过程而不是实体框架).

好像我们正在进入真正的问题.以列为导向的设计在业界得到广泛认可.

sql database architecture database-design

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

architecture ×1

database ×1

database-design ×1

sql ×1