2009-04-29 15 views
15

Estoy buscando una biblioteca + servidor razonablemente bien probado para almacenar una tabla hash distribuida persistente.Almacenamiento distribuido de BLOB para .NET?

Tengo dudas sobre el uso de soluciones basadas en SQL ya que los datos están altamente orientados a documentos, consisten en millones de blobs ~ 64KB con un solo índice (calculado por hash de dicho BLOB) y deben poder distribuirse para perspectivas de escalado a largo plazo.

Debido a consideraciones de costo y ancho de banda, las soluciones externas como S3 no son una opción.

Algo como CouchDB o Project Voldemort sería ideal; sin embargo, hay una falta notoria de enlaces .NET para ambos (PV puede ser IKVMC desde Java, pero tiene "problemas"). Tanto la clave como el valor son matrices de bytes (la clave es 16 bytes, el valor es de hasta 2048 KB con un promedio de 64 KB)

He buscado hasta ahora algún tipo de puerto .NET de Dynamo, Chord y similares, sin embargo, la mayoría de los resultados parecen ser memorias caché puramente en memoria y carecen de cualquier forma de persistencia o replicación.

¿Alguien tiene alguna idea o sugerencia?

Respuesta

8

Eche un vistazo a Ayende's Rhino DHT. Podría estar más en línea con lo que estás buscando. La fuente se puede adquirir here.

+0

Ayende también ha comenzado una serie de diseño de bases de datos de documentos http: // ayende.com/Blog/archive/2009/03/17/designing-a-document-database-what-next.aspx –

1

Considere MS Velocity.

Resumen: "Velocity" es una plataforma de caché de aplicaciones en memoria distribuida para desarrollar aplicaciones escalables, disponibles y de alto rendimiento. "Velocity" fusiona la memoria en varias computadoras para ofrecer una única vista de caché unificada a las aplicaciones. Las aplicaciones pueden almacenar cualquier objeto CLR serializable sin preocuparse por dónde se almacena el objeto. La escalabilidad se puede lograr simplemente agregando más computadoras a pedido. "Velocity" también permite que se almacenen copias de datos en el clúster, protegiendo así los datos contra fallas. "Velocity" se puede configurar para ejecutarse como un servicio al que se accede a través de la red o se puede ejecutar incrustado con la aplicación distribuida.

+2

velocidad es una de -caché de memoria solamente, AFAIK carece de cualquier forma de persistencia a largo plazo. –

2

DryadLINQ o Hadoop.Net pueden ayudar.

Hadoop.Net es la versión dotnet de Hadoop. Puede encontrar más información sobre Hadoop here

+1

Parece que Hadoop.Net no va a ningún lado. No se publica nada en el sitio de Google Code y el árbol SVN está en la revisión 1 sin datos. –

+0

He estado utilizando DryadLINQ para análisis distribuidos a gran escala y es muy sólido. Tiene un modelo de datos distribuidos, aunque está muy orientado a iterar sobre toda la información para el análisis. No tanto para búsquedas rápidas distribuidas. – Turbo

2

Creo que debería considerar SQL Server 2008. Almacene los datos en una tabla con una columna varbinary (max), junto con una columna que contenga el hash de esa columna. Indexe el hash, como sugirió.

A continuación, podrá utilizar las diversas funciones de distribución del producto.

1

Puede probar que StorageEdge tiene tecnología NCache en su back-end, así que al usarlo tendrá soporte de caché distribuida que aumentará el rendimiento de SharePoint, la confiabilidad, la escalabilidad y optimizará su almacenamiento al mismo tiempo.

Aquí es un enlace a la página principal de StorageEdge http://www.alachisoft.com/storageedge/ espero que ayude :)

descanso para .NET siempre se puede intentar NCache un gran nombre en almacenamiento en caché distribuido usted puede encontrar los detalles en http://www.alachisoft.com/ncache/

Cuestiones relacionadas