Question

Y at-il un magasin de valeur clé qui va me donner les éléments suivants:

  • Permettez-moi d'ajouter simplement et supprimer des nœuds et je redstribute les données automatiquement
  • Permettez-moi de supprimer des nœuds et ont encore 2 nœuds de données supplémentaires pour assurer la redondance
  • Permettez-moi de stocker du texte ou des images jusqu'à 1 Go en taille
  • Peut stocker des données de petite taille jusqu'à 100 To de données
  • rapide (donc permettant des requêtes à effectuer sur le dessus de celui-ci)
  • tout cela transparent pour le client
  • Travaux sur Ubuntu / FreeBSD ou Mac
  • libre ou open source

Je veux essentiellement quelque chose que je peux utiliser un « single », et ne pas avoir à se soucier d'avoir memcached, un db, et plusieurs composants de stockage alors oui, je veux une base de données « balle d'argent », vous pouvez dire.

Merci

Zubair

Réponses à ce jour: MogileFS sur le dessus de BackBlaze - Pour autant que je peux voir c'est juste un système de fichiers, et après quelques recherches, il semble seulement être approprié pour les gros fichiers d'images

Tokyo Tyrant - besoins lightcloud. Cela ne l'échelle automatique que vous ajoutez de nouveaux nœuds. J'ai étudié cela et il semble qu'il est très rapide pour les requêtes qui correspondent sur un seul nœud si

Riak - C'est celui que je cherche en moi-même, mais je n'ai pas encore aucun résultat

Amazon S3 - Est-ce que quelqu'un en utilisant leur seule couche de persistence dans la production? D'après ce que je l'ai vu, il semble être utilisé pour le stockage d'images comme des requêtes complexes sont trop chers

@shaman suggéré Cassandra - sans aucun doute que je suis à la recherche dans

Jusqu'à présent, il semble qu'il n'y a aucune base de données ou un magasin de valeur clé qui répond aux critères je l'ai mentionné, pas même après avoir offert une prime de 100 points ne la question obtenir des réponses!

Était-ce utile?

La solution

Vous demandez trop de logiciels open source.

Si vous avez quelques centaines de milliers de dollars dans votre budget pour certains logiciels de classe entreprise, il y a deux solutions. Rien ne va faire ce que vous voulez de la boîte, mais il y a des entreprises qui ont des produits qui sont proches de ce que vous recherchez.

« rapide (donc permettant des requêtes à effectuer sur le dessus de celui-ci) »

Si vous avez un magasin clé-valeur, tout devrait être très rapide. Cependant, le problème est que, sans une ontologie ou d'un schéma de données construit au-dessus du magasin clé-valeur, vous finirez par passer par la base de données entière pour chaque requête. Vous avez besoin d'un index contenant la clé pour chaque « type » de données que vous souhaitez mémoriser.

Dans ce cas, vous pouvez généralement effectuer des requêtes en parallèle contre toutes les machines ~ 15.000. Le goulot d'étranglement est que les disques durs bon marché décapsuler 50 cherche par seconde. Si votre ensemble de données correspond dans la RAM, votre performance sera extrêmement élevé. Toutefois, si les clés sont stockées dans la mémoire vive, mais il n'y a pas assez de RAM pour les valeurs à mémoriser, le système sera de disque goto sur presque toutes les recherches clé-valeur. Les touches sont situées chacune à des positions aléatoires sur le disque.

Cela vous limite à 50 clé-valeur lookups par seconde par serveur. Alors que lorsque les paires clé-valeur sont stockées dans la mémoire vive, il est rare d'obtenir 100k opérations par seconde et par serveur sur du matériel de base (ex. Redis).

disque série performances de lecture est cependant extrêmement élevé. Je recherche les lecteurs goto 50 Mo / s (800 Mb / s) sur lit série. Donc, si vous stockez des valeurs sur le disque, vous devez structurer le stockage pour que les valeurs qui doivent être lues à partir du disque peuvent être lus en série.

