Pregunta

Hay un valor de la clave de la tienda que me dará el siguiente:

  • Permítanme simplemente añadir y eliminar nodos y redstribute los datos de forma automática
  • Me permite quitar nodos y todavía tienen 2 datos adicionales de los nodos para proporcionar redundancia
  • Me permite almacenar texto o imágenes de hasta 1GB de tamaño
  • Puede almacenar pequeño tamaño de datos de hasta 100 TB de datos
  • Rápido (por lo que permitirá que se realicen consultas en la parte superior)
  • Hacer todo esto de forma transparente para el cliente
  • Funciona en Ubuntu/FreeBSD o Mac
  • Libre o de código abierto

Yo, básicamente, quiero algo que pueda usar un "único", y no tiene que preocuparse de tener memcached, una base de datos, y varios componentes de almacenamiento, así que, sí, yo quiero una base de datos de la "bala de plata" se podría decir.

Gracias

Zubair

Las respuestas hasta el momento:MogileFS en la parte superior de BackBlaze - tan lejos Como puedo ver que esto es sólo un sistema de ficheros, y después de algunas investigaciones sólo parece ser apropiado para grandes archivos de imagen

Tokio Tirano - Necesidades lightcloud.Esto no auto escala como agregar nuevos nodos.Me puse a pensar en esto y parece ser que es muy rápido para las consultas que caben en un único nodo, aunque

Riak - Este es uno de los que me estoy buscando a mí mismo, pero no tengo resultados todavía

Amazon S3 - Es cualquier persona que use este como único persistencia de la capa en la producción?Por lo que he visto parece ser que se utiliza para el almacenamiento de imágenes como consultas complejas son demasiado caros

@shaman sugirió Cassandra - sin duda, uno estoy buscando en

Hasta el momento parece que no hay ninguna base de datos o el valor de clave de almacén que cumpla con los criterios que he mencionado, ni siquiera después de haber ofrecido una recompensa de 100 puntos hizo la pregunta contestadas!

¿Fue útil?

Solución

Usted está pidiendo demasiado de software de código abierto.

Si usted tiene un par de cientos de miles de dólares en su presupuesto para alguna empresa de clase de software, hay un par de soluciones.Nada va a hacer lo que usted desea fuera de la caja, pero hay empresas que tienen productos que están cerca de lo que usted está buscando.

"Rápido (por lo que permitirá que se realicen consultas en la parte superior)"

Si usted tiene un almacén de claves y valores, todo debe ser muy rápido.Sin embargo, el problema es que sin una ontología de datos o esquema construido en la parte superior de la clave-valor en el almacén, usted va a terminar pasando a través de toda la base de datos para cada consulta.Usted necesita un índice que contiene la clave para cada "tipo" de datos que desea almacenar.

En este caso, usted puede realizar consultas en paralelo en contra de todos los alrededor de 15.000 máquinas.El cuello de botella es que los hoteles de unidades de disco duro de tapa a cabo en 50 búsquedas por segundo.Si el conjunto de datos se ajusta en la memoria RAM, su rendimiento será muy alta.Sin embargo, si las claves se almacenan en la RAM, pero no hay suficiente RAM para los valores a ser almacenados, el sistema va a pasar a disco en casi todos los de la clave-valor de las búsquedas.Las teclas están situados en posiciones aleatorias en la unidad.

Esto te limita a 50 clave-valor de búsquedas por segundo por cada servidor.Mientras que cuando los pares clave-valor que se guarda en la RAM, no es extraño que para obtener 100 mil operaciones por segundo por cada servidor en el hardware básico (ex.Redis).

Serie disco de rendimiento de la lectura es, sin embargo, muy alto.He de buscar unidades de goto 50 MB/s (800 Mb/s) en una serie de lecturas.Así que si usted está almacenando los valores en el disco, tiene la estructura para el almacenamiento, de modo que los valores que se deben leer desde el disco se puede leer en serie.

