Banco de dados orientado a coluna vs banco de dados orientado a linha

Eu tenho usado design de banco de dados orientado a linha por muito tempo e, exceto para projetos de datawarehouse e amostras de Big Data, eu não usei design de banco de dados orientado por colunas para o aplicativo OLTP.

Minha tabela orientada por linha parece

ID, Make, Model, Month, Miles, Cost
1   BMW   Z3     12     12000  100

Algumas pessoas em nossa equipe defendem o design de banco de dados orientado por colunas. Eles sugerem que todos os nomes de coluna devem ser nomes de propriedades em uma tabela de propriedades. Em seguida, outra tabela Quote terá duas colunas PropertyName e PropertyValue.

No código .net, lemos cada chave e comparamos e convertemos em objeto fortemente tipado. O código está realmente ficando confuso.

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;
           }
}
}

O argumento para esse design orientado a colunas é que não teremos que alterar o esquema da tabela e o procedimento armazenado (ainda estamos usando o procedimento armazenado em vez do Entity Framework).

Parece que estamos nos encaminhando para um problema real. O design orientado por colunas é bem aceito na indústria.

questionAnswers(5)

yourAnswerToTheQuestion