Baza danych zorientowana na kolumnę a baza danych zorientowana na wiersze

Przez długi czas korzystałem z projektowania baz danych zorientowanych na wiersze i poza projektami hurtowni danych i próbkami Big Data, nie korzystałem z projektowania baz danych w oparciu o kolumny dla aplikacji OLTP.

Moja tabela zorientowana na rząd wygląda

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

Niektórzy ludzie w naszym zespole opowiadają się za projektowaniem baz danych w oparciu o kolumny. Sugerują, że wszystkie nazwy kolumn powinny być nazwami właściwości w tabeli Property. Następnie kolejna tabela Quote będzie miała dwie kolumny PropertyName i PropertyValue.

W kodzie .net czytamy każdy klucz i porównujemy i konwertujemy na silnie typowany obiekt. Kod naprawdę się psuje.

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

Argumentem dla tego projektu zorientowanego na kolumny jest to, że nie będziemy musieli zmieniać schematu tabel i zapisanego proc (nadal używamy zapisanego proc zamiast Entity Framework).

Wygląda na to, że zmierzamy w prawdziwy problem. Czy projekt zorientowany na kolumny jest dobrze przyjęty w branży.

questionAnswers(5)

yourAnswerToTheQuestion