viernes, 18 de octubre de 2019

Sistema de gestión de bases de datos relacionales o RDBMS



Un sistema de gestión de bases de datos relacionales (RDBMS) es una colección de programas y capacidades que permiten a los equipos de TI y a otros crear, actualizar, administrar e interactuar con una base de datos relacional. La mayoría de los RDBMS comerciales utilizan Structured Query Language (SQL) para acceder a la base de datos, aunque SQL fue inventado después del desarrollo inicial del modelo relacional y no es necesario para su uso.

RDBMS vs. DBMS

En general, las bases de datos almacenan conjuntos de datos que pueden consultarse para su uso en otras aplicaciones. Un sistema de gestión de bases de datos admite el desarrollo, la administración y el uso de plataformas de bases de datos.

Un RDBMS es un tipo de DBMS con una estructura de tabla basada en filas que conecta elementos de datos relacionados e incluye funciones que mantienen la seguridad, precisión, integridad y consistencia de los datos.

FUNCIONES DE LOS SISTEMAS DE GESTIÓN DE BASES DE DATOS RELACIONALES

Los elementos del sistema de gestión de bases de datos relacionales que abarcan la base de datos relacional básica son tan intrínsecos a las operaciones que es difícil disociarlos en la práctica.

Las funciones RDBMS más básicas están relacionadas con las operaciones de creación, lectura, actualización y eliminación, conocidas colectivamente como CRUD. Forman la base de un sistema bien organizado que promueve el tratamiento consistente de los datos.

El RDBMS generalmente proporciona diccionarios de datos y colecciones de metadatos útiles en el manejo de los datos. Estos admiten, mediante programación, estructuras de datos y relaciones bien definidas. La gestión del almacenamiento de datos es una capacidad común del RDBMS, y esto se ha definido mediante objetos de datos que van desde cadenas de objetos grandes binarios (blob) hasta procedimientos almacenados. Los objetos de datos como este amplían el alcance de las operaciones básicas de las bases de datos relacionales y se pueden manejarse de varias maneras en diferentes RDBMS.

El medio más común de acceso a datos para el RDBMS es a través de SQL. Sus principales componentes de lenguaje comprenden lenguaje de manipulación de datos (DML) y declaraciones de lenguaje de definición de datos (DDL). Hay extensiones disponibles para los esfuerzos de desarrollo que combinan el uso de SQL con lenguajes de programación comunes, como COBOL (Common Business-Oriented Language), Java y .NET.

Los RDBMS utilizan algoritmos complejos que admiten el acceso de múltiples usuarios concurrentes a la base de datos, mientras mantienen la integridad de los datos. La gestión de seguridad, que impone el acceso basado en políticas, es otro servicio de superposición que el RDBMS proporciona para la base de datos básica, ya que se utiliza en entornos empresariales.

Los RDBMS soportan el trabajo de los administradores de bases de datos (DBA) que deben administrar y monitorear la actividad de la base de datos. Las utilidades ayudan a automatizar la carga de datos y la copia de seguridad de la base de datos. Los RDBMS gestionan archivos de registro que rastrean el rendimiento del sistema en función de los parámetros operativos seleccionados. Esto permite medir el uso, la capacidad y el rendimiento de la base de datos, en particular el rendimiento de las consultas. Los RDBMS proporcionan interfaces gráficas que ayudan a los DBA a visualizar la actividad de la base de datos.

Aunque no se limita únicamente al RDBMS, el cumplimiento de ACID es un atributo de la tecnología relacional que ha demostrado ser importante en la informática empresarial. Representando la atomicidad, la consistencia, el aislamiento y la durabilidad, estas capacidades son particularmente adecuadas para RDBMS por su capacidad para manejar transacciones comerciales.

Los sistemas de gestión de bases de datos relacionales son fundamentales para las aplicaciones clave, como los libros de contabilidad, los sistemas de reservas de viajes y la venta minorista en línea. A medida que los RDBMS han madurado, han alcanzado niveles cada vez más altos de optimización de consultas y también se han convertido en partes clave de las aplicaciones de informes, análisis y almacenamiento de datos para empresas. Los RDBMS son intrínsecos a las operaciones de una variedad de aplicaciones empresariales y están en el centro de la mayoría de los sistemas de administración de datos maestros (MDM).

HISTORIA DE LOS PRODUCTOS RDBMS

