Arquitectura

Cómo está construido TeselaDB: nodos iguales, rangos replicados y un hilo por núcleo.

Esta página cuenta lo que pasa por dentro. No necesitas saberlo para usar TeselaDB, pero ayuda a entender sus garantías y a operarlo. Hay una versión con diagramas en Arquitectura.

Las piezas

PiezaQué hace
NodoUn proceso por máquina. Todos ejecutan el mismo binario y cualquiera recibe peticiones de los drivers.
NúcleoCada nodo tiene un hilo por núcleo de CPU, dueño de sus rangos, su log y su almacenamiento.
RangoUn intervalo de claves de una colección, con su propio grupo Raft.
RéplicaUna copia de un rango en un nodo. Una de ellas es la líder.
Group 0El grupo Raft de metadatos: nodos, catálogo, descriptores de rango y configuración.

El camino de una petición

  1. Tu driver manda la petición a cualquier nodo.
  2. El router de ese nodo busca qué rango guarda cada documento y quién es su líder.
  3. El líder evalúa la operación y la propone en el log de Raft del rango.
  4. Cuando la mayoría de las réplicas la tienen en disco, se aplica y el nodo responde.

Almacenamiento

Cada núcleo tiene un LSM con memtable, ficheros SST y compactación, y guarda varias versiones de cada documento (MVCC). El log de Raft del núcleo hace también de log de escritura del LSM, así que cada escritura llega al disco una sola vez.

Repartirse sola

Un rango se divide al superar 64 MiB de datos vivos o cuando recibe más operaciones de las que admite su umbral. El equilibrador reparte réplicas por número, carga y espacio libre, y líderes entre nodos. Dos rangos vecinos pequeños y fríos se fusionan.

Sigue con Rangos y réplicas.