2011-04-15 2 views
8

J'ai une application C#/.NET qui doit stocker des blobs binaires de taille variable (10 Ko - 100 Mo) dans un référentiel central. MogileFS répond exactement à mes besoins (une évolutivité horizontale transparente, disponible en une seule opération, optimisée pour le matériel de base), mais le manque de liaisons .NET suggère qu'il existe d'autres façons .NET-ish de le faire. Ou devrais-je simplement écrire ces fixations?Stockage de fichiers à lecture unique souvent distribué en lecture pour .NET?

+0

Le langage de programmation C# n'a pas de structure pour traiter les E/S de fichiers ou de bases de données de quelque type que ce soit. Peut-être que vous demandez s'il existe une solution .NET pour cela? –

+0

Oui, merci. Mise à jour de la question pour refléter cela. –

+0

Notez que cette question est similaire à http://stackoverflow.com/questions/804034/distributed-storage-of-blobs-for-net mais n'est pas identique - je recherche un stockage de fichiers plutôt qu'un stockage de valeur-clé. –

Répondre

1

Vous pouvez envisager Raven DB pour cela. Il est optimisé pour un ratio lecture-écriture plus élevé que les autres solutions, et il est spécifique à .NET. Le soutien des scénarios distribués, y compris sharding, multi-location, etc sont cuits dans.

Raven DB Website

0

Je vous suggère de regarder à CloudIQ Storage de Appistry. C'est un magasin de données entièrement distribué qui fonctionne sur le matériel de base. Vous pouvez définir le nombre de copies d'un fichier qu'il maintient sur plusieurs nœuds, fichier par fichier. Ainsi, si vous écrivez un fichier une seule fois, mais que vous avez plusieurs lectures simultanées, vous pouvez définir la valeur de N (nombre de copies d'un fichier) sur un grand nombre pour obtenir une plus grande simultanéité.

Le système implémente une interface basée sur REST pour PUT et GET, et les méta-données sont renvoyées dans JSON, de sorte qu'il y a beaucoup de bonnes bibliothèques disponibles dans .NET.

0

Je vais sortir d'ici et suggérer MySQL. Si vous utilisez MySQL avec MyISAM, il me semble que vous correspondez bien à vos besoins. Si vous voulez hautement disponible, vous pouvez utiliser la réplication pour refléter les données sur plusieurs machines. Si vous voulez encore plus haute disponibilité, vous pouvez migrer vers MySQL Cluster. Les bindings .Net pour MySQL fonctionnent très bien. À moins que vous ayez vraiment besoin de quelque chose de plus spécialisé, ce que vous ne semblez pas faire à partir de votre petite description, alors MySQL pourrait être à la hauteur. L'avantage d'utiliser un SGBDR standard, même lorsque vous n'avez pas forcément besoin de tout cela, c'est qu'il est facile de trouver des développeurs qui savent déjà comment travailler avec.