Hekaton también conocido como SQL Server en memoria, es un componente del motor de base de datos que se ha optimizado para el acceso a las tablas residente en memoria.
Este componente está completamente integrado en SQL Server 2014 Motor de base de relación, no es un producto de base de datos independiente. Facilita la creación de tablas residente en memoria (es decir, Tablas de memoria optimizada) e índices. También ofrece la opción de compilar el procedimiento almacenado Transact-SQL para acceder a la memoria Tablas optimizados a código máquina. Estos procedimientos almacenados de forma nativa compilados que hacen referencia a las Tablas de memoria optimizado proporcionan un mejor rendimiento en comparación con la instrucción Transact-SQL o almacenado de memoria para acceder Procedimiento Tablas optimizados.
La arquitectura tradicional RDBMS fue diseñado cuando los recursos de memoria eran caros, y se optimizó para la E/S. En promedio se mejora el rendimiento de las aplicaciones OLTP de 10 veces sin tener que volver a escribir toda la aplicación, es decir, sólo mediante la migración de tablas basadas en disco utilizado con frecuencia por la aplicación OLTP de memoria optimizado tabla.
El anuncio de Hekaton en PASS conferencia de 2012 (Asociación Profesional de SQL Server ) fue muy bien recibido por los analistas del sector. Este SQL Server en memoria capacidad de OLTP se estrenará en versión SQL 2014. El almacenamiento de datos en memoria la tecnología también está disponible en la tecnología de almacenamiento de columnas.
De acuerdo con la tendencia actual de los precios de la memoria principal son menos costosos y las empresas pueden darse el lujo de tener los servidores de bases de datos de producción con tamaños de memoria principal en TB. Y este descenso de los precios en la memoria hace pensar en el motor de base de datos inicial que se diseñó en los días en que la memoria principal era costosa. Y el resultado de este replanteamiento es el OLTP In-Memory (aka Hekaton) componente del motor de base de datos que soporta tablas residentes en memoria e índice. En la memoria del motor OLTP utiliza el algoritmo libre de bloqueo, es decir, multiversión Optimista Control de concurrencia, que no requiere ningún tipo de bloqueo cuando las tablas optimizadas en memoria hacen referencia durante el procesamiento de transacciones. Y para apoyar la durabilidad de datos todavía se escribe en el registro de transacciones, pero la cantidad de datos que se escribe en el registro se reduce considerablemente.
Las principales novedades de SQL Server 2014 son las siguientes:
Bases de datos en memoria, o como se le conoce por su nombre clave Hekaton.
¿Qué es esto? Microsoft ha unido los esfuerzos de la división de investigación (Microsoft Research) con los del equipo de producto SQL Server. El propósito de esta nueva vía de desarrollo en SQL Server fue proporcionar un sistema sin bloqueos, que son el principal motivo de cuellos de botella en sistemas multiprocesador, limitando la utilización de las capacidades de CPU. Hekaton es capaz de mantener los datos íntegros, sin corrupción, sin realizar bloqueos en las estructuras (filas, páginas, tablas). El resultado es un motor relacional en memoria que ofrece un rendimiento hasta 100 veces superior al motor tradicional. Además, y al contrario que otros fabricantes (SAP, Oracle) que ya cuentan con sistemas similares, Hekaton se ofrece como una característica integrada del motor de bases de datos.
xVelocity ColumnStore, o almacenamiento por columnas con tecnología xVelocity. Provee de una compresión espectacular a nivel de columnas y en la versión anterior, SQL Server 2012, ya se incluía en el motor relacional para los índices columnares. En SQL Server 2014 también se utiliza para el almacenamiento por columnas. Una de las mayores ventajas con respecto a la versión anterior es que los índices permiten lectura y escritura. Es un gran avance para las cargas y consultas sobre los data marts/warehouses.
Características principales de In-Memory OLTP (aka Hekaton)
Tablas de memoria optimizada.
• Los datos de las tablas que se declaran como “optimización en memoria” residirán en la memoria principal.
• El acceso a la tabla de datos optimizados de la memoria no requiere que se carguen desde el disco a la memoria como la tabla completa e Índices de datos, ya que está presente en la memoria.
• OLTP no utiliza las páginas de datos y extensiones para el almacenamiento de memoria optimizada de datos de tabla. En su lugar utiliza una estructura especial de fila. Cada fila tendrá una misma de cabecera, que contiene la fila de comenzar y terminar el tiempo. Este Begin se usa el tiempo final para determinar la validéz de la fila. Aparte de esto cada fila tendrá Índice, punteros y el recuento del número de índices que hacen referencia a ella.
• No son compatibles las “Foreign Key”, ni los tipos de datos LOB.
• No es compatible con Identidad y columnas calculadas.
Índices en memoria.
• Existe el índice de la tabla de memoria optimizado sólo en la memoria principal y nunca se almacenan en el disco. El índice se actualiza sólo en la memoria y no se registrará en el registro de transacciones.
• Cuando se reinicia el sistema se vuelven a crear los datos de table que se transmiten en la memoria.
• El índice hash y el de rango son los tipos de índices que soportan las tablas de memoria optimizada.
• Y cada tabla de memoria necesita tener por lo menos un clúster no indice. Como índice es aquella con la que los datos de la tabla completa está vinculado.
• Puede tener un máximo de 8 Índices.
Alta Concurrencia
• OLTP utiliza multiversión de control de concurrencia optimista, que no requiere ningún tipo de bloqueo y los cierres cuando las tablas de optimización en memoria están referenciadas durante el procesamiento de transacciones.
• OLTP mantiene las múltiples versiones de la fila. Cada fila tendrá una fila de cabecera, que contiene la fila de “Begin” y “End”. La sentencia Begin se utiliza al principio para determinar la validez de la fila.
• Por ejemplo cualquier solicitud de la fila de datos, el motor de OLTP en memoria da la versión de la fila que está al día en el momento que se solicite. Consideremos un escenario en el que dos transacciones reciben la misma versión del registro y tartan de actualizarlo con diferentes valores. En tal escenario, el conflicto de escritura-escritura de la transacción que está actualizando última fracasará ya que el registro que se está manipulando no es una versión actual de la grabación mientras que confirma la transacción.
Durabilidad de datos.
• OLTP proporciona una opción para crear una tabla en la memoria optimizada que pueden tener datos duraderos. Si las tablas se crean con esta opción, los datos no se perderán aunque el Sistema se reinicie ó apague.
• La durabilidad de los datos se consigue mediante los ficheros “Data” y “Delta” en el grupo de archivos en la memoria optimizada y por escrito al registro de transacciones, pero la cantidad de datos que se escribe en el registro se reduce considerablemente. Aquí el fichero “Data” será de 128 MB de tamaño tendrá las filas insertadas, mientras que el fichero “Delta” tendrá los identificadores de las filas eliminadas.
Optimizado registro de transacciones.
• No habrá ningún registro de transacciones para las tablas de memoria optimizada que se crean sin la opción de datos durabilidad.
• Y para las tablas de memoria optimizada que se crean con la opción datos durabilidad, escribirá con el mismo registro de transacciones que es utilizado por las tablas basadas en disco.
• Pero la cantidad de datos que se escribe en el registro se reduce considerablemente. Es debido a que:
1) existe índice de la tabla de memoria optimizado sólo en la memoria principal y nunca se almacenan en el disco. Los índices se actualizan sólo en la memoria y no se escribirán en el registro de transacciones.
2) Sólo los datos entregados se escriben en el registro de transacciones y los datos que se deshacen no se registran.
Copia de seguridad y restauración.
• Los servidores de bases de datos SQL tienen una opción de copia de seguridad para mantener los grupos de archivos en memoria.
• Copia de seguridad del registro de transacciones incluye memoria optimizada registros de tabla.
• Copia de seguridad diferencial no es compatible.
• Ninguna agrupación de almacenamiento intermedio.
• En el motor de memoria OLTP, no utiliza la agrupación de almacenamiento intermedio, porque las tablas de memoria optimizadas y los datos de índices ya están en la memoria.
Servidor de Integración SQL.
En el componente de memoria OLTP de la base de datos está plenamente integrada en SQL Server 2014 con relación al motor de la base de datos, no es un producto de base de datos independiente. Las mismas SSMS que se utilizan en las Tablas/índices basadas en disco, se utilizan para la mejora de memoria en las tablas e índices. De esa manera, proporciona el mismo desarrollo, gestión y experiencia de administración.
Recolección de Basura.
Las funciones “Update” y “Delete” en la tabla de memoria, crea múltiples versiones de las filas. Y las filas que se vuelven pasado serán innecesarias para el consumo de la memoria principal. Para este motor In-Memory OLTP tiene un sistema de recolección de basura, que analiza periódicamente y elimina esas filas pasadas.
Referencias:
http://sqlhints.com/2013/12/28/introduction-to-in-memory-oltp-a-k-a-hekaton-sql-server-2014/
http://blogs.technet.com/b/dataplatforminsider/archive/2013/06/26/getting-started-with-sql-server-2014-in-memory-oltp.aspx
http://bifase.blogspot.mx/2013/06/sql-server-2014-disponible-en-ctp1.html