38 votes

le stockage massif commandé des données de séries chronologiques dans bigtable dérivés

Je suis à essayer de comprendre exactement ce que ces nouvelles ultramodernes magasins de données tels que bigtable, hbase et cassandra sont vraiment.

Je travaille avec des quantités massives de données boursières, des milliards de lignes de prix/devis de données qui peut ajouter jusqu'à 100s de giga-octets de tous les jours (bien que ces fichiers texte souvent compresser au moins un ordre de grandeur). Ces données sont essentiellement une poignée de chiffres, deux ou trois chaînes courtes et un horodatage (habituellement de l'ordre de la milliseconde niveau). Si je devais choisir un identificateur unique pour chaque ligne, j'aurais à choisir la ligne entière (étant donné qu'un échange peut générer plusieurs valeurs pour un même symbole dans le même ordre de la milliseconde).

Je suppose que la façon la plus simple de cartographier ces données pour bigtable (je suis, y compris ses dérivés) est le nom du symbole et de la date (qui peut retourner un très grand moment de la série, plus d'un million de points de données n'est pas rare). À partir de la lecture de leurs descriptions, il ressemble à plusieurs clés peuvent être utilisés avec ces systèmes. Je suis aussi en supposant que les nombres décimaux ne sont pas de bons candidats pour les clés.

Certains de ces systèmes (Cassandra, par exemple) prétend être capable de faire les requêtes d'intervalle. Serais-je capable de efficacement requête, disons, toutes les valeurs de MSFT, pour un jour donné, entre 11:00 et 1:30 pm ?

Que faire si je veux lancer une recherche sur TOUS les symboles pour un jour donné, et demande à tous les symboles qui ont un prix compris entre $10 et $10.25 (je suis donc à la recherche des valeurs, et que vous voulez les touches retournée comme résultat)?

Que faire si je veux obtenir deux fois de la série, soustraire l'un de l'autre, et le retour de la deux fois de la série et de leur résultat, vais-je avoir à faire de sa logique dans mon propre programme?

La lecture de documents pertinents semble montrer que ces systèmes ne sont pas d'un très bon ajustement pour un grand moment systèmes de la série. Cependant, si les systèmes tels que google maps sont basés sur eux, je pense que le temps de la série devrait fonctionner aussi bien. Par exemple, penser le temps comme l'axe des x, les prix comme axe des y et des symboles comme des lieux nommés--tout d'un coup il ressemble bigtable devrait être le magasin idéal pour les séries chronologiques (si la terre entière peut être le stockage, la récupération, d'un zoom et annoté, la bourse de données devrait être trivial).

Certains experts me pointer dans la bonne direction ou de dissiper tous les malentendus.

Merci

21voto

Gotys Points 416

Je ne suis pas un expert , mais j'ai été jouer avec Cassandra pour quelques jours maintenant, et j'ai quelques réponses pour vous:

  1. Ne vous inquiétez pas sur la quantité de données , il est hors de propos avec des systèmes comme Cassandra, si vous avez des $$$ pour un gros matériel de cluster.

Certains de ces systèmes (Cassandra, par exemple) prétend être capable de faire les requêtes d'intervalle. Serais-je capable de efficacement requête, disons, toutes les valeurs de MSFT, pour un jour donné, entre 11:00 et 1:30 pm ?

Cassandra est très utile lorsque vous savez comment travailler avec des clés. Il peut swift par touches très rapidement. Pour recherche pour MSFT entre 11:00 et 1:30pm, vous avez les clés de vos lignes comme ceci:

MSFT-timestamp, GOOG-timestamp , etc .. Ensuite, vous pouvez dire à Cassandra pour trouver toutes les clés qui commencent par MSFT-maintenant et à la fin avec MSFT-maintenant+1 heure.

Que faire si je veux lancer une recherche sur TOUS les symboles pour un jour donné, et demande à tous les symboles qui ont un prix compris entre $10 et $10.25 (je suis donc à la recherche des valeurs, et que vous voulez les touches retournée comme résultat)?

Je ne suis pas un expert, mais jusqu'à présent, j'ai réalisé que Cassandra doestn recherche par des valeurs à tous. Donc, si vous voulez le faire ci-dessus, vous devrez faire un autre tableau dédiées à ce problème et la conception de votre schéma d'ajustement le cas. Mais il ne sera pas très différent de ce que j'ai décrit ci-dessus. Il est tout au sujet de nommage de vos clés et de colonnes. Cassandra peut les trouver très rapidement!

Que faire si je veux obtenir deux fois de la série, soustraire l'un de l'autre, et le retour de la deux fois de la série et de leur résultat, vais-je avoir à faire de sa logique dans mon propre programme?

Correrct, la logique est effectuée à l'intérieur de votre programme. Ce n'est pas MySQL. C'est juste un moteur de stockage. (Mais je suis sûr que les prochaines versions seront offrir ce genre de choses)

N'oubliez pas que je suis un novice à ce niveau, si je me trompe, n'hésitez pas à me corriger.

13voto

Shane Points 40885

Si vous avez affaire à une énorme base de données de séries chronologiques, puis les normes sont les suivantes:

Ce ne sont pas pas cher, mais ils peuvent traiter vos données de manière très efficace.

12voto

Lance Norskog Points 101

Quelqu'un que je respecte recommandé le Temps d'ouverture de la Série de Base de données. En particulier, que le schéma était la plus belle qu'il ait jamais vu.

http://opentsdb.net/

2voto

user1052080 Points 149

"Suis debout en face de la même montagne. Mon principal problème avec cassandra, c'est que je ne peut pas obtenir un flux de données sur le résultat, par exemple sous la forme d'un itérateur.

Je suis à la recherche déjà en haut et en bas les docs et sur le net, mais rien.

Je ne peux pas récupérer toutes les touches et puis obtenir les lignes comme des milliards de lignes rend cela impossible.

1voto

Le DataStax Pilote Java permet de pagination automatique de sorte que sera diffuser les résultats comme un itérateur et elle est entièrement construite en. C'est Cassandra 2.0.1 par la voie de http://www.datastax.com/dev/blog/client-side-improvements-in-cassandra-2-0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X