2009-04-29 10 views
15

Je suis à la recherche d'une bibliothèque + serveur raisonnablement bien testé pour stocker une table de hachage distribuée persistante. Je suis hésitant à utiliser des solutions basées sur SQL car les données sont fortement orientées document, consistant en des millions de blobs ~ 64KB avec un seul index (calculé par le hash dudit BLOB) - et doivent pouvoir être distribués pour des perspectives d'échelle à long terme.Stockage distribué de BLOB pour .NET?

En raison des dépenses et de la bande passante, des solutions externes telles que S3 ne sont pas une option. Quelque chose comme CouchDB ou Project Voldemort serait idéal - mais il y a un manque notable de liaisons .NET pour les deux (PV peut être IKVMC de Java - mais a des "problèmes".). La clé et la valeur sont des tableaux d'octets (la clé est de 16 octets, la valeur est de 2048Ko en moyenne 64KB)

J'ai cherché jusqu'à présent un type de port .NET de Dynamo, Chord et similaire - cependant la majorité des résultats semblent être des caches purement en mémoire et manquent de toute forme de persistance ou de réplication.

Vous avez des idées ou des suggestions?

Répondre

8

Jetez un oeil à Rhino DHT de Ayende. Pourrait être plus en ligne avec ce que vous cherchez. La source peut être acquise here.

+0

Ayende a également commencé une série sur la conception de base de données de document http: // ayende.com/Blog/archive/2009/03/17/design-a-document-database-what-next.aspx –

1

Envisager MS Velocity. Résumé: "Velocity" est une plate-forme de cache d'application distribuée en mémoire permettant de développer des applications évolutives, disponibles et hautes performances. "Velocity" fusionne la mémoire entre plusieurs ordinateurs pour donner une seule vue de cache unifiée aux applications. Les applications peuvent stocker n'importe quel objet CLR sérialisable sans se soucier de l'endroit où l'objet est stocké. L'évolutivité peut être réalisée en ajoutant simplement plus d'ordinateurs à la demande. "Velocity" permet également de stocker des copies de données sur le cluster, protégeant ainsi les données contre les échecs. "Velocity" peut être configuré pour s'exécuter en tant que service accessible sur le réseau ou peut être exécuté avec l'application distribuée.

+2

Velocity est un en -mémoire cache seulement, AFAIK il manque toute forme de persistance à long terme. –

2

DryadLINQ ou Hadoop.Net peut aider.

Hadoop.Net est la version dotnet de Hadoop. En savoir plus sur Hadoop peut être trouvé here

+1

Hadoop.Net ne semble aller nulle part. Rien n'est publié sur le site Google Code et l'arborescence SVN est à la révision 1 sans données. –

+0

J'ai utilisé DryadLINQ pour des analyses distribuées à grande échelle et c'est très solide. Il a un modèle de données distribué, bien qu'il soit très orienté vers l'itération sur l'ensemble de la donnée pour l'analyse. Pas tellement pour les recherches distribuées rapides. – Turbo

2

Je pense en fait que vous devriez considérer SQL Server 2008. Stocker les données dans une table avec une colonne varbinary (max), avec une colonne qui contient le hachage de cette colonne. Indexez le hachage, comme vous l'avez suggéré.

Vous pourrez ensuite utiliser les différentes fonctions de distribution du produit.

1

Vous pouvez essayer StorageEdge il a la technologie NCache à son back-end donc en l'utilisant, vous aurez la prise en charge du cache distribué qui améliorera les performances de SharePoint, la fiabilité, l'évolutivité et optimiser son stockage en même temps.

Voici lien vers la page d'accueil de StorageEdge http://www.alachisoft.com/storageedge/ Je l'espère aider :)

Rest for .NET, vous pouvez toujours essayer NCache un grand nom Caching Distribué vous trouverez les détails sur http://www.alachisoft.com/ncache/

Questions connexes