Muchos sistemas de gestión de bases de datos relacionales surgieron a medida que se difundieron las noticias a principios de la década de 1970 del modelo de datos relacionales. Este y otros métodos relacionados fueron teorizados originalmente por el investigador de IBM E.F. Codd, quien propuso un esquema de base de datos, u organización lógica, que no estaba directamente asociada con la organización física, como era común en ese momento.

El trabajo de Codd se basó en un concepto de normalización de datos, lo que ahorró espacio de archivo en las unidades de disco de almacenamiento en un momento en que dicha maquinaria podría ser prohibitivamente costosa para las empresas.

Los sistemas de archivos y los sistemas de administración de bases de datos precedieron a lo que podría llamarse la era de RDBMS. Dichos sistemas se ejecutan principalmente en computadoras mainframe. Si bien los RDBMS también se ejecutaban en mainframes (el DB2 de IBM es un ejemplo destacado), gran parte de su ascendencia en la empresa se produjo en implementaciones de computadoras de rango medio UNIX. El RDBMS fue un elemento clave en la arquitectura distribuida de la computación cliente/servidor, que conectaba grupos de computadoras personales independientes a servidores de archivos y bases de datos.

Surgieron numerosos RDBMS junto con el uso de la computación cliente/servidor. Entre los competidores estaban Oracle, Ingres, Informix, Sybase, Unify, Progress y otros. Con el tiempo, tres RDBMS llegaron a dominar en implementaciones comerciales. Oracle, el DB2 de IBM y el SQL Server de Microsoft, que se basó en un diseño con licencia original de Sybase, fueron los favoritos a lo largo de la era informática cliente/servidor, a pesar de los repetidos desafíos de las tecnologías competidoras.

A medida que el siglo XX llegaba a su fin, las versiones de código abierto de RDBMS comenzaron a tener uso, particularmente en aplicaciones web. Dichos sistemas incluyen MySQL y PostgreSQL.

Eventualmente, a medida que la informática distribuida se apoderó más y la arquitectura de la nube se hizo más prominente, los RDBMS se encontraron con la competencia en forma de sistemas NoSQL. Tales sistemas a menudo se diseñaron especialmente para una distribución masiva y una alta escalabilidad en la nube, a veces renunciando a la coherencia completa de estilo SQL para la denominada coherencia eventual de los datos. Pero, incluso en los sistemas en la nube más diversos y complejos, la necesidad de garantizar la coherencia de los datos requiere que los RDBMS aparezcan de alguna forma. Además, las versiones de RDBMS se han reestructurado significativamente para la paralelización y replicación en la nube.

Fuente: SearchDataCenter.TechTarget.com

jueves, 17 de octubre de 2019

COBOL: feo, fuerte y formal



En un contexto de transformación como el que vivimos, donde todo se queda obsoleto enseguida, no es nada fácil que un lenguaje de programación que se creó a mediados de la década de los 50 pueda presumir de cumplir 60 años y seguir en plena forma.

Corría el año 1959 y la tecnología y los lenguajes de programación avanzaban, pero por varios caminos. Había ordenadores de diferentes tipos, pero incompatibles entre sí y cada uno con su propio código. La necesidad de un lenguaje universal era cada vez más latente por lo que la comisión CODASYL, compuesta por fabricantes de ordenadores, usuarios y el Departamento de Defensa de Estados Unidos unió sus fuerzas para crear COBOL, acrónimo de COmmon Business-Oriented Language (Lenguaje Común Orientado a Negocios).

Entre los integrantes de esta comisión se encontraban Flow-Matic de la oficial Grace Hopper y Bob Bemer de IBM. Ambos fueron claves en el desarrollo ya que se basaron en los diseños de Flow-Matic y del IBM COMTRAN. En poco más de seis meses este nuevo lenguaje ya estaba listo y en enero de 1960 fue aprobado por la comisión. Desde entonces, ha ido evolucionando y adaptándose a los nuevos tiempos resistiéndose a morir hasta llegar a nuestros donde sigue teniendo un papel protagonista entre más de un millar de lenguajes programadores que hay en el mundo.

UNO PARA TODOS Y TODOS PARA UNO

Según Derek Britton, director de marketing de producto, modernización de aplicaciones y conectividad para Micro Focus, las características originales de COBOL que le han dado un "poder de permanencia" son dobles: en primer lugar, sus elementos de diseño originales de portabilidad, centrado en el negocio y "legibilidad", y en segundo lugar, su increíble innovación para permitirle adaptarse a los cambios constantes a lo largo de los años.

