Han pasado poco más de un par de semanas desde el lanzamiento de membase.org, junto con los socios de NorthScale en Zynga y NHN. En ese tiempo, hemos ido aumentando constantemente las publicaciones en la wiki y respondiendo a las preguntas sobre el lista de correoel chat XMPP y el canal IRC. Cuando surgen preguntas, suelen ser sobre cómo se compara el sistema de gestión de bases de datos membase con otros proyectos de código abierto, qué tipo de cliente se utilizaría o cuáles son las piezas cuando se despliega.
El mundo de NoSQL
En general, creo que la gente entiende que, a alto nivel, membase es un sistema distribuido de gestión de bases de datos clave-valor que está diseñado para escalar tanto hacia arriba como hacia abajo, haciéndolo sin interrumpir los servicios de datos.
Membase es un ejemplo de qué DB está diseñada para ofrecer el mismo tipo de rendimiento que las aplicaciones necesitan para estar en el camino crítico de obtener datos para el usuario. Si observamos el mundo de NoSQL, en mi opinión, esta era un área desatendida.
Como nueva área, hay mucha experimentación con NoSQL. Algunos están experimentando con una mezcla de online y analítica, otros están experimentando con una consistencia más laxa o eventual, otros están añadiendo más primitivas de estructura de datos en almacenes K/V y otros están mirando los datos de una manera más orientada a documentos.
Conocíamos algunos de ellos e incluso experimentamos con ellos, pero acabamos tomando un camino diferente con membase, ya que intentábamos resolver algunos problemas muy específicos junto con nuestros socios. Se habían creado aplicaciones en torno a memcached. Algunas de esas aplicaciones necesitaban SQL; para eso, ya tenían Drizzle, MySQL o PostgreSQLo Cubrid (Cubrid es importante en NHN). Otra parte de las mismas aplicaciones realmente no necesitaba SQL, pero sí la replicación, persistencia y gestión de datos que proporcionaban la mayoría de los sistemas de gestión de bases de datos relacionales (RDBMS) basados en SQL, aunque con más complejidad y gestión de la deseada.
Entra membase. Podríamos tomar la infraestructura existente en torno a la cual se habían construido las aplicaciones (protocolo y clientes memcached) y añadir el nivel necesario de durabilidad, añadir reglas para permitir a los administradores y desarrolladores controlar cómo se produce esa durabilidad por elemento, y ser inteligentes sobre cómo se ejecutaría de forma distribuida.
¿Cómo se llega a la meta?
Necesitábamos inyectar un poco de inteligencia en el sistema. Lo bueno de memcached es que la inteligencia está, en su mayor parte, en el cliente, así que el servidor puede ser rápido y tonto. No queríamos alejarnos demasiado de eso, pero si esperas que el sistema sea no volátil, tenga replicación y pueda crecer y decrecer mientras está en línea, necesitas que el sistema tenga algún concepto de dónde viven las cosas. Eso llevó a vbuckets, que El excelente blog de Dustin cubre.
Con una forma de saber dónde viven las cosas, todavía necesitamos durabilidad y replicación junto con esos cubos. Ahí es donde entra el motor de membase. Al motor de membase se le puede decir que replique un conjunto de datos desde un nodo alternativo. También se le puede decir, a través de un mapa de configuración, quién es la autoridad para un determinado bucket.
Sin embargo, los clientes no conocen vbuckets. Conocen modulus o consistent hashing para conectarse a los servidores, así que necesitábamos algo compatible. Ya teníamos moxi, que proporcionaría a los clientes muy sencillos inteligencia en torno a la deduplicación de operaciones, compartición inteligente de conexiones, qué hacer en caso de fallos e incluso algo de caché no coherente para acelerar aún más las cosas. No haría falta mucho más para enseñar a moxi y a su motor de configuración subyacente, libconflate, a saber qué hacer con el mismo mapa vbucket. Esto permitiría a los clientes existentes, e incluso a las aplicaciones existentes, obtener la base de datos clave/valor rápida y distribuida que necesitan, así que eso es lo que hicimos.
Conclusión
En esencia, membase es el motor de membase que implementa persistencia, replicación y vbuckets para crecer y decrecer dinámicamente. Para llevar los vbuckets a los clientes que no tienen esa pequeña inteligencia extra, existe moxi. Para migrar datos entre nodos sin interrumpir el servicio, existe vbucketmigrator. Permanece atento a membase.org para conocer más detalles.
[...] la empresa creadora de CouchDB, y Membase, la empresa madre de Membase Server y Memcached, se han fusionado para crear una nueva iniciativa [...].