Ese es el problema.Usted no puede obtener un buen rendimiento de vainilla clave-valor tienda a menos que cualquiera de las tiendas de los pares clave-valor completamente en la memoria RAM (o las teclas de memoria RAM con valores en unidades SSD) o si usted definir algún tipo de esquema o tipo de sistema en la parte superior de las teclas y, a continuación, agrupe los datos en el disco, de modo que todas las llaves de un determinado tipo puede ser recuperada fácilmente a través de una serie de lectura de disco.

Si hay una clave que tiene varios tipos (por ejemplo, si usted tiene el tipo de datos relaciones de herencia en la base de datos), entonces la clave va a ser un elemento de múltiples tablas de índice.En este caso, usted tendrá que hacer que el tiempo-espacio de compensaciones para la estructura de los valores, por lo que se puede leer en serie del disco.Esto implica el almacenamiento de copias redundantes de el valor de la clave.

Lo que quiero es que va a ser un poco más avanzado que el de un almacén de claves y valores, especialmente si usted tiene la intención de hacer consultas.El problema de almacenar archivos de gran tamaño, sin embargo, es un no-problema.Imagine que su sistema puede teclas de hasta 50 megas.Entonces usted acaba de romper un 1 giga de archivo en 50 megas de segmentos y asociar una clave para cada segmento de valor.El uso de un simple servidor es directa a traducir la parte del archivo que se desea en una clave-valor de la operación de búsqueda.

El problema de lograr la redundancia es más difícil.Es muy fácil de "código fuente" o "parte" del archivo de la clave-valor de la tabla para un servidor, de manera que el servidor de datos puede ser reconstruido en la velocidad del alambre (1 Gb/s) en un servidor de reserva, si un servidor en particular muere.Normalmente, se puede detectar el servidor de la muerte con un "latido del corazón" del sistema, que se activa si el servidor no responde durante 10 segundos.Incluso es posible clave-valor de las búsquedas en contra de la parte-archivo codificado clave-valor de las tablas, pero es ineficiente para hacerlo, pero todavía le da una copia de seguridad para el evento de error del servidor.Más temas es casi imposible mantener la copia de seguridad hasta la fecha y los datos pueden ser de 3 minutos de edad.Si usted está haciendo un montón de escrituras, la funcionalidad de copia de seguridad se van a introducir algunos sobrecarga de rendimiento, pero la sobrecarga será insignificante si su sistema es principalmente haciendo lecturas.

Yo no soy un experto en el mantenimiento de la coherencia de base de datos y restricciones de integridad en virtud de los modos de fallo, así que no estoy seguro de cuáles son los problemas de este requisito ha de introducir.Si usted no tiene que preocuparse de esto, se simplifica enormemente el diseño del sistema y sus requisitos.

Rápido (por lo que permitirá que se realicen consultas en la parte superior)

En primer lugar, olvídate de las combinaciones o cualquier operación que se adapta más rápido que n*log(n) cuando la base de datos es de este tamaño.Hay dos cosas que usted puede hacer para reemplazar la funcionalidad normalmente implementado con combinaciones.Usted puede ya sea de la estructura de los datos, de modo que usted no necesita hacer combinaciones o puede "pre-compilar" las consultas que usted está haciendo y hacer un espacio-tiempo de trade-off y pre-calcular las combinaciones y almacenarlos para su búsqueda por adelantado.

Para la web semántica bases de datos, creo que vamos a ver a las personas que pre-compilación de las consultas y hacer que el tiempo-espacio de los trade-offs con el fin de lograr un rendimiento decente en incluso de tamaño modesto conjuntos de datos.Creo que esto se puede hacer de forma automática y transparente por parte de la base de datos back-end, sin ningún esfuerzo por parte del programador de la aplicación.Sin embargo, apenas estamos comenzando a ver la empresa bases de datos de la aplicación de estas técnicas para bases de datos relacionales.Ningún producto de código abierto que hace que yo soy consciente y me habría sorprendido si alguien está tratando para ello de los datos vinculados en escalables horizontalmente bases de datos todavía.

