Base de datos orientada a columnas vs base de datos orientada a filas
He utilizado el diseño de bases de datos orientadas a filas durante mucho tiempo y, a excepción de los proyectos de datawarehouse y Big Data samples, no he utilizado el diseño de bases de datos orientadas a columnas para la aplicación OLTP.
Mi tabla orientada fila se ve como
ID, Make, Model, Month, Miles, Cost
1 BMW Z3 12 12000 100
Algunas personas en nuestro equipo abogan por el diseño de bases de datos orientadas a columnas. Sugieren que todos los nombres de columnas deben ser nombres de propiedades en una tabla de propiedades. Luego, otra tabla Cita tendrá dos columnas PropertyName y PropertyValue.
En el código .net, leemos cada clave y comparamos y convertimos a objeto fuertemente tipado. El código se está poniendo muy desordenado.
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;
}
}
}
El argumento para este diseño orientado a columnas es que no tendremos que cambiar el esquema de la tabla y el procedimiento almacenado (todavía estamos utilizando proc almacenado en lugar de Entity Framework).
Parece que nos dirigimos hacia un problema real. Es un diseño orientado a columnas bien aceptado en la industria.