17. Introducción a MaxDB MaxDB is an enterprise-level database. MaxDB is the new name of a database management system formerly called SAP DB. 17.1. Historia de MaxDB La historia de SAP DB se remonta hacia los principios de 1980 cuando fue desarrollada como un producto comercial(ADABAS). Esta Base de Datos fue cambiando de nombre varias veces desde ese entonces. Cuando SAP AG, una compañía con sede en Walldorf, Alemania, se hizo cargo del desarrollo del producto, fue bautizada como SAP DB. SAP desarrollo esta base de datos para funcionar como sistema de almacenamiento de todos los sistemas de misión critica de las Aplicaciones de SAP, llamadas R/3. SAP DB fue pensada para proveer una alternativa a sistemas de bases de datos como Oracle, Microsoft SQL Server, y DB2 de IBAM. En Octubre de 2000, SAP AG libero bajo la licencia GNU GPL(ver Apéndice I, GNU General Public License), convirtiéndola en Software Open Source. En Octubre de 2003, mas de 2,000 clientes de SAP AG estaban utilizando SAP DB como su principal sistema de bases de datos y otros 2000 clientes estaban utilizando de forma separada como parte de la solución APO/Live cache En Mayo de 2003 una alianza tecnológica fue conformada entre MySQL AB y SAP AG. Esa alianza fue llamada MySQL AB se encargara del futuro desarrollo de SAP DB, de su nuevo nombre, y de la comercialización de licencias de la re bautizada SAP DB para aquellos clientes que no quieran estar bajo las restricciones impuestas por utilizar esa base de datos bajo el licenciamiento GNU GPL (see Apéndice I, GNU General Public License). En Agosto de 2003, SAP DB fue re bautizada como MaxDB por MySQL AB. 17.2. Licenciamiento y soporte MaxDB puede ser utilizada bajo los mismos sistemas de licenciamiento que los otros productos distribuidos por MySQL AB. De esta manera MaxDB esta disponible bajo la GNU General Public Licence y bajo la licencia comercial. Para mayor informacion sobre licenciamiento ver: http://www.mysql.com/company/legal/licensing/. MySQL ofrece soporte para MaxDB a quienes no sean clientes de SAP. La primer version actualizada fue MaxDB 7.5.00, que fue lanzada en Noviembre de 2003 17.3. Enlaces relacionados con MaxDB La pagina principal para MaxDB es http://www.mysql.com/products/maxdb. La informacion anteriormente disponible en http://www.sapdb.org se traslado a el link anterior. 17.4. Conceptos básicos de MaxDB MaxDB opera como un producto cliente/servidor. Fue desarrollado para cubrir las demandas de las instalaciones que requieren de una gran volumen de procesamiento de transacciones. Tanto el back up en línea como expansión de la base de datos están soportados. El Servidor Cluster de Microsoft tiene soporte directo para múltiples instalaciones de servidores; otros requerimientos deben ser escritos manualmente. Las herramientas de administración son provistas tanto en aplicaciones Desktop como implementaciones basadas en browser. 17.5. Diferencias de prestaciones entre MaxDB y MySQL La siguiente lista brinda un sumario de las principales diferencias entre MaxDB y MySQL; Esta lista es parcial. MaxDB corre en la modalidad de un sistema cliente/servidor. MaxDB runs as a client/server system. MySQL puede funcionar tanto cliente/servidor como tambien en un sistema ebedded. MaxDB no funciona en todas las platformas soportadas por MySQL. Por ejemplo, MaxDB no corre sobre el sistema operativo de IBM OS/2. MaxDB might not run on all platforms supported by MySQL. MaxDB uses a proprietary network protocol for client/server communication. MySQL uses either TCP/IP (with or without SSL encryption), sockets (under Unix-like systems), or named pipes (under Windows NT-family systems). MaxDB supports stored procedures. For MySQL, stored procedures are implemented in version 5.0. MaxDB also supports programming of triggers through an SQL extension, which is scheduled for MySQL 5.1. MaxDB contains a debugger for stored procedure languages, can cascade nested triggers, and supports multiple triggers per action and row. MaxDB is distributed with user interfaces that are text-based, graphical, or Web-based. MySQL is distributed with text-based user interfaces only; graphical user interface (MySQL Control Center, MySQL Administrator) are shipped separately from the main distributions. Web-based user interfaces for MySQL are offered by third parties. MaxDB supports a number of programming interfaces that also are supported by MySQL. However, MaxDB does not support RDO, ADO, or .NET, all of which are supported by MySQL. MaxDB supports embedded SQL only with C/C++. MaxDB includes administrative features that MySQL does not have: job scheduling by time, event, and alert, and sending messages to a database administrator on alert thresholds. 17.6. Características de interoperabilidad entre MaxDB y MySQL As part of MaxDB 7.6, the MaxDB Synchronization Manager is released. The Synchronization Manager supports creation of asynchronous replication scenarios between several MaxDB instances. However, interoperability features also are planned, so that the Synchronization Manager supports replication to and from a MySQL server. In the first release, the Synchronization Manager supports inserting data into MySQL. This means that initially only replication from MaxDB to MySQL is supported. In the course of 2005, exporting of data from a MySQL server to the Synchronization Manager will be added, thus adding support for MySQL to MaxDB replication scenarios. MaxDB 7.6, with the Synchronization Manager, was released as a beta version in January 2005. The production release is planned for April 2005. 17.7. Palabras reservadas de MaxDB Like MySQL, MaxDB has a number of reserved words that have special meanings. Normally, they cannot be used as names of identifiers, such as database or table names. The following table lists reserved words in MaxDB, indicates the context in which those words are used, and indicates whether or not they have counterparts in MySQL. If such a counterpart exists, the meaning in MySQL might be identical or differing in some aspects. The main purpose is to list in which respects MaxDB differs from MySQL; therefore, this list is not complete. Para la lista de palabras reservardas en MySQL, Visite Sección 9.6, “Tratamiento de palabras reservadas en MySQL”. Reserved in MaxDB Context of usage in MaxDB MySQL counterpart @ Can prefix identifier, like “@table” Not allowed ADDDATE() Funcion SQL ADDDATE(); nuevo en MySQL 4.1.1 ADDTIME() Funcion SQL ADDTIME(); nuevo en MySQL 4.1.1 ALPHA Funcion SQL Sin comparacion ARRAY Tipo de Dato Sin Implementar ASCII() Funcion SQL ASCII(), implementado pero con otro significado AUTOCOMMIT Transactions; ON by default Transactions; OFF by default BOOLEAN Column types; BOOLEAN accepts as values only TRUE, FALSE, and NULL BOOLEAN was added in MySQL 4.1.0; it is a synonym for BOOL which is mapped to TINYINT (1). It accepts integer values in the same range as TINYINT as well as NULL. TRUE and FALSE can be used as aliases for 1 and 0. CHECK CHECK TABLE CHECK TABLE; similar, but not identical usage COLUMN Column types COLUMN; noise word CHAR() SQL function CHAR(); identical syntax; similar, not identical usage COMMIT Implicit commits of transactions happen when data definition statements are issued Implicit commits of transactions happen when data definition statements are issued, and also with a number of other statements COSH() SQL function Nothing comparable COT() SQL function COT(); identical syntax and implementation CREATE SQL, data definition language CREATE DATABASE SQL function DATABASE(); DATABASE is used in a different context; for example, CREATE DATABASE DATE() SQL function CURRENT_DATE DATEDIFF() SQL function DATEDIFF(); new in MySQL 4.1.1 DAY() SQL function Nothing comparable DAYOFWEEK() SQL function DAYOFWEEK(); by default, 1 represents Monday in MaxDB and Sunday in MySQL DISTINCT SQL functions AVG, MAX, MIN, SUM DISTINCT; but used in a different context: SELECT DISTINCT DROP DROP INDEX, for example DROP INDEX; similar, but not identical usage EBCDIC() SQL function Nothing comparable EXPAND() SQL function Nothing comparable EXPLAIN Optimization EXPLAIN; similar, but not identical usage FIXED() SQL function Nothing comparable FLOAT() SQL function Nothing comparable HEX() SQL function HEX(); similar, but not identical usage INDEX() SQL function INSTR() or LOCATE(); similar, but not identical syntaxes and meanings INDEX USE INDEX, IGNORE INDEX and similar hints are used right after SELECT; for example, SELECT ... USE INDEX USE INDEX, IGNORE INDEX and similar hints are used in the FROM clause of a SELECT query; for example, in SELECT ... FROM ... USE INDEX INITCAP() SQL function Nothing comparable LENGTH() SQL function LENGTH(); identical syntax, but slightly different implementation LFILL() SQL function Nothing comparable LIKE Comparisons LIKE; but the extended LIKE MaxDB provides rather resembles the MySQL REGEX LIKE wildcards MaxDB supports “%”, “_”, MySQL supports “%”, and “_” as wildcards in “Control-underline”, “Control-up LIKE comparisons arrow”, “*”, and “?” as wildcards in LIKE comparisons LPAD() SQL function LPAD(); slightly different implementation LTRIM() SQL function LTRIM(); slightly different implementation MAKEDATE() SQL function MAKEDATE(); new in MySQL 4.1.1 MAKETIME() SQL function MAKETIME(); new in MySQL 4.1.1 MAPCHAR() SQL function Nothing comparable MICROSECOND() SQL function MICROSECOND(); new in MySQL 4.1.1 NOROUND() SQL function Nothing comparable NULL Column types; comparisons NULL; MaxDB supports special NULL values that are returned by arithmetic operations that lead to an overflow or a division by zero; MySQL does not support such special values PI SQL function PI(); identical syntax and implementation, but parentheses are mandatory in MySQL REF Data type Nothing comparable RFILL() SQL function Nothing comparable ROWNO Predicate in WHERE clause Similar to LIMIT clause RPAD() SQL function RPAD(); slightly different implementation RTRIM() SQL function RTRIM(); slightly different implementation SEQUENCE CREATE SEQUENCE, DROP SEQUENCE AUTO_INCREMENT; similar concept, but different implementation SINH() SQL function Nothing comparable SOUNDS() SQL function SOUNDEX(); slightly different syntax STATISTICS UPDATE STATISTICS ANALYZE TABLE; similar concept, but different implementation SUBSTR() SQL function SUBSTRING(); slightly different implementation SUBTIME() SQL function SUBTIME(); new in MySQL 4.1.1 SYNONYM Data definition language: CREATE [PUBLIC] SYNONYM, RENAME SYNONYM, DROP SYNONYM Nothing comparable TANH() SQL function Nothing comparable TIME() SQL function CURRENT_TIME TIMEDIFF() SQL function TIMEDIFF(); new in MySQL 4.1.1 TIMESTAMP() SQL function TIMESTAMP(); new in MySQL 4.1.1 TIMESTAMP() as argument to DAYOFMONTH() and DAYOFYEAR() SQL function Nothing comparable TIMEZONE() SQL function Nothing comparable TRANSACTION() Returns the ID of the current transaction Nothing comparable TRANSLATE() SQL function REPLACE(); identical syntax and implementation TRIM() SQL function TRIM(); slightly different implementation TRUNC() SQL function TRUNCATE(); slightly different syntax and implementation USE Switches to a new database instance; terminates the connection to the current database instance; all subsequent commands are referred to this database instance USE; identical syntax, but does not terminate the connection to the current database USER SQL function USER(); identical syntax, but slightly different implementation, and parentheses are mandatory in MySQL UTC_DIFF() SQL function UTC_DATE(); provides a means to calculate the same result as UTC_DIFF() VALUE() SQL function, alias for COALESCE() COALESCE(); identical syntax and implementation VARIANCE() SQL function VARIANCE(); new in MySQL 4.1.0 WEEKOFYEAR() SQL function WEEKOFYEAR(); new in MySQL 4.1.1