Tux venezolano

Microsoft® SQL Server ® en Linux GNU

Introducción.

El 28 de diciembre de 2016 -día de los santos inocentes, fecha para nosotros los hispanohablantes de realizar bromas de toda índole- fue anunciado la adquisición de una membrecía tipo «Platinum»1 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 tomamos la noticia muy en serio. Y si para nosotros nos quedaba alguna duda el Blog del equipo de Evangelismo 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 (intentamos contactar al autor del artículo en castellano vía Twitter para que nos autorizara el uso de las imágenes pero no obtuvimos respuesta; este será una artículo con el mínimo de imágenes).

.

Tux venezolano
Tux venezolano

Nosotros, que somos usuarios de ordenadores desde 1989 con el famoso MS-DOS® (cuando aún ni siquiera el señor Linus Torvalds2 había comenzado su carrera universitaria) aún estamos frotándonos los ojos, no lo 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 Ballmer3 quien dejó el cargo en 2014 y cuyo sucesor el señor Satya Nadella4 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) y fue con lo que poderosa Casa de Software inició formalmente su camino hacia el mundo GNU/Linux. A la fecha de hoy ya se están desarrollando en “Microsoft Azure®” la inteligencia artificial que ha devenido en llamarse aprendizaje de máquina o “machine learning”5 en inglés.

Esta pequeña introducción, simplificada de forma exagerada, nos da pie para traer a colación nuestro artículo de hoy: Microsoft® SQL Server ® en Linux.

Microsoft® SQL Server ® en Microsoft Windows®.

Vale, no los hemos engañado, sí vamos a hablar de GNU/Linux pero primero debemos conocer el contexto de esa popular motor de base de datos. Y sí, si le hemos engañado un tantito así en el subtitulo que encabeza este párrafo: Microsoft® SQL Server ® nace en 1989 para ser ejecutado en… IBM OS/2, así como lo están leyendo6. 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 funcionaba dBase como interfaz al 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 web9) y pronto veremos que 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.

En el mundo de los servidores web definitivamente reina desde hace muchos años las diversas distribuciones GNU/Linux y por la rama Debian está el Ubuntu Server el cual es utilizado por muchísimas empresas, tanto grandes, medianas y pequeñas y todos se han dado cuenta de su increíble estabilidad y eficiencia 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 poco7 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 virtualización de aplicaciones en un entorno seguro (en inglés llamado “sandbox”).

Se necesitaba entonces “aislar” al Microsoft® SQL Server ® y cuyos programadores codificaban de manera despreocupada ya que trabajan 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 (de nuevo, la explicación oficial está en este enlace web10):

  1. Calidad y seguridad deben de estar al mismo nivel que establecieron por cerca de 30 años a Microsoft® SQL Server ® en Microsoft Windows®.

  2. Proveer el mismo valor en términos de funcionalidad, desempeño y escala.

  3. Compatibilidad de aplicaciones entre Microsoft® SQL Server ® tanto en Microsoft Windows® como en Linux.

  4. Habilitar una ruta de innovación en el código fuente base de Microsoft® SQL Server ® y asegurarse que las nuevas características y correcciones aparezcan inmediatamente a través de todas las plataformas.

  5. 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 comodidad!

Por favor, lea también   WOL (wakeonlan) Ubuntu

Fue así como crearon “SQL Platform Abstraction Layer” ( SQL PAL) que se encarga de fusionar los conceptos de “SQLOS layer” y Drawbridge® y 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 (y 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 una vez 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 (es más rápido y podremos luego devolver lo que descargamos a más personas que también lo necesiten) y tras instalarlo y colocarle sus debidas actualizaciones de seguridad (¡que por que sea un servidor de prueba no nos exime de perder las buenas costumbres de trabajo!) decidimos instalar en esta máquina “limpia” a Microsoft® SQL Server ® y grabamos un video de 23 minutos que pueden buscar en la página web de Youtube con el siguiente código: XDd1gblgi4c .

Esencialmente las instrucciones son 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 instrucciones11 se indica el utilizar el parámetro “-y” para aceptar de manera inmediata la licencia de uso. Recomendamos instalar sin dicha opción para que tengamos siempre muy presente y en cuenta que estamos utilizando 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):

 