A finales de 1960 se crea la primera versión del lenguaje: COBOL-60, la cual se implementa a modo de prueba en dos ordenadores, por un lado en RCA 501 y por otro en un UNIVAC II, demostrando así la portabilidad de programas. Pese a la buena noticia, la mala es que resultaba muy lento frente a otros lenguajes de otros fabricantes. No obstante tras varias actualizaciones, en 1968 se perfeccionó hasta el punto de despertar ya un interés más que notable en el mercado.

Leopoldo Andrés, director técnico de IBM España y experto en mainframe define la tecnología COBOL como "estable, robusta, eficiente y fiable". Este lenguaje creado hace 60 años soporta la mayoría de las transacciones económicas. "A pesar de que la tecnología avanza muy rápidamente, el COBOL ha sabido evolucionar y adaptarse a los nuevos tiempos introduciendo funcionalidades en áreas como servicios web, XML, REST, JSON permitiendo a los programadores transformar sus aplicaciones y prepararlas para las nubes híbridas".

Para 1970 ya era el lenguaje de programación más famoso del mundo a la vez que se continuaba trabajando en corregir sus deficiencias, depurando el código y mejorando el manejo de las funciones string. En 1972 fue adoptado por la organización de estandarización ISO.

"COBOL ha mejorado constantemente durante sus 60 años de vida con millones de euros invertidos anualmente por las compañías que desarrollan y mantienen productos y soluciones COBOL, con el propósito de soportar nuevos estándares e innovaciones que lo han ayudado a mantenerse en un ecosistema de TI en constante cambio. Por ejemplo, las principales actualizaciones del estándar en 1968, 1974 y 1985, 2002, 2013, junto con varias mejoras adicionales desde entonces, han proporcionado mejoras al lenguaje en sí y su interoperabilidad con las numerosas tecnologías emergentes de terceros a lo largo de los años" explica a ComputerWorld Derek Britton.

Fuente: ComputerWorld.es

miércoles, 16 de octubre de 2019

El legendario lenguaje de programación COBOL acaba de cumplir 60 años, y es probable que cumpla otros 60 más



Mary Hawes estaba harta de programar en ensamblador para los ordenadores mastodónicos de su empresa, Burroughs Corporation, así que logró organizar una reunión con académicos, fabricantes y usuarios de ordenadores y propuso una idea genial: "¿Qué tal si creamos un lenguaje de programación más fácil de entender y usar que el ensamblador o el código máquina?"

La respuesta de aquel comité fue un rotundo sí, y fue entonces cuando Grace Hopper, que ya había trabajado un un protolenguaje llamado FLOW-MATIC, acabó formando parte fundamental de la creación de COBOL, el lenguaje de programación procedural que se ha convertido en una leyenda. Aquello pasó en 1959, y aunque parezca increíble COBOL sigue en uso... y lo que le queda.

NO MÁS CEROS Y UNOS, POR FAVOR

En marzo de 1959 Hawes trabajaba como programadora en Burroughs Corporation. Por aquel entonces ya empezaba a haber intentos claros de crear lenguajes de programación más accesibles que el horripilante código máquina o los lenguajes en ensamblador que existían para las distintas plataformas de la época.

A Hawes se le ocurrió que sería interesante crear un nuevo lenguaje de programación universal. Uno que además estuviera orientado a entornos empresariales y que pudiera funcionar en distintos ordenadores para ejecutar tareas como cálculos, control de inventario o un registro de los débitos y los créditos.

Esta programadora logró que la propuesta fuera discutida por un comité de expertos de la época. Entre ellos estaban los del Departamento de Defensa de los Estados Unidos y junto a académicos, fabricantes y usuarios avanzados se creó el llamado Short Range Committee of the Conference on Data Systems (CODASYL). Aquel comité recibió fondos del gobierno y se puso a trabajar en la especificación de un nuevo lenguaje.

Los responsables del proyecto tuvieron como base un par de lenguajes comerciales. Uno desarrollado por entonces, FLOW-MATIC -creado por Grace Murray Hopper, que abogaba por programas de ordenador que fueran fácilmente inteligibles- y otro que sólo estaba definido, el Commercial Translator de IBM. Del lenguaje de Hopper también se heredaron los nombres largos de variables y la separación de las instrucciones y las descripciones de datos.

Así nació COBOL (COmmon Business-Oriented Language), un lenguaje de programación procedural e imperativo cuyos comandos se diseñaron para que se parecieran al inglés convencional. Aquel nombre, sugerido por Bob Bemer fue el definitivo, pero se barajaron otros como BUSY (Business System), INFOSYL (Information System Language) y COCOSYL (Common Computer Systems Language).

