A menudo escucho que bases de datos orientadas a columnas son el mejor método de elección para almacenar datos de series temporales en aplicaciones financieras. Especialmente por parte de quienes venden costosas bases de datos orientadas a columnas.
Sin embargo, a primera vista parece una mala elección. Usted quiere añadir nuevos ticks, o nuevas barras, al final (y necesita hacerlo mucho y rápidamente). Se trata de una operación de fila clásica: se añade a un archivo. En una base de datos de columnas tienes que actualizar tres archivos para un tic (marca de tiempo/precio/tamaño de la operación), o cinco o seis para una barra (marca de fecha, apertura, alta, baja, cierre, volumen). (He dicho 5-6, ya que para los datos de la barra espaciados regularmente supongo que la marca de fecha podría estar implícita a partir del número de fila).
Para la lectura, normalmente no quiero coger sólo una columna; quiero coger toda la barra para poder dibujar un candelabro (por ejemplo). Vale, puede que sólo quiera la columna de cierre, o que sólo quiera la columna de volumen (pero sigo necesitando dos lecturas para obtener también las marcas de fecha en una BD orientada a columnas, ¿no?)
Pero lo que parece aún más importante es que cuando quiero leer datos históricos generalmente quiero coger un subperiodo, y eso se almacenará de forma contigua en la BD orientada a filas.
P1: ¿Existe alguna razón de peso para optar por la orientación a columnas en lugar de la orientación a filas si todo lo que se almacena son ticks comerciales?
P2: ¿Existe alguna razón de peso para optar por la orientación a columnas en lugar de la orientación a filas si todo lo que se almacena son barras OHLCV?
P3: Si cree que no para Q1 y Q2 ¿qué tipo de columnas hay que tener para que las BD orientadas a columnas sean la opción claramente superior?
ACTUALIZACIÓN
Gracias a Chris Aycock por los enlaces a preguntas similares. Algunos de los razonamientos por los que las BD orientadas a columnas son mejores siguen sin tener sentido para mí, pero de la primera parte de https://quant.stackexchange.com/a/949/1587 Creo que la gente puede estar utilizando las bases de datos orientadas a las filas de manera diferente. Así que, a efectos de esta pregunta, por favor, asuma que sólo tengo un símbolo por tabla de base de datos (en lugar de una tabla enorme con una columna "símbolo"). Así que, siguiendo el ejemplo de la respuesta anterior, el almacenamiento en disco en bruto tiene el siguiente aspecto:
09:30:01 | 164.05; 09:30:02 | 164.02; ...