C'est le problème. Vous ne pouvez pas obtenir de bonnes performances sur un magasin de vanille valeur-clé à moins que vous soit stocker les paires clé-valeur complètement dans la mémoire vive (ou les touches dans la RAM avec des valeurs sur les disques SSD) ou si vous définissez un certain type de schéma ou d'un système de type au-dessus de la clés puis regrouper les données sur le disque afin que toutes les clés d'un type donné peuvent être récupérées facilement à travers une lecture de disque série.

Si une clé a plusieurs types (par exemple si vous avez des relations d'héritage de type de données dans la base de données), la clé sera un élément de plusieurs tables d'index. Dans ce cas, vous devrez faire des compromis-espace temps pour structurer les valeurs afin qu'ils puissent être lus en série à partir du disque. Cela implique le stockage des copies redondantes de la valeur de la clé.

Qu'est-ce que vous voulez va être un peu plus avancé qu'un magasin clé-valeur, surtout si vous avez l'intention de faire des requêtes. Le problème de stockage de fichiers volumineux est cependant un non-problème. Faire semblant de votre système peut clés jusqu'à 50 meg. Ensuite, vous cassez juste un fichier de 1 Go en 50 segments de MEG et d'associer une clé à chaque valeur de segment. L'utilisation d'un serveur simple, il est simple de traduire la partie du fichier que vous voulez dans une opération de recherche clé-valeur.

Le problème de la réalisation de redondance est plus difficile. Il est très facile à « code source » ou « fichier partiel » la table valeur de clé pour un serveur, de sorte que les données du serveur peuvent être reconstruites à la vitesse de fil (1 Gb / s) sur un serveur de secours, si un serveur particulier meurt. Normalement, vous pouvez détecter la mort du serveur en utilisant un système de « battement de cœur » qui est déclenchée si le serveur ne répond pas pendant 10 secondes. Il est même possible de valeur clé lookups contre les fichiers-partie codée tables clé-valeur, mais il est inefficace de le faire, mais encore vous donne une sauvegarde pour le cas de défaillance du serveur. Un plus gros problèmes, il est presque impossible de garder la sauvegarde à jour et les données peuvent être 3 minutes vieux. Si vous faites beaucoup d'écritures, la fonctionnalité de sauvegarde va introduire certains frais généraux de performance, mais les frais généraux sera négligeable si votre système fait principalement lit.

Je ne suis pas un expert sur le maintien des contraintes de cohérence et d'intégrité base de données sous les modes de défaillance, donc je ne suis pas sûr de ce que les problèmes this exigence d'introduire. Si vous n'avez pas à vous soucier de cela, il simplifie grandement la conception du système et de ses exigences.

  

rapide (donc permettant des requêtes à effectuer sur le dessus de celui-ci)

Tout d'abord, oublier les jointures ou toute autre opération qui évolue plus vite que n * log (n) lorsque la base de données est ce grand. Il y a deux choses que vous pouvez faire pour remplacer la fonctionnalité normalement mis en œuvre avec des jointures. Vous pouvez structurer les données afin que vous n'avez pas besoin de faire des jointures ou vous pouvez « pré-compilation » les requêtes que vous faites et de faire un espace-temps compromis et pré-calculer les jointures et les stocker pour la recherche à l'avance .

Pour les bases de données du web sémantique, je pense que nous allons voir les pré-compilation des requêtes et de faire l'espace-temps des compromis afin d'obtenir des performances décentes sur des ensembles de données même taille modeste. Je pense que cela peut être fait automatiquement et de façon transparente par la base de données back-end, sans aucun effort de la part du programmeur d'application. Cependant, nous ne faisons que commencer à voir les bases de données d'entreprise mettant en œuvre ces techniques pour les bases de données relationnelles. Aucun produit open source, il fait autant que je sache, et je surpris si quelqu'un essaie de le faire pour les données liées encore dans les bases de données évolutives horizontalement.

Pour ces types de systèmes, si vous avez RAM supplémentaire ou un espace de stockage le meilleur usage est de pré-compute et stocker le résultat des sous-requêtes communes pour des raisons de performance, au lieu d'ajouter plus de redondance à la valeur de clé le magasin. Résultats précalculer et commande par les touches que vous allez interroger contre pour transformer un n ^ 2 rejoindre dans un journal (n) recherche. Toute requête ou d'un sous-requête échelles pire que n * log (n) est quelque chose dont les résultats doivent être effectués et mis en cache dans la mémoire de valeurs clés.

Si vous faites un grand nombre d'écritures, les sous-requêtes mises en cache seront invalidés plus rapidement qu'elles ne peuvent être traitées et il n'y a aucun avantage de performance. Faire face à l'invalidation du cache pour les sous-requêtes mises en cache est un autre problème insoluble. Je pense qu'une solution est possible, mais je ne l'ai pas vu.

Bienvenue en enfer. Vous ne devriez pas vous attendre à obtenir un système comme celui-ci gratuitement pendant 20 ans.

  

Jusqu'à présent, il semble qu'il n'y a aucune base de données ou un magasin de valeur clé qui répond aux critères je l'ai mentionné, pas même après avoir offert une prime de 100 points ne la question obtenir des réponses!

Vous demandez un miracle. Attendre 20 ans jusqu'à ce que nous avons des bases de données open source miracle ou vous devriez être prêt à payer pour une solution sur mesure aux besoins de votre application.

Autres conseils

Amazon S3 est une solution de stockage, pas une base de données.

Si vous avez seulement besoin simple clé / valeur votre meilleur pari serait d'utiliser en combinaison avec Amazon SimpleDB S3. Les fichiers volumineux sont stockés sur S3, alors que les méta-données pour la recherche sont stockées dans SimpleDB. cela vous donne un système clé / valeur horizontale évolutive avec un accès direct à S3.

Il y a une autre solution, qui semble être exactement ce que vous cherchez: Le projet Cassandra Apache: http: //incubator.apache.org/cassandra/

À l'heure actuelle Twitter est le passage à Cassandra de groupe memcached de + mysql

HBase et HDFS ensemble remplissent la plupart de ces exigences. HBase peut être utilisé pour stocker et récupérer des petits objets. HDFS peut être utilisé pour stocker des objets volumineux. HBase compacts de petits objets et les stocke comme les plus grands sur HDFS. La vitesse est relative - HBase est pas aussi rapide sur lit au hasard à partir du disque comme mysql (par exemple) - mais est assez un service rapide lit de la mémoire (similaire à Cassandra). Il a d'excellentes performances en écriture. HDFS, la couche de stockage sous-jacente, est entièrement élastique à la perte de plusieurs noeuds. Il reproduit sur des supports et permettant la maintenance de niveau du rack. Il est une pile Java avec licence Apache -. Fonctionne à peu près la plupart des OS

Les principales faiblesses de cette pile est inférieure à disque aléatoire optimal performances de lecture et le manque de soutien du centre de données croisées (qui est un travail en cours).

Je peux vous proposer deux solutions possibles:

1) Le service Acheter Amazon (Amazon S3). Pour 100 TB il vous en coûtera 14 512 $ par mois.
2) solution beaucoup moins cher:

