2009-10-26 11 views
36

Estoy tratando de averiguar exactamente qué son realmente estas nuevas tiendas de datos como bigtable, hbase y cassandra.almacenando datos masivos ordenados de series de tiempo en derivados de bigtable

Trabajo con enormes cantidades de datos bursátiles, miles de millones de filas de datos de precios/cotizaciones que pueden sumar 100 gigabytes por día (aunque estos archivos de texto a menudo se comprimen por lo menos en un orden de magnitud). Esta información es básicamente un puñado de números, dos o tres cadenas cortas y una marca de tiempo (generalmente, un nivel de milisegundos). Si tuviera que elegir un identificador único para cada fila, tendría que elegir toda la fila (ya que un intercambio puede generar múltiples valores para el mismo símbolo en el mismo milisegundo).

Supongo que la forma más sencilla de asignar estos datos a bigtable (incluyendo sus derivados) es por nombre de símbolo y fecha (que puede devolver una serie de tiempo muy grande, más de millón de puntos de datos no es desconocida) . Después de leer sus descripciones, parece que se pueden usar múltiples claves con estos sistemas. También estoy asumiendo que los números decimales no son buenos candidatos para las claves.

Algunos de estos sistemas (Cassandra, por ejemplo) dicen ser capaces de hacer consultas de rango. ¿Sería capaz de consultar de manera eficiente, por ejemplo, todos los valores de MSFT, para un día determinado, entre las 11:00 a.m. y la 1:30 p.m.?

¿Qué sucede si quiero buscar TODOS los símbolos para un día determinado y solicito todos los símbolos que tienen un precio entre $ 10 y $ 10.25 (entonces busco los valores y deseo que se devuelvan las claves)?

¿Qué pasa si quiero obtener dos series, restar una de la otra, y devolver las dos series y su resultado, tendré que hacer su lógica en mi propio programa?

La lectura de documentos relevantes parece mostrar que estos sistemas no son muy adecuados para los sistemas masivos de series temporales. Sin embargo, si los sistemas como google maps se basan en ellos, creo que las series de tiempo también deberían funcionar. Por ejemplo, piense en el tiempo como el eje x, los precios como eje y y los símbolos como ubicaciones con nombre: de repente parece que bigtable debería ser el almacén ideal para series temporales (si se puede almacenar toda la tierra, recuperada) , ampliada y anotada, los datos bursátiles deberían ser triviales).

¿Puede algún experto señalarme en la dirección correcta o aclarar cualquier malentendido?

Gracias

Respuesta

20

No soy un experto todavía, pero he estado jugando con Cassandra durante unos días, y tengo algunas respuestas para usted:

  1. No se preocupe sobre la cantidad de datos, es irrelevante con sistemas como Cassandra, si tiene $$$ para un gran grupo de hardware.

Algunos de estos sistemas (Cassandra, por ejemplo) afirma ser capaz de hacer consultas de rango. ¿Sería capaz de consultar de manera eficiente, por ejemplo, todos los valores de MSFT, para un día determinado, entre las 11:00 a.m. y la 1:30 p.m.?

Cassandra es muy útil cuando sabes cómo trabajar con las teclas. Puede pasar rápidamente por las teclas. Entonces, para buscar MSFT entre las 11:00 y 1:30 p.m., debe marcar sus filas de la siguiente manera:

MSFT-timestamp, GOOG-timestamp, ..etc Luego puede decirle a Cassandra que busque todas las claves que comienzan con MSFT-ahora y terminan con MSFT-ahora + 1 hora.

¿Qué pasa si quiero buscar a través de todos los símbolos para un día determinado, y solicito a todos los símbolos que tienen un precio entre $ 10 y $ 10,25 (por lo que estoy buscando en los valores, y quiero teclas devueltos como resultado)?

No soy un experto, pero hasta ahora me di cuenta de que Cassandra no 'busca por valores en absoluto. Entonces, si quiere hacer lo anterior, tendrá que hacer otra tabla dedicada solo a este problema y diseñar su esquema para que se ajuste al caso. Pero no será muy diferente de lo que describí anteriormente. Se trata de nombrar tus llaves y columnas. ¡Casandra puede encontrarlos muy rápido!

¿Qué pasa si quiero obtener dos veces la serie, restar una de la otra, y devolver las dos series y su resultado, tendré que hacer su lógica en mi propio programa?

Correcto, toda la lógica se realiza dentro de su programa. Esto no es MySQL. Esto es solo un motor de almacenamiento. (Pero estoy seguro de que las próximas versiones ofrecerán este tipo de cosas)

Por favor, recuerde que soy un novato en esto, si me equivoco, no dude en corregirme.

+1

cuando dice "puede decirle a Cassandra que encuentre todas las claves que comienzan con MSFT-ahora y terminan con MSFT-ahora + 1 hora" - ¿Quiere decir RowSclice Query? Quiero decir, si le pregunto a Casandra, dame todas las teclas de fila entre t1 y t2, siendo t una marca de tiempo, ¿es eficiente? He oído que RowSlices no son tan eficientes como las secciones de columna en Cassandra. – Peter

11

Alguien a quien respeto recomendó la base de datos de Open Time Series. En particular, que el esquema era el mejor que había visto en su vida.

http://opentsdb.net/

+0

Además de ser agradable, ¡es GRATIS! –

+1

OpenTSDB es bastante bueno, desafortunadamente no se ajusta a los datos financieros, especialmente si intenta almacenar datos de ticks con más de una segunda resolución (OpenTSDB actualmente solo tiene una resolución de hasta segundo). – Datageek

2

'AM de pie delante de la misma montaña. Mi problema principal con Casandra es que no puedo obtener una secuencia en el conjunto de resultados, por ejemplo en forma de un iterador.

Estoy buscando ya de arriba abajo los documentos y la red, pero nada.

No puedo recuperar todas las claves y luego obtener las filas, ya que miles de millones de filas lo hacen imposible.

+0

Acabo de encontrarme con el mismo problema. Ojalá hubiera una manera simple de crear una secuencia de resultados de búsqueda. Puedo verlos rápidamente, simplemente no puedo permitir que todos los recuerden de una vez ... ¿Encontraste alguna solución? – em70

+0

Hola emaster70, no, no encontré una solución. aclamaciones – user1052080

0

Sólo por el bien de la integridad de leer esto en el año 2018, ahora existe una base de datos especial para los datos de series de tiempo llamado TimescaleDB

http://www.timescale.com/

Este blog vale la pena leer, explica por qué es superior a las soluciones como Cassandra para ese caso especial y por qué decidieron construirlo en la parte superior de la base de datos relacional PostgreSQL

https://blog.timescale.com/time-series-data-why-and-how-to-use-a-relational-database-instead-of-nosql-d0cd6975e87c

Cuestiones relacionadas