Microsoft SQL Server mssql-conf setup
Microsoft SQL Server® mssql-conf setup

Instalación SQL Server ® command-line tools.

Una vez tengamos instalado nuestro SQL Server ® sería cuestión de configurar el muro de fuego “firewall” y establecer las políticas de acceso al ordenador tendremos ya listo y configurado 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 esperarse 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 y todo funcionó de maravillas. Pero no pensemos que vamos a tirar en el olvido esta herramienta, vamos a ver cual otro uso le podemos dar.

Monitorización de SQL Server ®.

Como herramienta de monitorización el equipo de desarrollo SQLCAT12 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 de código fuente abierta está escrito en lenguaje C y es un demonio o servicio que instalaremos y ejecutaremos en el servidor que está alojado el Microsoft® SQL Server ®. Se precia de ser muy popular en los enrutadores que utilizan OpenWrt, el cual es una distribución Linux especialmente diseñada para estos artefactos ya que además tiene más de 100 complementos o plugins que facilitan la tarea de configurar las 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 RDDtool14 o bien puede ser recolectado por medio de un complemento o plugin especialmente diseñado para Nagios15. Pero lo que hallamos sumamente útil es el complemento o plugin16 diseñado para ofrecer datos en forma de SNMP, lo cual no nos debería sorprender ya que comentamos anteriormente que está presente en OpenWrt y lo veríamos -su monitorización- como un enrutador cualquiera. Actualmente PandoraFMS 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 GiHub17, 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 e dicho proyecto.

“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 y 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 bien se aseguró Microsoft® es de hacer un buen estanco con su aplicación SQL Server ®: nada del código se podrá fugar hacia Linux y evita comprometer la confiabilidad de Linux sin contar además de que tienen el código base siempre listo para ser mejorado ante la llegada de nuevo hardware o abracar otros sistemas operativos existentes o venideros ¡las opciones y oportunidades siempre es mejor que sobren y no que falten!


Todas las marcas aquí nombradas están acompañadas del símbolo “®” y pertenecen a Microsoft® Corporation y cumplen con el uso adecuado de dichas marcas comerciales, todo según se especifica en el siguiente enlace web publicado de manera ex professo por Microsot® Corporation:

https://www.microsoft.com/trademarks



Todas las imágenes aquí utilizadas fueron capturadas y/o modificadas bajo nuestra autoría y están bajo licencia Creative Commons Attribution-Share Alike 4.0 International


Apéndice:

Como todo buen apéndice, éste puede ser extirpado sin ningún tipo de problema?.

Indice de figuras e imágenes y la acreditación de autoría:

  1. Tux Linux
  2. Licencia de uso de Microsoft® SQL Server ® .

Fuentes consultadas:

  1. “Connect (); 2016” por Daniel Mitchell, Technical Evangelist Intern, Twitter @danymitb.
  2. “Diez cosas que no sabías de Linux GNU” en Pandora FMS blog.
  3. “Steve Ballmer” en Wikipedia.
  4. “Satya Nadella” at Wikipedia.
  5. “Microsoft Azure Machine Learning para principiantes” en blog de Microsoft®.
  6. “The Evolution of SQL Server ®” en Informit.
  7. “How Microsoft brought SQL Server ® to Linux” en Techcrunch.
  8. “Drawbridge” en blog de Microsoft®.
  9. “Platform layer for SQL Server ®” en blog de Microsoft®.
  10. “SQL Server ® on Linux: How? Introduction” en blog de Microsoft®.
  11. “Install SQL Server ® and create a database on Ubuntu” en blog de Microsoft®.
  12. “How the SQLCAT Customer Lab is Monitoring SQL on Linux” en blog de Microsoft®.
  13. “collectd.org”.
  14. “RRDtool Gallery”.
  15. “10 razones por las que no deberías instalar Nagios en tu empresa” en PandoraFMS blog.
  16. “RDDtool SNMP plugin”.
  17. “mssql-monitoring” en GitHub.
  18. “InfluxDB”.
  19. “Grafana”.