Construire deux gousses de stockage Backblaze personnalisé ( lien ) et exécuter un MogileFS sur le dessus de celui-ci.

Actuellement, j'enquête sur la façon de stocker des pétaoctets de données à l'aide des solutions similaires, donc si vous trouvez quelque chose d'intéressant à ce sujet, s'il vous plaît vous envoyer des notes.

Jetez un oeil à Tokyo Tyrant . Il est très léger, de haute performance, la réplication démon l'exportation d'un Tokyo magasin clé-valeur du Cabinet au réseau . Je l'ai entendu de bonnes choses à ce sujet.

D'après ce que je vois dans le projet Voldemort votre question semble être le plus proche. Jetez un oeil à leur page Conception .

Le seul problème que je vois est comment il gérer les fichiers énormes, et selon ce fil , chose ne sont pas tous bons. Mais vous pouvez toujours travailler autour qu'utiliser assez facilement des fichiers. En fin de compte - ce qui est le but exact d'un système de fichiers. Jetez un oeil à la -. La liste est énorme

Vous pouvez jeter un oeil à MongoDB .

D'après ce que je peux vous dire êtes à la recherche d'une base de données / mix système de fichiers distrubuted, ce qui pourrait être difficile, voire impossible à trouver.

Vous pouvez jeter un oeil à des systèmes de fichiers distribués comme MooseFS ou Gluster et garder vos données sous forme de fichiers. Les deux systèmes sont tolérant aux pannes et distribués (vous pouvez mettre et enlever les nœuds que vous le souhaitez), et les deux sont transparents aux clients (construit sur FUSE) - vous utilisez ops du système de fichiers simples. Ceci couvre les caractéristiques suivantes: 1), 2), 3), 4), 6), 7), 8). Nous utilisons MooseFS pour le stockage de films numériques avec quelque chose aroung 1,5 PB de stockage et de chargement / déchargement est aussi rapide que la configuration du réseau permet (donc la performance est d'E / S à charge, pas le protocole ou dépendant de l'implémentation). Vous n'aurez pas les requêtes (fonctionnalité 5) sur votre liste), mais vous pouvez couple tel système de fichiers avec quelque chose comme MongoDB ou même certains moteurs de recherche comme Lucene (il a des index cluster) à des données stockées dans le système de fichiers interroger.