Para estos tipos de sistemas, si se tiene más RAM o espacio de almacenamiento en el mejor uso de lo que es pre-calcular y almacenar el resultado en común de los sub-consultas por motivos de rendimiento, en lugar de añadir más redundancia para el almacén de claves y valores.Pre-calcular resultados y orden de las claves que van a la consulta con el a su vez un n^2 se unen en un log(n) de búsqueda.Cualquier consulta o sub-consulta que escalas peor que n*log(n) es algo cuyos resultados deben ser realizadas y almacenada en el almacén de claves y valores.

Si usted está haciendo un gran número de escrituras, la caché sub-consultas serán invalidadas más rápido de lo que pueden ser procesados y no hay ninguna ventaja de rendimiento.Tratar con la invalidación de caché para almacenar en caché sub-consultas es otro problema irresoluble.Creo que una solución es posible, pero no lo he visto.

Bienvenido al infierno.Usted no debe esperar para obtener un sistema como este gratis para otros 20 años.

Hasta el momento parece que no hay ninguna base de datos o el valor de clave de almacén que cumpla con los criterios que he mencionado, ni siquiera después de haber ofrecido una recompensa de 100 puntos hizo la pregunta contestadas!

Usted está pidiendo un milagro.Esperar 20 años hasta que hemos de código abierto milagro bases de datos o usted debe estar dispuesto a pagar dinero por una solución personalizada a las necesidades de la aplicación.

Otros consejos

Amazon S3 es una solución de almacenamiento, no una base de datos.

Si sólo necesita simple clave / valor de la mejor opción sería utilizar Amazon SimpleDB en combinación con S3. Los archivos grandes se almacenan en S3, mientras que los metadatos para la búsqueda se almacenan en SimpleDB. esto le da un sistema de clave / valor escalable horizontalmente, con acceso directo a S3.

Hay otra solución, que parece ser exactamente lo que busca: el proyecto Apache Cassandra: http: //incubator.apache.org/cassandra/

En el momento gorjeo está cambiando a Cassandra de MySQL Cluster memcached +

HBase y HDFS en conjunto cumplen la mayoría de estos requisitos. HBase se puede utilizar para almacenar y recuperar objetos pequeños. HDFS se puede utilizar para almacenar objetos grandes. HBase compacta objetos pequeños y los almacena como las más grandes en HDFS. La velocidad es relativa - HBase no es tan rápido en al azar lee desde el disco como MySQL (por ejemplo) -, pero es bastante rápido que sirve lee desde la memoria (similar a Cassandra). Tiene excelente rendimiento de escritura. HDFS, la capa de almacenamiento subyacente, es totalmente resistente a la pérdida de varios nodos. Se replica a través de bastidores, así que permiten mantener el nivel de rack. Es una pila basada en Java con licencia Apache -. Carreras más o menos la mayor parte del sistema operativo

Las principales debilidades de esta pila están a menos de rendimiento de lectura aleatoria de disco óptima y la falta de apoyo del centro de datos transversales (que es un trabajo en progreso).

Te puedo sugerir dos soluciones posibles:

1) Comprar servicio de Amazon (Amazon S3). Por 100 TB que le costará 14 $ 512 mensual.
2) solución mucho más barata:

La construcción de dos vainas de almacenamiento Backblaze personalizado ( enlace ) y ejecutar un MogileFS en la parte superior de la misma.

Actualmente estoy investigando cómo almacenar petabytes de datos a través de soluciones similares, así que si encuentras algo interesante en la que, por favor, que publicar notas.

Tome un vistazo a Tokio Tirano . Es un muy ligero, de alto rendimiento, repitiendo el demonio de la exportación de una Tokio Gabinete almacén de claves-valor a la red . He oído cosas buenas sobre él.

Por lo que veo en su pregunta Proyecto Voldemort parece ser la más cercana. Echar un vistazo a su página Diseño .

El único problema que veo es cómo va a manejar archivos de gran tamaño, y de acuerdo con este hilo , que no son todos buenos. Pero siempre se puede evitar que con bastante facilidad utilizando archivos. En el fondo - este es el propósito exacto de un sistema de archivos. Echar un vistazo a la Wikipedia lista de sistemas de archivos -. La lista es enorme

Es posible que desee echar un vistazo a MongoDB .