Aquel lenguaje lo tuvo difícil al principio a pesar del apoyo del DoD, de IBM o de UNIVAC. Otras empresas como Honeywell trabajaban por aquel entonces en FACT, el que consideraban como el lenguaje de programación empresarial del futuro, y que realmente tenía ideas muy innovadoras. El problema es que FACT no estaba soportado por el hardware de la época, así que acabó siendo COBOL el que se impuso, en septiembre sus creadores ya tenían preparada la sintaxis básica.

UNA EVOLUCIÓN VERTIGINOSA

Pocos meses después comenzaron a aparecer los primeros programas en COBOL que demostraron efectivamente esa interoperabilidad que permitía ejecutarlos en ordenadores de distintos fabricantes. Los fabricantes fueron sumándose a CODASYL y crearon diversos compiladores y el lenguaje fue creciendo en popularidad de forma notable.

En 1970 ya era el lenguaje de programación más utilizado en todo el mundo, y en 1972 fue adoptado por la organización de estandarización ISO, pero aquel lenguaje estándar fue creciendo a su propio ritmo con diversas versiones que iban añadiendo distintas versiones que se nombraban con el año de publicación de las mismas.

Entre las más conocidas están COBOL-74, COBOL-85 y el importante COBOL-2002 que es especialmente significativo por convertirse en un lenguaje orientado a objetos que tomó diversas características de C++ y Smalltalk. El proyecto para transformarlo en un lenguaje de programación de este tipo se inició en 1997, cuando la consultora Gartner estimaba que había 200.000 millones de líneas de código COBOL en programas que corrían en todo el mundo: el 80% de los programas empresariales, afirmaba ese estudio, era COBOL.

COBOL SIGUE MUY VIVO

La mayoría de lenguajes de programación van y vienen, pero COBOL ha logrado convertirse en toda una leyenda que a sus 60 años recién cumplidos está sorprendentemente vivo y extendido.

Eso se puede comprobar por ejemplo en las ofertas de empleo que siguen surgiendo y que demandan profesionales de este ámbito -alrededor de 190 en LinkedIn solo en España, por ejemplo-, y en Estados Unidos ya se dejó claro que al menos en 2016 el Departamento de Seguridad Nacional o la Administración de la Seguridad Social seguían usando COBOL en algunos de sus sistemas.

Organizaciones como la llamada —con mucha guasa— COBOL Cowboys siguen tratando de mostrar al mundo la relevancia actual de COBOL y ofreciendo su experiencia y sus servicios de consultoría.

Afirman que el 85% de todas las transacciones de negocios siguen usando este lenguaje, y parece que ese dato puede no estar muy desencaminado según Micro Focus, la empresa tras la cual se centraliza actualmente todo su desarrollo. Según palabras de su director de marketing "sabemos que el número de empresas que utilizan sistemas COBOL hoy en día es de decenas de miles".

De hecho millones de personas dependen parcialmente de estos sistemas porque si hay un sector en el que COBOL esté especialmente integrado es en el de las instituciones financieras y de seguros. También en las administraciones públicas, y como aseguran en ZDNet ya hay esfuerzos para trasladar aplicaciones COBOL a la nube, lo que parece que hará que este lenguaje viva, como poco, otros 60 años más. Felicidades.

Fuente: xataka.com

martes, 15 de octubre de 2019

¿La Inteligencia Artificial representa un peligro para la humanidad?



Los procesos automáticos y el empleo de máquinas han aumentado exponencialmente durante las últimas décadas: lavado de coches, cajeros automáticos, semáforos, enfoques automáticos en las cámaras fotográficas, entre otros.

Hoy en día, la automatización se ha convertido en algo tan normal que ni siquiera percibimos que estamos trabajando con ella. Sin embargo, las máquinas automáticas y la Inteligencia Artificial (IA) no son lo mismo.

Los equipos convencionales utilizan reglas de programación exactas para poder ejecutar sus tareas. Cuanto más detalle y exactitud se haya utilizado para programar las tareas, más eficiente será el dispositivo. Por ejemplo, trazar la ruta más corta entre dos ciudades.

En cambio, la Inteligencia Artificial es una forma de programación más abstracta y avanzada. En este caso, siguiendo con el ejemplo anterior, se debe trazar la ruta más rápida entre dos ciudades teniendo en cuenta factores como la cantidad de semáforos, las obras en la vía, los horarios con más afluencia de vehículos o incluso las condiciones meteorológicas. Los sistemas con IA tienen la capacidad de elegir el proceso más eficaz.