Zubair,

Je travaille sur un magasin clé-valeur qui est à ce jour plus vite que toute autre chose .

Il n'a pas (encore) utiliser la réplication, manquant vos 2 premières exigences, mais cette question m'a inspiré - merci pour cela

pas: Permettez-moi d'ajouter simplement et supprimer des nœuds et je redstribute les données
automatiquement pas: Permettez-moi de supprimer des nœuds et ont encore 2 nœuds de données supplémentaires pour assurer la redondance
ok: Permettez-moi de stocker du texte ou des images jusqu'à 1 Go en taille (oui: illimité) ok: Peut stocker des données de petite taille jusqu'à 100 To de données (oui: illimité) ok: rapide (donc permettant des requêtes à effectuer sur le dessus de celui-ci) (oui: plus vite que le tableau de TC-FIXES Tokyo Cabinet) ok: Faire tout cela transparent pour le client (oui: intégré au serveur Web) ok: Fonctionne sur Ubuntu / FreeBSD ou Mac (oui: Linux) ok: libre ou open source (oui: freeware)

En plus des performances supérieures à simple fil de hachage tables et B-arbres, ce magasin KV N'Y je sais être « ATTENDEZ-FREE » (pas de blocage, ni retarder toute opération).

MarkLogic va dans ce sens. Pas du tout gratuit, mais ...

En plus de ce que les autres ont mentionné - vous pouvez jeter un oeil à OrientDB - http: // Code .google.com / p / orient / un document et un magasin K / V qui semble très prometteur.

Consultez BigCouch . Il est CouchDB, mais optimisé pour les clusters (et tous les grands problèmes de données des clusters sont appropriés pour). BigCouch devient fusionné dans le projet CouchDB comme nous parlons, par les gens Cloudant , dont beaucoup sont committers cœur à CouchDB.

Rundown de vos besoins:

  

Permettez-moi d'ajouter simplement et supprimer des nœuds et se redstribute les données automatiquement

     

Permettez-moi de supprimer des nœuds et ont encore 2 nœuds de données supplémentaires pour assurer la redondance

Oui. BigCouch utilise le concept de Dynamo de quorum pour définir le nombre des nœuds garder le nombre de copies de vos données.

  

Permettez-moi de stocker du texte ou des images jusqu'à 1 Go en taille

Oui. Tout comme CouchDB, vous pouvez diffuser blobs (tels que les fichiers) de taille arbitraire à la base de données.

  

Peut stocker des données de petite taille jusqu'à 100 To de données

Oui. L'équipe qui a construit BigCouch ont fait parce qu'ils ont été confrontés à une pétaoctets de génération de système de données par seconde.

  

rapide (donc permettant des requêtes à effectuer sur le dessus de celui-ci)

Oui. Les requêtes sont effectuées par MapReduce dans O (log n) .

  

Faire tout cela transparent pour le client

     

Travaux sur Ubuntu / FreeBSD ou Mac

     

libre ou open source

Eh oui! Open Source sous la licence Apache 2.0. L'installation par défaut des instructions sont pour un système Debian, comme Ubuntu.

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