SQL Server ® de Microsoft® ha llegado a Linux GNU para quedarse

El 28 de diciembre de 2016 -día de los santos inocentes, fecha en la que nosotros los hispanohablantes nos dedicamos a realizar bromas de toda índole- fue anunciada la adquisición de una membresía tipo «Platinum» por parte de la empresa Microsoft® en la Fundación Linux y el lanzamiento de Microsoft® SQL Server ® . Dado que sabemos que para los angloparlantes el 1° de abril es el día de realizar, por costumbre, chascarrillos, pues no tomamos la noticia muy en serio. Y si para nosotros quedaba alguna duda, el Blog del equipo técnico de Microsoft® España lo publicó oficialmente en idioma castellano, incluyendo una divertida figura la cual muestra un letrero con la leyenda “Microsoft Linux” (sic) y un pingüino de pie al lado apuntando con el pico .

Nosotros, que somos usuarios de ordenadores desde 1989 con el famoso MS-DOS® (cuando aún ni siquiera el señor Linus Torvalds había comenzado su carrera universitaria) aún estamos frotándonos los ojos; no podemos creer que Microsoft® SQL Server ® corra bajo Linux. Pero a todas estas es una realidad insoslayable y lejanos quedaron los días de antagonismo con el anterior Director Ejecutivo General, Steve Ballmer, quien dejó el cargo en 2014 y cuyo sucesor, el señor Satya Nadella, llevó a la empresa a desarrollar una de las más grandes infraestructuras de computación en la red, “cloud computing”, con el producto “Microsoft Azure®” (anteriormente conocido como “Windows Azure®”).

Este producto, “Windows Azure®”, destaca porque su kit de desarrollo de software –“Software Development Kit” o “SDK”– está publicado en código fuente abierto (que es diferente a la licencia de software libre que rige a Linux). A día de hoy, ya se está desarrollando en “Microsoft Azure®” la inteligencia artificial, que ha devenido en llamarse aprendizaje de máquina o “machine learning” en inglés.
Esta pequeña introducción simplificada, da pie al nuestro artículo de hoy: Microsoft® SQL Server ® en Linux GNU.

Microsoft® SQL Server ® en Microsoft Windows®

Vale, no les hemos engañado, sí vamos a hablar de GNU/Linux, pero primero debemos conocer el contexto de ese popular motor de base de datos. Microsoft® SQL Server ® nace en 1989 para ser ejecutado en… IBM OS/2, así como lo están leyendo. Para esa época quien reinaba en el campo comercial era la empresa “Ashton-Tate” con su producto estrella dBase que ocasionaba el tránsito de grandes volúmenes de datos en la red de área local debido a que cada cliente se llevaba una copia de la base de datos a cada ordenador donde se ejecutaba. Por ello, Microsoft compró la licencia de SQL Server ® a Sybase, que funcionaba con el modelo cliente/servidor a través de comandos sencillos y que devolvían limitadas cantidades de datos; casi todo el trabajo se realiza aparte y remoto en el servidor. Ashton-Tate aportó su mercado de clientes y dBase funcionaba como interfaz para el usuario, mientras que Microsoft y Sybase se encargaron del trabajo en el lado del servidor.

Pasado el tiempo (1994) llegó la versión 6 de SQL Server ®, que también se ejecutaba bajo el reciente Windows NT® y dicha versión ya no contaba con la mano de obra de Sybase. A partir de la versión 7.0 fue reescrito masivamente en lenguaje C++ y a partir del año 2000, ya cuando tenía tiempo de haberse descontinuado el OS/2, el SQL Server ® se quedó solamente para el sistema operativo Windows NT®. Luego, en el año 2001, su sucesor Windows XP® hereda la tecnología Windows NT® -valga redundancia ya que “NT” significa “New Technology”- y pudo llegar a los usuarios comunes y sus pequeñas y medianas empresas: ya no era de uso exclusivo para las grandes corporaciones el manejo eficiente de los datos relacionales.

Para el año 2005 se presentó una disyuntiva: la irrupción en firme de los procesadores de 64 bits y varios núcleos, así como gran cantidad de memoria RAM, para los cuales Microsoft® SQL Server ® no estaba preparado para aprovechar al máximo este potencial. En reacción a ello se decide realizar una capa de plataforma (“platform layer”) para contener “SQLOS layer”. Un SQLOS es “un sistema operativo de alto nivel de usuario altamente configurable con una poderosa interfaz de programación de aplicaciones”. (La explicación oficial y detallada la pueden leer en este enlace web). Pronto veremos cómo fue una muy buena elección, ya que separa completamente lo que es la programación en sí de lo que son las cargas de trabajo e hilos de ejecución en un ordenador que tenga instalado Microsoft® SQL Server ®.

