web-dev-qa-db-fra.com

Base de données hautes performances pour une lecture et une écriture rapides. Aucune mise à jour ou suppression

Je recherche la base de données/le mécanisme pour stocker les données où je peux écrire les données et lire les données avec de hautes performances.

Ce stockage est utilisé pour stocker la journalisation comme des informations importantes sur plusieurs systèmes. Since it's critical data which will be logged, read performance should be pretty fast as these data will be used to show history. Since we never do update on them/delete on them/or do any kinda joins, I am looking for right solution. Probablement, nous pourrions archiver les données à long terme, mais c'est quelque chose de bien à gérer.

J'ai essayé de regarder différentes sources pour comprendre différentes bases de données NoSql, l'opinion des experts est toujours meilleure :)

Must Have:
1. Fast Read without fail
2. Fast Write without fail
3. Random access Performance
4. Replication kinda feature, one goes down, immediately another should be up and working
5. Concurrent write/read data

Good to Have:
1. Search content like analysing the data for auditing with/without Indexes

Don't required:
1. Transactions are not required at all
2. Update never happens
3. Delete never happens
4. Joins are not required

Référé: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

11
Reddy

Divulgation : Kevin Porter est ingénieur logiciel principal chez Aerospike, Inc. depuis mai 2013. ( ref )

Assurez-vous de prendre en compte Aerospike ; Aerospike domine dans l'espace adtech où haut débit les lectures et les écritures sont nécessaires. Aerospike est souvent présenté comme ayant "la vitesse de Redis avec l'évolutivité de Cassandra". Pour la recherche/interrogation, voir la documentation d'Aerospike indice secondaire .

Pour plus d'informations, voir la discussion/articles ci-dessous:

  1. Aerospike vs Cassandra
  2. Aerospike vs Redis et Mongo
  3. Repères Aerospike

Enfin, vérifiez vous-même les performances avec le n million de TPS sur les instructions EC2 .

18
kporter

Permettez-moi d'être le parrain de Cassandra .

Avertissement : Je ne dis pas que Cassandra est meilleur que les autres parce que je ne sais même pas si profondément mongo/redis/que ce soit et je ne sais pas veulent même entrer dans ce genre de choses.

La raison pour laquelle je suggère Cassandra est parce que vos besoins correspondent parfaitement à ce que Cassandra offre et votre "liste non requise" est un ensemble de fonctionnalités qui ne sont pas prises en charge dans Cassandra (jointures pour les instances) ou considérées comme un anti-modèle (suppressions et dans certaines situations mises à jour).

De votre liste "Must Have", point par point

  1. Lecture rapide sans échec: pris en charge. Vous pouvez choisir le niveau de cohérence de chaque opération de lecture en décidant de l'importance de récupérer les informations les plus récentes et de l'importance de la vitesse

  2. Écriture rapide sans échec: Identique au point 1

  3. Performances d'accès aléatoire: Lorsque vous entrez dans le monde Cassandra, vous devez prendre en compte de nombreux paramètres pour obtenir des performances d'accès aléatoire, mais le plus important qui me vient à l'esprit est le modèle de données - si vous créez un modèle de données qui évolue horizontalement ( regardez ici ) et que vous évitez les points chauds, vous obtenez ce dont vous avez besoin. Si vous modélisez correctement votre base de données, vous devriez avoir O (1) pour chaque opération car les données sont structurées pour être interrogées

  4. Réplication: Dans ce Cassandra est encore mieux que ce que vous pourriez penser. Si un nœud tombe en panne, rien ne change dans le cluster et tout (*) continue de fonctionner parfaitement. Cassandra ne repère aucun point de défaillance unique. Je peux vous dire avec une ancienne version de Cassandra que j'ai eu une disponibilité de plus de 3 ans

  5. Données d'écriture/lecture simultanées: Cassandra utilise la politique lww (last-write-wins) pour gérer les écritures simultanées sur le même clé. Le système prend en charge plusieurs opérations de lecture-écriture et, avec les protocoles plus récents, les opérations asynchrones.

Il existe de nombreuses autres fonctionnalités intéressantes Cassandra offres: la mise à l'échelle horizontale linéaire est celle que j'apprécie le plus, mais il y a aussi le fait que vous pouvez connaître l'instant où chaque donnée a été mise à jour (l'horodatage de lww), les fonctionnalités des compteurs et ainsi de suite.

(*) - si vous n'utilisez pas Tout le niveau de cohérence qui, à mon humble avis, ne devrait JAMAIS être utilisé dans un tel système.

6
Carlo Bertuccini

Voici quelques liens supplémentaires sur la façon dont vous pouvez étendre en mémoire avec disque (DRAM, SSM et stockage sur disque) avec Aerospike:

http://www.aerospike.com/hybrid-memory/

http://www.aerospike.com/docs/architecture/storage.html

Je pense que tout le monde a raison de faire correspondre la base de données spécifique à votre cas d'utilisation spécifique. Par exemple, Aerospike est optimal pour les données de valeur-clé. D'autres options pourraient être meilleures.

À titre d'analogie, je me souviendrai toujours comment, il y a des décennies, une de mes soeurs a emprunté mon ordinateur et écrit son article de synthèse dans Microsoft Excel. Ligne après ligne était une ligne différente d'une feuille de calcul. Ça avait l'air moche comme diable, mais, euh, d'accord. Elle a fait le travail. Elle maudit et jura à quel point il était difficile de modifier la chose. Sans blague!

Choisir la bonne base de données NoSQL pour la bonne tâche rendra votre travail un jeu d'enfant, ou pourrait vous faire maudire une séquence bleue si vous décidez du mauvais outil de base pour la tâche à accomplir.

Bien sûr, chaque fournisseur va défendre son produit. Je pense qu'il vaut mieux que la communauté réponde à la question. Voici un autre thread Stack Overflow répondant à une question similaire:

Quelqu'un at-il travaillé avec Aerospike? Comment se compare-t-il à MongoDB?

btw: Avez-vous des idées plus précises à nous donner sur le type de problème que vous essayez de résoudre?

5
Peter Corless