Распределенное хранилище BLOB для .NET?

Я ищу достаточно хорошо протестированную библиотеку + сервер для хранения постоянной распределенной хеш-таблицы.

Я не решаюсь использовать решения на основе SQL, поскольку данные в значительной степени ориентированы на документы, состоящие из миллионов больших двоичных объектов ~ 64 КБ только с одним индексом (вычисленным по хэшу указанного BLOB) и должны иметь возможность распределяться для долгосрочного масштабирования. перспективы.

Из соображений стоимости и пропускной способности внешние решения, такие как S3, не подходят.

Что-то вроде CouchDB или Project Voldemort было бы идеальным, однако для обоих заметно отсутствие привязок .NET (PV может быть IKVMC'd из Java - однако есть «проблемы».). И ключ, и значение представляют собой байтовые массивы (ключ — 16 байт, значение — до 2048 КБ, в среднем 64 КБ).

До сих пор я искал какой-то порт .NET для Dynamo, Chord и подобных, однако большинство результатов, по-видимому, представляют собой исключительно кэши в памяти и не имеют какой-либо формы сохранения или репликации.

У кого-нибудь есть идеи или предложения?


person Adam Frisby    schedule 29.04.2009    source источник


Ответы (5)


Взгляните на Rhino DHT от Ayende. Может быть больше соответствует тому, что вы ищете. Исходный код можно получить здесь.

person Harry Steinhilber    schedule 30.04.2009
comment
Айенде также начал серию статей о проектировании баз данных документов ayende.com/Blog/archive/2009/03/17/ - person David Robbins; 19.05.2009

DryadLINQ или Hadoop.Net может помочь.

Hadoop.Net — это версия Hadoop для дотнетов. Подробнее о Hadoop можно узнать здесь

person Harsha Hulageri    schedule 17.05.2009
comment
Hadoop.Net, похоже, никуда не денется. На сайте Google Code ничего не публикуется, а дерево SVN находится в редакции 1 без данных. - person Joe Doyle; 18.05.2009
comment
Я использую DryadLINQ для крупномасштабной распределенной аналитики, и это очень надежно. Он имеет распределенную модель данных, хотя он очень ориентирован на итерацию всей части данных для аналитики. Не так много для быстрого распределенного поиска. - person Turbo; 27.01.2010

Я действительно думаю, что вам следует рассмотреть SQL Server 2008. Храните данные в таблице со столбцом varbinary(max) вместе со столбцом, содержащим хэш этого столбца. Индексируйте хэш, как вы предложили.

После этого вы сможете использовать различные функции распространения продукта.

person John Saunders    schedule 17.05.2009

Рассмотрим MS Velocity.

Описание: «Velocity» — это распределенная платформа кэширования приложений в памяти для разработки масштабируемых, доступных и высокопроизводительных приложений. «Velocity» объединяет память между несколькими компьютерами, чтобы дать приложениям единый унифицированный вид кеша. Приложения могут хранить любой сериализуемый объект CLR, не беспокоясь о том, где хранится этот объект. Масштабируемость может быть достигнута путем простого добавления дополнительных компьютеров по требованию. «Скорость» также позволяет хранить копии данных в кластере, тем самым защищая данные от сбоев. «Скорость» может быть настроена для работы в качестве службы, доступ к которой осуществляется через сеть, или может быть запущена в составе распределенного приложения.

person JasonRShaver    schedule 29.04.2009
comment
Velocity - это только кеш в памяти, насколько мне известно, в нем отсутствует какая-либо форма долгосрочного сохранения. - person Adam Frisby; 30.04.2009

Вы можете попробовать StorageEdge, в его серверной части есть технология NCache, поэтому, используя его, вы получите поддержку распределенного кэша, который повысит производительность, надежность, масштабируемость SharePoint и одновременно оптимизирует его хранилище.

Вот ссылка на домашнюю страницу StorageEdge http://www.alachisoft.com/storageedge/ Надеюсь, это поможет :)

Остальное для .NET, вы всегда можете попробовать NCache, известное имя в распределенном кэшировании, вы можете найти его подробности на http://www.alachisoft.com/ncache/

person Elvira Acosta    schedule 15.09.2011