GESTORES DE BASE DE DATOS
SQL MY SQL
MYSQL
¿QUÉ ES MYSQL?
SQL MY SQL
MYSQL
¿QUÉ ES MYSQL?
MySQL es un
sistema de gestión de bases de datos relacional, licenciado bajo la GPL de la
GNU. Su diseño multihilo le permite soportar una gran carga de forma muy
eficiente. MySQL fue creada por la empresa sueca MySQL AB, que mantiene el
copyright del código fuente del servidor SQL, así como también de la marca.
Aunque MySQL
es software libre, MySQL AB distribuye una versión comercial de MySQL, que no
se diferencia de la versión libre más que en el soporte técnico que se ofrece,
y la posibilidad de integrar este gestor en un software propietario, ya que de
no ser así, se vulneraría la licencia GPL.
Este gestor
de bases de datos es, probablemente, el gestor más usado en el mundo del
software libre, debido a su gran rapidez y facilidad de uso. Esta gran
aceptación es debida, en parte, a que existen infinidad de librerías y otras
herramientas que permiten su uso a través de gran cantidad de lenguajes de
programación, además de su fácil instalación y configuración.
MySQL surgió
como un intento de conectar el gestor mSQL a las tablas propias de MySQL AB,
usando sus propias rutinas a bajo nivel. Tras unas primeras pruebas, vieron que
mSQL no era lo bastante flexible para lo que necesitaban, por lo que tuvieron
que desarrollar nuevas funciones. Esto resultó en una interfaz SQL a su base de
datos, con una interfaz totalmente compatible a mSQL.
Se comenta en
el manual [MySQL_Manual] que no se sabe con certeza de donde
proviene su nombre. Por un lado dicen que sus librerías han llevado el prefijo
'my' durante los diez últimos años. Por otro lado, la hija de uno de los
desarrolladores se llama My. No saben cuál de estas dos causas (aunque bien
podrían tratarse de la misma), han dado lugar al nombre de este conocido gestor
de bases de datos.
La versión
estable de este gestor a días de hoy es la 3.23.49. Se puede encontrar más
información sobre este gestor en el manual [MySQL_Manual].
CARACTERISTICAS
§ Escrito en C y en C++
§ Probado con un amplio rango de compiladores diferentes
§ Funciona en diferentes plataformas. Consulte Sección 2.1.1,
“Sistemas operativos que MySQL soporta”.
§ Usa GNU Automake, Autoconf, y Libtool para portabilidad.
§ APIs disponibles para C, C++, Eiffel, Java, Perl, PHP,
Python, Ruby, y Tcl. Consulte Capítulo 24, APIs de MySQL.
§ Uso completo de multi-threaded mediante threads del kernel.
Pueden usarse fácilmente multiple CPUs si están disponibles.
§ Proporciona sistemas de almacenamiento transaccionales y no
transaccionales.
§ Usa tablas en disco B-tree (
MyISAM
)
muy rápidas con compresión de índice.
§ Relativamente sencillo de añadir otro sistema de
almacenamiento. Esto es útil si desea añadir una interfaz SQL para una base de
datos propia.
§ Un sistema de reserva de memoria muy rápido basado en
threads.
§ Joins muy rápidos usando un multi-join de un paso
optimizado.
§ Tablas hash en memoria, que son usadas como tablas
temporales.
§ Las funciones SQL están implementadas usando una librería
altamente optimizada y deben ser tan rápidas como sea posible. Normalmente no
hay reserva de memoria tras toda la inicialización para consultas.
§ El código MySQL se prueba con Purify (un detector de
memoria perdida comercial) así como con Valgrind, una herramienta GPL (http://developer.kde.org/~sewardj/).
§ El servidor está disponible como un programa separado para
usar en un entorno de red cliente/servidor. También está disponible como
biblioteca y puede ser incrustado (linkado) en aplicaciones autónomas. Dichas
aplicaciones pueden usarse por sí mismas o en entornos donde no hay red
disponible..
Tipos de columnas
§ Diversos tipos de columnas: enteros con/sin signo de 1, 2,
3, 4, y 8 bytes de longitud,
FLOAT
, DOUBLE
, CHAR
,VARCHAR
, TEXT
, BLOB
, DATE
, TIME
, DATETIME
, TIMESTAMP
, YEAR
, SET
, ENUM
, y tipos espaciales
OpenGIS. Consulte Capítulo 11, Tipos de columna.
§ Registros de longitud fija y longitud variable.
Sentencias y funciones
§ Soporte completo para operadores y funciones en las
cláusulas de consultas
SELECT
y WHERE
.
Por ejemplo:§ mysql> SELECT CONCAT(first_name, ' ', last_name)
§ -> FROM citizen
-> WHERE income/dependents > 10000 AND age > 30;
§
Soporte completo para las cláusulas SQL
GROUP BY
y ORDER BY
.
Soporte de funciones de agrupación (COUNT()
,COUNT(DISTINCT
...)
, AVG()
, STD()
, SUM()
, MAX()
, MIN()
, y GROUP_CONCAT()
).
§ Soporte para
LEFT OUTER
JOIN
y RIGHT OUTER JOIN
cumpliendo estándares de sintaxis SQL
y ODBC.
§ Soporte para alias en tablas y columnas como lo requiere el
estándar SQL.
§
DELETE
, INSERT
, REPLACE
, y UPDATE
devuelven el número de filas que han
cambiado (han sido afectadas). Es posible devolver el número de filas que
serían afectadas usando un flag al conectar con el servidor.
§ El comando específico de MySQL
SHOW
puede usarse para obtener información
acerca de la base de datos, el motor de base de datos, tablas e índices. El
comando EXPLAIN
puede usarse para determinar cómo el
optimizador resuelve una consulta.
§ Los nombres de funciones no colisionan con los nombres de
tabla o columna. Por ejemplo,
ABS
es un nombre válido de columna. La
única restricción es que para una llamada a una función, no se permiten
espacios entre el nombre de función y el '(
' a continuación. Consulte Sección 9.6, “Tratamiento de palabras reservadas en MySQL”.
§ Puede mezclar tablas de distintas bases de datos en la
misma consulta (como en MySQL 3.22).
Seguridad
§ Un sistema de privilegios y contraseñas que es muy flexible
y seguro, y que permite verficación basada en el host. Las contraseñas son
seguras porque todo el tráfico de contraseñas está cifrado cuando se conecta
con un servidor.
Escalabilidad y límites
§ Soporte a grandes bases de datos. Usamos MySQL Server con
bases de datos que contienen 50 millones de registros. También conocemos a
usuarios que usan MySQL Server con 60.000 tablas y cerca de 5.000.000.000.000
de registros.
§ Se permiten hasta 64 índices por tabla (32 antes de MySQL
4.1.2). Cada índice puede consistir desde 1 hasta 16 columnas o partes de
columnas. El máximo ancho de límite son 1000 bytes (500 antes de MySQL
4.1.2).Un índice puede usar prefijos de una columna para los tipos de columna
CHAR
, VARCHAR
, BLOB
, o TEXT
.
Conectividad
§ Los clientes pueden conectar con el servidor MySQL usando
sockets TCP/IP en cualquier plataforma. En sistemas Windows de la familia NT
(NT,2000,XP, o 2003), los clientes pueden usar named pipes para la conexión. En
sistemas Unix, los clientes pueden conectar usando ficheros socket Unix.
§ En MySQL 5.0, los servidores Windows soportan conexiones
con memoria compartida si se inicializan con la opción
--shared-memory
. Los clientes
pueden conectar a través de memoria compartida usando la opción --protocol=memory
.
§ La interfaz para el conector ODBC (MyODBC) proporciona a
MySQL soporte para programas clientes que usen conexiones ODBC (Open Database
Connectivity). Por ejemplo, puede usar MS Access para conectar al servidor
MySQL. Los clientes pueden ejecutarse en Windows o Unix. El código fuente de
MyODBC está disponible. Todas las funciones para ODBC 2.5 están soportadas, así
como muchas otras. Consulte Sección 25.1, “MySQL
Connector/ODBC”.
§ La interfaz para el conector J MySQL proporciona soporte
para clientes Java que usen conexiones JDBC. Estos clientes pueden ejecutarse
en Windows o Unix. El código fuente para el conector J está disponible.
ConsulteSección 25.4, “MySQL
Connector/J”.
Localización
§ El servidor puede proporcionar mensajes de error a los
clientes en muchos idomas. Consulte Sección 5.9.2, “Escoger el idioma de los mensajes de error”.
§ Soporte completo para distintos conjuntos de caracteres,
incluyendo
latin1
(ISO-8859-1), german
, big5
, ujis
, y más. Por ejemplo, los
caracteres escandinavos 'â
', 'ä
'
y 'ö
' están permitidos en nombres de tablas y
columnas. El soporte para Unicode está disponible
§ Todos los datos se guardan en el conjunto de caracteres elegido.
Todas las comparaciones para columnas normales de cadenas de caracteres son
case-insensitive.
§ La ordenación se realiza acorde al conjunto de caracteres
elegido (usando colación Sueca por defecto). Es posible cambiarla cuando
arranca el servidor MySQL. Para ver un ejemplo de ordenación muy avanzada,
consulte el código Checo de ordenación. MySQL Server soporta diferentes
conjuntos de caracteres que deben ser especificados en tiempo de compilación y
de ejecución.
No hay comentarios:
Publicar un comentario