Question

J'essaie de comprendre exactement ce que sont vraiment ces nouveaux magasins de données comme bigtable, hbase et cassandra.

Je travaille avec des quantités énormes de données boursières, des milliards de lignes de données cours / cours pouvant atteindre 100 s / g chaque jour (bien que ces fichiers texte soient souvent compressés au moins d’un ordre de grandeur). Ces données sont essentiellement constituées d'une poignée de nombres, de deux ou trois chaînes courtes et d'un horodatage (généralement au niveau de la milliseconde). Si je devais choisir un identifiant unique pour chaque ligne, je devrais choisir toute la ligne (puisqu'un échange peut générer plusieurs valeurs pour le même symbole en une milliseconde).

Je suppose que le moyen le plus simple de mapper ces données sur bigtable (j'inclus ses dérivés) est le nom du symbole et la date (qui peut renvoyer une très longue série temporelle, plus d'un million de points de données n'est pas inouï). À la lecture de leurs descriptions, il apparaît que plusieurs clés peuvent être utilisées avec ces systèmes. Je suppose également que les nombres décimaux ne sont pas de bons candidats pour les clés.

Certains de ces systèmes (Cassandra, par exemple) prétendent pouvoir effectuer des requêtes de plage. Pourrais-je interroger efficacement, disons, toutes les valeurs de MSFT, pour un jour donné, entre 11h00 et 13h30?

Que se passe-t-il si je souhaite effectuer une recherche dans TOUS les symboles d'un jour et demander tous les symboles dont le prix est compris entre 10 et 10,25 dollars (je recherche donc les valeurs et souhaite que les clés soient renvoyées en conséquence)?

Et si je veux obtenir deux séries chronologiques, soustraire l’un de l’autre et renvoyer les séries chronologiques et leur résultat, devrai-je faire sa logique dans mon propre programme?

La lecture de documents pertinents semble montrer que ces systèmes ne conviennent pas très bien aux systèmes à séries chronologiques massives. Cependant, si des systèmes tels que Google Maps sont basés sur celles-ci, je pense que les séries chronologiques devraient également fonctionner. Par exemple, considérez le temps comme l’axe des abscisses, les prix comme l’axe des ordonnées et les symboles comme des localisations nommées: tout à coup, bigtable devrait devenir le magasin idéal pour les séries chronologiques (si la Terre entière peut être stockée, récupérée). zoomées et annotées, les données boursières devraient être triviales).

Un expert peut-il m'indiquer la bonne direction ou dissiper tout malentendu?

Merci

Était-ce utile?

La solution

Je ne suis pas encore un expert , mais je joue avec Cassandra depuis quelques jours maintenant et j'ai quelques réponses à vous donner:

  1. Ne vous inquiétez pas de la quantité de données, cela n’a aucune importance pour des systèmes comme Cassandra, si vous avez $$$ pour un grand cluster de matériel.
  

Certains de ces systèmes (Cassandra, par exemple) prétendent pouvoir effectuer des requêtes de plage. Pourrais-je interroger efficacement, disons, toutes les valeurs de MSFT, pour un jour donné, entre 11h00 et 13h30?

Cassandra est très utile lorsque vous savez travailler avec les clés. Il peut très rapidement parcourir les clés. Donc, pour rechercher MSFT entre 23 h et 13 h 30, vous devez entrer vos lignes comme suit:

timbre-temps MSFT, timbre-temps GOOG, etc. Ensuite, vous pouvez demander à Cassandra de rechercher toutes les clés commençant par MSFT-now et se terminant par MSFT-now + 1hour.

  

Que se passe-t-il si je souhaite effectuer une recherche dans TOUS les symboles pour un jour donné et demander tous les symboles dont le prix est compris entre 10 $ et 10,25 $ (je recherche donc les valeurs et souhaite que les clés soient renvoyées en conséquence)?

Je ne suis pas un expert, mais jusqu’à présent, j’ai réalisé que Cassandra ne cherchait pas du tout par valeurs. Donc, si vous voulez faire ce qui précède, vous devrez créer une autre table dédiée uniquement à ce problème et concevoir votre schéma pour s’adapter à la casse. Mais ce ne sera pas très différent de ce que j'ai décrit ci-dessus. Il s’agit de nommer vos clés et vos colonnes. Cassandra peut les trouver très rapidement!

  

Et si je veux obtenir deux séries chronologiques, soustraire l’un de l’autre et renvoyer les séries chronologiques et leur résultat, devrai-je faire sa logique dans mon propre programme?

Correct, toute la logique est faite dans votre programme. Ce n'est pas MySQL. Ceci est juste un moteur de stockage. (Mais je suis sûr que les prochaines versions proposeront ce genre de choses)

N'oubliez pas que je suis novice dans ce domaine. Si je me trompe, n'hésitez pas à me corriger.

Autres conseils

Si vous traitez avec une base de données de séries chronologiques massive, les normes sont les suivantes:

Ils ne sont pas bon marché, mais ils peuvent gérer vos données de manière très efficace.

Quelqu'un que je respecte respecte la base de données Open Time Series. En particulier, le schéma était le plus beau qu'il ait jamais vu.

http://opentsdb.net/

'Je suis debout devant la même montagne. Mon principal problème avec cassandra est que je ne peux pas obtenir de flux sur l'ensemble de résultats, par exemple sous la forme d'un itérateur.

Je regarde déjà la documentation et le net, mais rien.

Je ne peux pas récupérer toutes les clés, puis obtenir les lignes car des milliards de lignes rendent cela impossible.

Le pilote Java DataStax permet la pagination automatique afin de diffuser les résultats exactement comme un itérateur. Tout cela est intégré. C’est dans Cassandra 2.0.1 en passant - http://www.datastax.com/dev/blog/client-side-improvements-in-cassandra -2-0

Par souci d'exhaustivité, en lisant ceci en 2018, il existe maintenant une base de données spéciale réservée aux données temporelles appelée TimescaleDB

.

http://www.timescale.com/

Ce blog mérite la lecture. Il explique pourquoi il est supérieur aux solutions telles que Cassandra pour ce cas particulier et pourquoi ils ont décidé de le construire au-dessus de la base de données relationnelle PostgreSQL

.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top