Estos adelantos pueden impresionar y asustar al mismo tiempo. La falta de conocimiento sobre la Inteligencia Artificial abre nuevos debates: "¡Parece magia! ¿Tiene sentimientos? ¿Es una tecnología inteligente? ¿Puede cambiar la naturaleza del ser humano?".

Estas mismas preguntas fueron planteadas en los tribunales de algunos países a principios del siglo XX con la llegada del automóvil. Ahora, cuando surgen las mismas dudas, es necesario revisar el debate que surgió en aquel momento.

Con el tiempo, las personas se acostumbraron a utilizar los coches y se debilitaron las teorías que atribuían a los vehículos intenciones diabólicas.

En la actualidad, el debate sobre la Inteligencia Artificial se encuentra en un contexto similar.

Los métodos de análisis estadísticos que se utilizan en la IA no tienen voluntad propia. La Inteligencia Artificial no es inteligente, no puede tener intereses y ambiciones propias, ni tampoco puede engañar. La IA es el reflejo de las intenciones de los programadores y de las entidades que están relacionadas con esa tecnología.

No existe un motivo por el cual sea necesario crear una entidad jurídica con el propósito de regular la Inteligencia Artificial.

Fuente: CincoNoticias.com

¿Sabemos qué es el Software Libre? ¿Es igual a gratuito? ¿Es lo mismo que Open Source?



El software libre, básicamente, es aquel que respeta la libertad de los usuarios y la comunidad. A grandes rasgos (por elección manifiesta de su autor), significa que los usuarios tienen la libertad de ejecutar, usar, copiar, distribuir, instalar, estudiar, modificar y mejorar el software. El software libre (en un 99%) suele estar disponible gratuitamente, o al precio de costo; sin embargo no es obligatorio que sea así, por lo tanto no hay que asociar "software libre" a "software gratuito" (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente. En inglés la palabra "free" es ambigua ya que tiene dos significados que son "libre" y "gratis" es por eso que a veces se dice "libre software", en lugar de "free software", para mostrar que no se quiere decir que es gratuito, ya que como dije anteriormente no necesariamente el software libre es gratis.

Esta definición está asociada al nacimiento del movimiento de software libre, encabezado por Richard Stallman y la consecuente fundación en 1985 de la Free Software Foundation (FSF) que se dedica principalmente a difundir, promover o promocionar el desarrollo y uso del software libre, que coloca la libertad del usuario informático como un propósito ético fundamental.

La definición de software libre no contempla la cuestión del precio; un eslogan frecuentemente usado es "libre como en libertad, no como en cerveza gratis" o en inglés "Free as in freedom, not as in free beer" (aludiendo a la ambigüedad ya vista del término inglés "free"). Otros para evitar confusiones defienden el uso del término open source software (software de código abierto). La principal diferencia entre los términos "open source" y "free software" es que éste último tiene en cuenta los aspectos éticos y filosóficos de la libertad, mientras que el "open source" se basa únicamente en los aspectos técnicos.

En concreto, el software libre implica que los usuarios tienen cuatro libertades esenciales:



Para las libertades (1) y (3) el acceso al código fuente es una condición necesaria, por lo tanto el software debe ser de "código abierto".

Si analizamos las cuatro libertades podemos decir que la primera libertad sobre el "uso" se refiere a que podemos usar el software como deseemos y con cualquier propósito, la segunda libertad que corresponde al "estudio" se refiere a que podemos analizar cómo funciona el software y adaptarlo a nuestras propias necesidades, la tercera libertad que tiene que ver con la "distribución" se refiere a que podemos copiar y distribuir el software para ayudar a otros usuarios, y la cuarta libertad que trata sobre "mejora" nos dice que podemos modificar el software y hacer públicos estos cambios para que la comunidad se beneficie.

Un programa es software libre si otorga a los usuarios todas estas libertades de manera adecuada. De lo contrario no es libre.

Haciendo una analogía, para entender mejor, podríamos decir que el software privativo es como comprar un automóvil y que el fabricante del mismo no te deje cambiarle de color, reemplazarle las llantas/aros o hasta inclusive ni pegarle alguna calco/sticker. Esto seria algo loco de pensar porque si yo adquirí un auto, lo pague y ya es mío, tengo el derecho a hacer lo que quiera con ese producto.

El software libre justamente lo que pretende es que los sistemas o programas que son intangibles o lógicos se comporten de la misma manera que un producto tangible o físico, es decir, que al adquirirlo pueda tener la libertad de hacer lo que yo desee con él, sin restricciones o condiciones.

Fuente: Ubuntizando.com