Microsoft® SQL Server ® en Linux GNU

En el mundo de los servidores web, las reinas desde hace muchos años han sido las diversas distribuciones GNU/Linux; además Debian cuenta con el Ubuntu Server, utilizado por muchísimas empresas de diversos tamaños, para publicar sus sitios en Internet. Pero para las bases de datos hay bastantes programadores que han escogido a Microsoft® SQL Server ® y, debido a esto, las compañías deben adquirir un sistema operativo Microsoft Windows® creando un trabajo adicional en la administración de la red de área local debido a un ambiente mixto.

Esta inquietud fue surgiendo poco a poco entre los clientes de Microsoft® y así se lo hicieron saber a la empresa radicada en Redmond (estado de Washington, EE.UU.), lo que los puso en un buen aprieto ya que no sabían cómo portar las decenas de millones de líneas de código acumuladas durante todos estos años al ambiente del sistema operativo del pingüino. La respuesta a esta problemática fue encontrada en un proyecto que databa de 2011 llamado Drawbridge®8, el cual fue ideado inicialmente para la virtualización de aplicaciones en un entorno seguro (en inglés llamado “sandbox”).

Se necesitaba entonces “aislar” a Microsoft® SQL Server ®. Los programadores codificaban de manera despreocupada ya que trabajaban en un entorno bien conocido y que se encargaba de lidiar con el diverso hardware existente. Una vez fueron bien entendidos y adaptados los procesos de Drawbridge, se establecieron los siguientes parámetros:

  • Calidad y seguridad deben de estar al mismo nivel establecido en Microsoft® SQL Server ® y en Microsoft Windows®.
  • Proveer el mismo valor en términos de funcionalidad, desempeño y escala.
  • Compatibilidad de aplicaciones entre Microsoft® SQL Server ®, tanto en Microsoft Windows® como en Linux.
  • Habilitar una ruta de innovación en el código fuente base de Microsoft® SQL Server®, asegurarse que las nuevas características y correcciones aparezcan inmediatamente a través de todas las plataformas.
  • Para los futuros Servicios Integrados habilitar una fundación para Linux.

Para hacer que Microsoft® SQL Server ® apoye diversas plataformas, el trabajo de ingeniería esencialmente es remover o abstraerse de las dependencias de Microsoft Windows®. ¡Como vemos no la tenían fácil los desarrolladores, estaban siendo empujados fuera de su zona de confort!

Fue así como crearon “SQL Platform Abstraction Layer” ( SQL PAL) que se encarga de fusionar los conceptos de “SQLOS layer” y Drawbridge®. De ahora en adelante, el equipo de desarrollo puede trabajar con un único código base y no tiene que preocuparse acerca de en dónde se ejecutará el código (esto incluye la nueva plataforma Microsoft Azure® de la que hablamos al principio). Como vemos, hasta ahora, todo ha llegado a buen término y los proyectos y recursos del gigante informático, que parecían desperdigados, ahora forman parte de un todo.

Instalación de Microsoft® SQL Server ®

Como decía Santo Tomás de Aquino: “hasta no ver, no creer”. Es por ello que tomamos una máquina virtual con 4 gigabytes de memoria RAM (el requerimiento mínimo es de 3,25 gigabytes). Descargamos Ubuntu Server 16.04 por medio de tecnología Torrent y, tras instalarlo y colocarle sus debidas actualizaciones de seguridad (¡porque sea un servidor de prueba no nos exime de perder las buenas costumbres de trabajo!), decidimos instalar en esta máquina “limpia” Microsoft® SQL Server ®. (Jimmy Olano, escritor de este artículo ha realizado una grabación de 23 minutos con el proceso de instalación completo, puedes verlo haciendo clic en este link de Youtube).

