Распределенное файловое хранилище с однократной записью и частым чтением для .NET?

У меня есть приложение C#/.NET, которому необходимо хранить бинарные BLOB-объекты переменного размера (от 10 КБ до 100 МБ) в центральном репозитории. MogileFS точно соответствует моим потребностям (однократная запись, высокая доступность, прозрачная горизонтальная масштабируемость, оптимизация для массового оборудования), но отсутствие привязок к .NET предполагает, что есть какой-то другой, более .NET-подобный способ сделать это.

Или я должен просто писать эти привязки?


person sh-beta    schedule 15.04.2011    source источник
comment
Язык программирования C# не имеет конструкций для работы с файловым вводом или вводом-выводом базы данных любого типа. Возможно, вы спрашиваете, есть ли для этого решение .NET?   -  person John Saunders    schedule 16.04.2011
comment
Да, спасибо. Обновил вопрос, чтобы отразить это.   -  person sh-beta    schedule 16.04.2011
comment
Обратите внимание, что этот вопрос аналогичен stackoverflow.com /questions/804034/, но не идентичны - я ищу хранилище файлов, а не хранилище ключей-значений.   -  person sh-beta    schedule 16.04.2011
comment
Для меня отсутствие существующих привязок говорит только о том, что никто не писал (и не выпускал) такие привязки; У меня возникает соблазн сказать, что идеальным ответом здесь будет... Напишите привязки.   -  person Marc Gravell    schedule 16.04.2011
comment
Черт возьми, если протокол прост, я мог бы посмотреть, смогу ли я уделить несколько минут   -  person Marc Gravell    schedule 16.04.2011


Ответы (3)


Вы можете рассмотреть Raven DB для этого. Он оптимизирован для более высокого соотношения операций чтения и записи по сравнению с другими решениями и специфичен для .NET. Встроена поддержка распределенных сценариев, включая сегментирование, мультитенантность и т. д.

Веб-сайт Raven DB

person dreadwail    schedule 17.04.2011

Я бы посоветовал вам взглянуть на CloudIQ Storage от Appistry. Это полностью распределенное хранилище данных, работающее на общедоступном оборудовании. Вы можете определить количество копий файла, которое он поддерживает между узлами, для каждого файла отдельно. Таким образом, если вы пишете файл один раз, но имеете много одновременных операций чтения, вы можете установить большое значение N (количество копий файла), чтобы получить больший параллелизм.

Система реализует интерфейс на основе REST для PUT и GET, а метаданные возвращаются в формате JSON, поэтому в .NET доступно много хороших библиотек.

person Brett McCann    schedule 18.04.2011

Я собираюсь пойти на риск и предложить MySQL. Если вы используете MySQL с MyISAM, мне кажется, что он вполне соответствует вашим потребностям. Если вам нужна высокая доступность, вы можете использовать репликацию для зеркалирования данных на многих машинах. Если вам нужна еще более высокая доступность, вы можете перейти на MySQL Cluster. Привязки .Net для MySQL работают достаточно хорошо. Если вам действительно не нужно что-то более специализированное, что, судя по вашему небольшому описанию, вам не нужно, MySQL может справиться с этой задачей. Преимущество использования стандартной СУБД, даже если вам не обязательно нужны все ее функции, заключается в том, что легко найти разработчиков, которые уже знают, как с ней работать.

person Kibbee    schedule 18.04.2011