Por lo que puedo decir que está buscando un / mezcla distrubuted sistema de archivos de base de datos, lo que podría ser difícil o incluso imposible de encontrar.

Es posible que desee echar un vistazo a los sistemas de archivos distribuidos como MooseFS o Gluster y mantener sus datos como archivos. Ambos sistemas son y distribuido (se puede poner y sacar los nodos como desee) con tolerancia a fallos, y ambos son transparentes para los clientes (construido en la cima de FUSE) - que está utilizando operaciones del sistema de archivos simples. Esto cubre siguientes características: 1), 2), 3), 4), 6), 7), 8). Estamos utilizando MooseFS para el almacenamiento digital de películas con algo aroung 1,5 PB de almacenamiento y carga / descarga es tan rápido como configuración de la red permite (por lo que el rendimiento es de E / S depende, no de protocolo o aplicación dependiente). Usted no tendrá consultas (5) característica de la lista), pero se pueden complementar dicho sistema de archivos con algo así como MongoDB o incluso algún buscador como Lucene (se ha agrupado los índices) para consultar los datos almacenados en el sistema de archivos.

Zubair,

Estoy trabajando en un almacén de claves-valor que hasta ahora es más rápido que cualquier otra cosa .

No hace (aún) utilizar la replicación, la falta de sus 2 primeros requisitos, pero esta cuestión me inspiró - gracias por eso

no: me limito a añadir y eliminar nodos y tendrá redstribute los datos
La automáticamente no: me permite eliminar nodos y todavía tiene 2 nodos de datos adicionales para proporcionar redundancia
OK: Permítame para almacenar texto o imágenes de hasta 1GB de tamaño (sí: sin límite)
OK: Puede almacenar datos de tamaño pequeños de hasta 100 TB de datos (sí: sin límite)
OK: Rápido (por lo permitan las consultas que se realicen en la parte superior de la misma) (sí: más rápido que el conjunto TC-fija de Tokio Gabinete)
OK: Hacer todo esto transparente para el cliente (sí: integrado al servidor web)
OK: Funciona en Ubuntu / FreeBSD o Mac (sí: Linux)
OK: libre o de código abierto (sí: freeware)

Además de las actuaciones de un solo hilo superiores a tablas hash y los árboles B, esta tienda KV es el único que conozco que ser "ESPERE-libre" (no bloqueo, ni retrasar cualquier operación).

MarkLogic va en esta dirección. No, en absoluto gratuita, aunque ...

Además de lo que otros han mencionado - se puede echar un vistazo a OrientDB - http: // código .google.com / p / oriente / un documento y almacenar K / V que se ve muy prometedor.

BigCouch . Es CouchDB, pero optimizado para grupos (y todos los grandes problemas de los datos racimos son apropiadas para). BigCouch está recibiendo fusionado en el proyecto CouchDB como hablamos, por la gente de Cloudant , muchos de los cuales son fundamentales committers a CouchDB.

resumen de sus necesidades:

  

Permítanme simplemente añadir y eliminar nodos y se redstribute los datos de forma automática

     

Permítanme eliminar nodos y todavía tiene 2 nodos de datos adicionales para proporcionar redundancia

Sí. BigCouch utiliza el concepto de quórum de Dynamo, para establecer cuántos nodos mantener el número de copias de sus datos.

  

Permítanme para almacenar texto o imágenes de hasta 1GB de tamaño

Sí. Al igual que CouchDB, puede transmitir manchas (como archivos) de tamaño arbitrario a la base de datos.

  

Puede almacenar datos de pequeño tamaño hasta 100 TB de datos

Sí. El equipo que construyó BigCouch lo hicieron porque se enfrentan a un sistema de generación de petabytes de datos por segundo.

  

Fast (por lo permitan las consultas a realizar en la parte superior de la misma)

Sí. Las consultas se realizan por MapReduce en O (log n) tiempo .

  

Hacer todo esto transparente para el cliente

     

Funciona en Ubuntu / FreeBSD o Mac

     

libre o de código abierto

Sí! de código abierto bajo la licencia Apache 2.0. La instalación por defecto instrucciones son para un sistema Debian, como Ubuntu.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top