Esencialmente, las instrucciones consisten en importar las llaves de seguridad habilitadas por Microsoft® en su sitio web, con las cuales podremos -y debemos- certificar que el contenido descargado desde esa empresa no haya sido alterado. Después agregaremos el enlace de la ubicación del repositorio en nuestro archivo dedicado a tal efecto, actualizamos el listado de componentes y damos la orden de descargar e instalar los paquetes. De hecho, en el blog de Microsoft® donde están publicadas las instrucciones se indica el uso del parámetro “-y” para aceptar de manera inmediata la licencia de uso. Recomendamos instalar sin dicha opción, para que tengamos siempre presente que estamos utilizando un software privativo y que debemos ceñirnos a la licencia que muestra en la siguiente figura de nuestra autoría (Creative Commons Attribution-Share Alike 4.0 International):

sql server

Instalación SQL Server ® command-line tool

Una vez tengamos instalado nuestro SQL Server ® debemos configurar el “firewall” y establecer las políticas de acceso al ordenador que tendremos ya listo para comenzar a recibir datos de lleno por medio de otras computadoras. Pero si queremos trabajar directamente en la consola de nuestra máquina debemos instalar las herramientas de líneas de comandos “command-line tools” con la orden «sudo apt-get install mssql-tools unixodbc-dev» que, como era de esperar, también contiene unas preguntas para la aceptación -o negación- de aceptar las condiciones de uso.

En nuestro caso, en el vídeo que les comentamos, aparte de instalar las “command-line tools” tuvimos la oportunidad de crear una base de datos, crear una tabla, introducir unos pocos valores y hacer una simple consulta condicional. Pero no creas que vamos a olvidarnos de esta herramienta. Vamos a ver más usos posibles.

Monitorización de SQL Server ®

Como herramienta de monitorización, el equipo de desarrollo SQLCAT de Microsoft® llegó a la conclusión de que se necesitan tres herramientas para monitorizar:

  • collectd.
  • InfluxDB.
  • Grafana.

Nos centraremos en collectd y muy brevemente hablaremos de InfluxDB y Grafana.

“collectd”13

Este software con código de fuente abierto está escrito en lenguaje C y es un daemon o servicio que instalaremos y ejecutaremos en el servidor en el que está alojado Microsoft® SQL Server ®. Es muy popular en los enrutadores que utilizan OpenWrt, el cual es una conocida distribución de Linux especialmente diseñada para estos artefactos, que además cuenta con más de 100 plugins que facilitan la tarea de configuración de aplicaciones más populares en Linux como Apache y MySQL (al momento de escribir estas líneas revisamos dicha lista y no hallamos uno específico para Microsoft® SQL Server ®, dado lo novedoso de la irrupción de este software en el mundo GNU).

Para entregar los datos “collectd” bien puede escribirlos en formato de archivo RDD (“RDDfile”) para que luego sean graficados con RDDtool o bien puede ser recolectado por medio de un complemento o plugin.

Actualmente Pandora FMS no tiene un plugin para collectd, pero no tiene problema alguno en conectarse por medio de SNMP.

Para instalar collectd deberemos tener instalado Git y además Docker Engine para luego crear una cuenta en Microsoft® SQL Server ® usando las siguientes instrucciones:

USE master;

GO
CREATE LOGIN [collectd] WITH PASSWORD = N'mystrongpassword';
GO
GRANT VIEW SERVER STATE TO [collectd];
GO
GRANT VIEW ANY DEFINITION TO [collectd];
GO

Esto último es de vital importancia para que collectd tenga el debido acceso a nuestro servidor de base de datos. Microsoft® invita a clonar su repositorio en GiHub, donde tiene instrucciones muy detalladas de lo anterior e incluso nosotros podremos aportar cualquier observación, corrección o colaborar con una mejora si solicitamos un pull request.

“InfluxDB”18

Se encarga de comunicarse con collectd para entonces guardar y organizar los datos recabados.

“Grafana”19

Un software que produce impresionantes gráficos y dibujos que representan los datos colectados por InfluxDB. Se recomienda encarecidamente que tanto InfluxDB como Grafana sean instalados en otro ordenador aparte del que ejecuta Microsoft® SQL Server ® o incluso cada uno en su propia máquina si el volumen de equipos que vamos a monitorizar es lo suficientemente grande.

Conclusiones

De lo que se aseguró Microsoft® fue de hacer un buen estanco con su aplicación SQL Server ®: el código no podrá fugarse hacia Linux y evita comprometer su confiabilidad. Además cuenta con un código base listo para ser mejorado ante la llegada de nuevo hardware o para abarcar otros sistemas operativos.

Todas las marcas aquí nombradas están acompañadas del símbolo “®” y pertenecen a Microsoft® Corporation.

Shares