Hekaton en SQL Server vNext

Primero, que significa hekaton, hekaton es una palabra griega (ἑκατόμ) que significa cien.

Para Microsoft Hekaton es el codename de una nueva característica que se introducirá en la siguiente versión de SQL Server, Hekaton es un motor relacional en memoria (https://en.wikipedia.org/wiki/In-memory_database) siguiendo la filosofía de SAP HANA (https://en.wikipedia.org/wiki/SAP_HANA)  o Oracle TimesTen (https://en.wikipedia.org/wiki/TimesTen) pero con una gran diferencia, mientras que HANA o TimesTen son productos separados de la base de datos relacional Hekaton se va a integrar dentro de SQL Server.

Hekaton empieza como un proyecto de colaboración entre Microsoft Research y el grupo de SQL Server  en 2009, la principal causa de este proyecto es que en los modelos tradicionales la base es que los datos están en disco y son almacenadas como paginas en disco, esto crea un overhead grande a la hora de acceder a registros, si los registros están siempre en memoria el acceso a los datos se simplifica lo que hace que tengamos estructuras de datos mas simples optimizadas para memoria.

Siendo optimistas.

El primer paso fue moverse de una aproximación particionada (que lo que hace es asimilar a un sistema multiprocesador a un sistema distribuido) hacia un diseño sin bloqueos lo que incrementa la escalabilidad.

Los bloqueos son sistemas de sincronización para evitar corrupción en sistemas concurrentes, desgraciadamente esto crea cuellos de botella en sistema multiprocesador y limita el uso de cpu.

Hekaton utiliza un sistema sin bloqueos (optimista), nunca se bloquea datos de las estructuras, el reto de este sistema es proporcionar el beneficio de un sistema sin bloqueos y evitar corrupción, es donde entra el control de visiones (MVCC – multiversion concurrency control).

MVCC, ha demostrado en las pruebas que es ideal para un sistema con alta carga y alta contención, en un sistema de concurrencia de una sola versión los datos son sobrescritos en cada cambio, MVCC maneja los cambios marcando los datos antiguos como obsoletos y añadiendo una nueva versión, en cualquier momento hay diferentes versiones de los datos, pero solo una es la última. El gran beneficio es que las actualizaciones añaden nuevas versiones sin interferir en las lecturas concurrentes.

Hekaton implementa una nueva forma de motor transaccional MVCC, en el siguiente enlace se puede ver mas información sobre este motor (High-Performance Concurrency Control Mechanisms for Main-Memory Databases)

Un nuevo árbol binario (B-Tree)

Además del control concurrente de versiones hay otros cambios, como un nuevo árbol binario para almacenar los datos, este nuevo árbol binario se llama Bw-Tree, aprovechando la filosofía optimista sin bloqueos de Hekaton se ha optimizado la estructura para ofrecer un mejor rendimiento a nivel de cache del procesador. Podeis leer mas sobre este nuevo árbol binario aquí: https://research.microsoft.com/apps/pubs/default.aspx?id=178758

Tradicionalmente cuando se implementa un mecanismo sin bloqueos la primera opción es una “skiplist” (https://en.wikipedia.org/wiki/Skiplist)  ya que se percibe más ligero que un árbol binario(B-Tree) el Bw-Tree demuestra que esto es falso y se puede tener una implementación de un árbol binario de mayor rendimiento que una skiplist.

bwin – Una apuesta segura

Una de las mayores empresas de apuestas online (BWIN) colabora a la hora de probar Hekaton en entornos reales, BWIN tenia un problema de rendimiento en su web (15.000 peticiones/segundo) y no escalaba más, después de implementar Hekaton en parte del sistema el problema se solucionó llegando las pruebas de carga hasta 250.000 peticiones/segundo. Podéis comprobar la experiencia en el siguiente video:

bwin y Hekaton

 

Colaboración

El proyecto de Hekaton nace gracias a la colaboración entre Microsoft Research y el grupo de SQL Server, según sepamos mas de esta tecnología os iremos actualizando.

Hekaton aumentando el rendimiento cien veces.

Mas información:

https://research.microsoft.com/en-us/news/features/hekaton-122012.aspx

https://blogs.technet.com/b/dataplatforminsider/archive/2012/12/11/how-fast-is-project-codenamed-hekaton-it-s-wicked-fast.aspx

 

Pablo Gavela López – Ingeniero de Soporte de SQL Server