jueves, 1 de marzo de 2012



LOS DISTINTOS MOTORES DE BASE DE DATO  GRATIS  Y  PAGOS..!

Base de datos gratuitos más populares

Sql Server 2008 con Advanced Services:

Microsoft SQL Server 2008 Express with Advanced Services 
es una versión gratuita y fácil de usar de la plataforma de datos SQL Server Express que incluye una herramienta de administración gráfica avanzada, así como eficaces características para la elaboración de informes y la realización de búsquedas avanzadas basadas en texto. Ofrece herramientas de administración de datos eficaces y confiables, así como características completas, protección de datos y un rápido funcionamiento. Es ideal para pequeñas aplicaciones de servidor y almacenes de datos locales.
Oracle Express Edition:
Oracle Data base 10g Express Edition(Oracle Data base XE) es una base de datos de entrada de footprint pequeño, creada sobre la base de código Oracle Database 10g Release 2 que puede desarrollarse, implementarse y distribuirse sin cargo; es fácil de descargar y fácil de administrar.
MySql:
MySQLes un sistema de gestión de base de datosrelacional, multihilo y multiusuario con más de seis millones de instalaciones. MySQL AB desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009desarrolla MySQL como software libre en un esquema de licenciamiento dual.


PostgreSQL:

SQLite:
SQLitees un sistema de gestión de bases de datos relacional compatible con ACID, y que está contenida en una relativamente pequeña (~225 kB[1] ) biblioteca en C. SQLite es un proyecto de dominio público creado por D. Richard Hipp.
A diferencia de los sistemas de gestión de base de datos cliente-servidor, el motor de SQLite no es un proceso independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca SQLite se enlaza con el programa pasando a ser parte integral del mismo. El programa utiliza la funcionalidad de SQLite a través de llamadas simples a subrutinas y funciones. Esto reduce la latencia en el acceso a la base de datos, debido a que las llamadas a funciones son más eficientes que la comunicación entre procesos. El conjunto de la base de datos (definiciones, tablas, índices, y los propios datos), son guardados como un sólo fichero estándar en la máquina host. Este diseño simple se logra bloqueando todo el fichero de base de datos al principio de cada transacción.

Firebird:

Firebirdes una base de datos relacional que ofrece muchas características de SQL ANSI estándar y que funciona en Linux, Windows, MacOSX y una variedad de plataformas UNIX. Firebird ofrece una concurrencia excelente, alto rendimiento y un poderoso lenguaje de procedimientos almacenados y disparadores. Ha estado usándose en producción bajo varios nombres desde 1981.


ENTRE OTROS PAGOS Y GRATUITOS ESTAN:








Es una base de datos Open Source de gran rendimiento, escalable, schema-free (esquemas de datos tipo JSON). Hay drivers preparados para usar esta base de datos desde lenguajes como PHP, Python, Perl, Ruby, JavaScript, C++ y muchos más.

 


Hypertable es un sistema de almacenamiento distribuido de datos de alto rendimiento diseñado para soportar aplicaciones que requieran máximo rendimiento, escalabilidad y eficiencia. Se ha diseñado y modelado a partir del proyecto BigTable de Google y se enfoca sobre todo a conjuntos de datos de gran escala.

 



Como en el caso de MongoDB, este proyecto está destinado a ofrecer una base de datos orientada a documentos que se pueden consultar o indexar en modo MapReduce usando JavaScript. CouchDB ofrece una API JSON RESTful a la que se puede acceder desde cualquier entorno que soporte peticiones HTTP.




Es un motor de persistencia completamente transaccional en Java que almacena los datos mediante grafos, y no mediante tablas. Neo4j ofrece una escalabilidad masiva. Puede manejar grafos de varios miles de millones de nodos/relaciones/propiedades en una única máquina, y se puede escalar a lo largo de múltiples máquinas.






 
Riak es una base de datos ideal para aplicaciones web y combina:
  • Una tienda con un valor clave descentralizado
  • Un motor map/reduce flexible
  • Una interfaz de consultas HTTP/JSPN amigable.


Se trata de un motor de bases de datos embebidas que proporciona a los desarrolladores persistencia local, rápida y eficiente con una administración nula. Oracle Berkeley DB es una librería que se enlaza directamente en nuestras aplicaciones y permite realizar llamadas simples a funciones en lugar de enviar mensajes a un servidor remoto para mejorar el rendimiento.


 



EXist-db está desarrollada a través de la tecnología XML. Almacena datos CML según el modelo de datos de este estándar, y se caracteriza por un procesado eficiente y basado en índices de XQuery






 MonetDB es un sistema de bases de datos para aplicaciones de alto rendimiento dirigidas a la minería de datos, OAP, GIS, búsquedas XML, y recolección de información a partir de ficheros de texto y multimedia.






 4store es un motor de almacenamiento de bases de datos y de consultas que mantiene datos en formato RDF. Está escrito en ANSI C99, está diseñado para funcionar en sistemas UNIX y ofrece una plataforma de alto rendimiento, escalable y estable.




 

MariaDB es una rama compatible hacia atrás de MySQL® Database Server. Incluye soporte para la mayoría de los motores de almacenamiento Open Source, y además para el propio motor de almacenamiento Maria.







Cassandra es probablemente uno de los proyectos NO SQL más concoidos del mercado. Se trata de una base de datos distribuida de segunda generación con alta escalabilidad que está siendo usada por gigantes como Facebook (que es quien la ha desarrollado), Digg, Twitter, Cisco y más empresas. El objetivo es ofrecer un entorno consistente, tolerante a fallos y de alta disponibilidad a la hora de almacenar datos.




 
Memcachedes un almacen del tipo in-memory key-valuepara pequeñas cadenas de datos arbitrarios (textos, objetos) de resultados de llamadas a base de datos, llamadas a API, o renderizado de páginas. Está orientado a acelerar aplicaciones web dinámicas al aliviar la carga de la base de datos.





HBase es u almacén distribuido del tipo column-orientedque puede ser también denominado como la base de datos Hadoop. El proyecto está dirigido a ofrecer tablas enormes de “miles de millones de filas, y millones de columnas”. Dispone de un Gateway RESTful que soporta XML, Protobug y opciones de codificación binaria de datos.



Redis es una base de datos avanzada del tipo fast key-value  queestá escrita en C y quese puede usar como memcached, por delante de una base de datos tradicional, o bien por sí sola de forma independiente. Tiene soporte para varios lenguajes de programación y se utiliza en proyectos muy populares como GitHub o Engine Yard. También hay un cliente PHP llamado Rediska que permite gestionar bases de datos Redis.


OTRAS ALTERNATIVAS

  • Este modelo es el más utilizado actualmente ya que utiliza tablas bidimensionales para la representación lógica de los datos y sus relaciones.

    Algunas de sus principales características son:
  • Puede ser entendido y usado por cualquier usuario.
  • Permite ampliar el esquema conceptual sin modificar las aplicaciones de gestión.
  • Los usuarios no necesitan saber dónde se encuentran los datos físicamente.

El elemento principal de este modelo es la relación que se representa mediante una tabla.


Modelo de datos jerárquico


En un modelo jerárquico, los datos son organizados en una estructura parecida a un árbol, implicando un eslabón solo ascendente en cada registro para describir anidar, y un campo de clase para guardar los registros en un orden particular en cada lista de mismo-nivel.
Las estructuras jerárquicas fueron usadas extensamente en los primeros sistemas de gestión de datos de unidad central, como el Sistema de Dirección de Información (IMS) por la IBM, y ahora describen la estructura de documentos XML. Esta estructura permite un 1: N en una relación entre dos tipos de datos.
Esta estructura es muy eficiente para describir muchas relaciones en el verdadero real; recetas, índice, ordenamiento de párrafos/versos, alguno anidó y clasificó la información. Sin embargo, la estructura jerárquica es ineficaz para ciertas operaciones de base de datos cuando un camino lleno (a diferencia del eslabón ascendente y el campo de clase) también no es incluido para cada registro.

Modelo de datos en red

  


En este modelo las entidades se representan como nodos y sus relaciones son las líneas que los unen. En esta estructura cualquier componente puede relacionarse con cualquier otro.
A diferencia del modelo jerárquico, en este modelo, un hijo puede tener varios padres.
Los conceptos básicos en el modelo en red son:
  • El tipo de registro, que representa un nodo.
  • Elemento, que es un campo de datos.
  • Agregado de datos, que define un conjunto de datos con nombre.
Este modelo de datos permite representar relaciones N: M 


LA DIFERENCIA ENTRE ELLOS:

Bueno la diferencia entre ellos es casi notoria pues si hablamos del modelo Relacional este Permite ampliar el esquema conceptual pero no  modificar las aplicaciones de gestión.
Además el modelo de red es una variación sobre el modelo jerárquico, al grado que es construido sobre el concepto de múltiples ramas (estructuras de nivel inferior) emanando de uno o varios nodos (estructuras de nivel alto), mientras el modelo se diferencia del modelo jerárquico en esto las ramas pueden estar unidas a múltiples nodos. El modelo de red es capaz de representar la redundancia en datos de una manera más eficiente que en el modelo jerárquico.

COMO CREAR UNA BASE DE DATO SQL SERVER:

Introducción:

En este artículo te explico los pasos que debes dar para crear una base de datos de SQL Server 2005 con el Management Studio. Además de ejecutar ciertos comandos "scripts" para crear una tabla y asignarle algunos datos.
Estos pasos son para crear la base de datos Pruebas Guille y la tabla Clientes. Además de añadirle algunos datos.
Para crear la tabla y añadir los datos, usarás dos ficheros con el código de T-SQL (Transact SQL) necesario para ejecutarlo desde una ventana de código del Management Studio.
Aquí te lo explico para la versión Express, pero es válido también para la versión "normal" del Management Studio de SQL Server 2005.



Los pasos que debes dar son:

1- Abre el Management Studio y selecciona la instancia en la que quieres trabajar, en la figura 1 es la instancia de SQLEXPRESS.

Figura 1. Conectar a un servidor de bases de datos con el Management Studio
Figura 1. Conectar a un servidor de bases de datos con el Management Studio

2- Con el botón derecho (o el botón secundario), pulsa en Bases de datos y del menú selecciona Nueva base de datos, tal como te muestro en la figura 2.

Figura 2. Crear una nueva base de datos
Figura 2. Crear una nueva base de datos

3- Eso hará que te muestre una ventana como la de la figura 3.
A la base de datos, le vas a dar el nombre PruebasGuille, así que escribe ese nombre en la caja de textos correspondiente y después pulsa en el botón Aceptar.


Figura 3. Cuadro de diálogo de Nueva base de datos
Figura 3. Cuadro de diálogo de Nueva base de datos

4- Ahora vamos a escribir el código para crear la tabla Clientes.
¡No te asustes! que no vas a escribir nada, ya que ese código lo puedes obtener de un fichero que ya tengas. En este caso, el que se acompaña con el código fuente del artículo de Auto completar usando una base de datos (o si lo prefieres: Buscar en una base de datos mientras se escribe).
5- En la base de datos que hemos creado, pulsa con el botón derecho del ratón para que te muestre el menú contextual, del que seleccionarás Nueva consulta, tal como puedes ver en la figura 4.

Figura 4. Crear una nueva consulta en Management Studio
Figura 4. Crear una nueva consulta en Management Studio

6- Eso hará que se muestre una ventana en el panel de la derecha (junto a la ficha Resumen).
7- Abre el fichero Crear la tabla de Clientes de PruebasGuille.sql con un editor de textos y selecciona todo el texto, lo copias y lo pegas en esa ventana.
7.1- También puedes abrir el fichero, en ese caso, te preguntará en que instancia, etc. lo quieres ejecutar (la misma pregunta que te hace en la figura 1).
8- Una vez que tienes el texto pegado en la ventana de consultas, pulsa en el botón Ejecutar (ver la figura 5), o bien pulsa la tecla F5.

Figura 5. Ejecutar la consulta
Figura 5. Ejecutar la consulta

9- Esto creará la tabla Clientes con los datos que se indican en el fichero que son los mismos que puedes ver en la figura 5.
10- Si expandes la base de datos y pulsas en Tablas, verás que ya está la tabla creada, tal como te muestro en la figura 6.

Figura 6. La tabla de Clientes ya está creada
Figura 6. La tabla de Clientes ya está creada

11- Ahora vamos a añadir unos cuantos datos.
12- Abre el fichero Agregar datos de ejemplo a la tabla Clientes de PruebasGuille.sql y copia el contenido y lo pegas en la misma ventana de consultas que tenemos.
12.1- Recuerda que también puedes abrir el fichero.
13- Una vez que tienes el código de inserción de los datos de ejemplo, pulsa nuevamente en Ejecutar y se añadirán esos datos.
14- Y si abres la tabla de Clientes para que te muestre lo que tiene, verás que será algo como lo que te muestro en la figura 7.

Figura 7. Los datos que acabamos de añadir a la tabla de Clientes
Figura 7. Los datos que acabamos de añadir a la tabla de Clientes

15- Y una vez que tienes estos datos en la base de datos, ya puedes usar el código, por ejemplo, el del artículo de buscar mientras se escribe, tal como ves en la figura 8.
Figura 8. Ya podemos acceder a los datos
Figura 8. Ya podemos acceder a los datos

Como te puedes imaginar, en la ventana de consulta puedes escribir el código de SQL que quieras, y así de camino pruebas cosas antes de usarla en tu código.


















DROP TABLE
La sentencia DROP TABLE sirve para eliminar una tabla. No se puede eliminar una tabla si está abierta, tampoco la podemos eliminar si el borrado infringe las reglas de integridad referencial (si interviene como tabla padre en una relación y tiene registros relacionados).
La sintaxis es la siguiente:
Ejemplo:
DROP TABLE tab1
Elimina de la base de datos la tabla tab1.


CREATE INDEX
La sentencia CREATE INDEX sirve para crear un índice sobre una o varias columnas de una tabla. Si quieres repasar conceptos básicos sobre índices haz clic aquí
La sintaxis es la siguiente:
nbindi: nombre del índice que estamos definiendo. En una tabla no pueden haber dos índices con el mismo nombre de lo contrario da error.
nbtabla: nombre de la tabla donde definimos el índice. A continuación entre paréntesis se indica la composición del índice (las columnas que lo forman).
nbcol: nombre de la columna que indexamos. Después del nombre de la columna podemos indicar cómo queremos que se ordenen las filas según el índice mediante las cláusulas ASC/DESC.
ASC: la cláusula ASC es la que se asume por defecto e indica que el orden elegido para el índice es ascendente (en orden alfabético si la columna es de tipo texto, de menor a mayor si es de tipo numérico, en orden cronológico si es de tipo fecha).
DESC: indica orden descendente, es decir el orden inverso al ascendente.
Podemos formar un índice basado en varias columnas, en este caso después de indicar la primera columna con su orden, se escribe una coma y la segunda columna también con su orden, así sucesivamente hasta indicar todas las columnas que forman el índice.
Opcionalmente se pueden indicar las cláusulas:
WITH PRIMARY indica que el índice define la clave principal de la tabla, si la tabla ya tiene una clave principal, la sentencia CREATE INDEX dará error.
WITH DISALLOW NULL indica que no permite valores nulos en las columnas que forman el índice.
WITH IGNORE NULL indica que las filas que tengan valores nulos en las columnas que forman el índice se ignoran, no aparecen cuando recuperamos las filas de la tabla utilizando ese índice.

Ejemplo:
CREATE UNIQUE INDEX ind1 ON clientes (provincia, poblacion ASC, fecha_nacimiento DESC)
Crea un índice llamado ind1 sobre la tabla clientes formado por las columnas provincia, población y fecha_nacimiento. Este índice permite tener ordenadas las filas de la tabla clientes de forma que aparezcan los clientes ordenados por provincia, dentro de la misma provincia por población y dentro de la misma población por edad y del más joven al más mayor.
Al añadir la cláusula UNIQUE el índice no permitirá duplicados por lo que no podría tener dos clientes con la misma fecha de nacimiento en la misma población y misma provincia, para evitar el poblema sería mejor utilizar:
CREATE INDEX ind1 ON clientes (provincia, poblacion ASC, fecha_nacimiento DESC)

DROP INDEX
La sentencia DROP INDEX sirve para eliminar un índice de una tabla. Se elimina el índice pero no las columnas que lo forman.
La sintaxis es la siguiente:
Ejemplo:
DROP INDEX ind1 ON clientes
Elimina el índice que habíamos creado en el ejemplo anterior.

Sintaxis de CREATE TRIGGER

CREATE TRIGGER nombre_disp momento_disp evento_disp
 ON nombre_tabla FOR EACH ROW sentencia_disp
Un disparador es un objeto con nombre en una base de datos que se asocia con una tabla, y se activa cuando ocurre un evento en particular para esa tabla.
El disparador queda asociado a la tabla nombre_tabla. Esta debe ser una tabla permanente, no puede ser una tabla TEMPORARY ni una vista.

Momento_disp es el momento en que el disparador entra en acción. Puede ser BEFORE (antes) o AFTER (despues), para indicar que el disparador se ejecute antes o después que la sentencia que lo activa.
evento_disp indica la clase de sentencia que activa al disparador. Puede ser INSERT, UPDATE, o DELETE. Por ejemplo, un disparador BEFORE para sentencias INSERT podría utilizarse para validar los valores a insertar.
No puede haber dos disparadores en una misma tabla que correspondan al mismo momento y sentencia. Por ejemplo, no se pueden tener dos disparadores BEFORE UPDATE. Pero sí es posible tener los disparadores BEFORE UPDATE y BEFORE INSERT o BEFORE UPDATE y AFTER UPDATE.
sentencia_disp es la sentencia que se ejecuta cuando se activa el disparador. Si se desean ejecutar múltiples sentencias, deben colocarse entre BEGIN ... END, el constructor de sentencias compuestas. Esto además posibilita emplear las mismas sentencias permitidas en rutinas almacenadas.


Note: Antes de MySQL 5.0.10, los disparadores no podían contener referencias directas a tablas por su nombre. A partir de MySQL 5.0.10, se pueden escribir disparadores como el llamado testref, que se muestra en este ejemplo:
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
  a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
  b4 INT DEFAULT 0
);

DELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON test1
  FOR EACH ROW BEGIN
    INSERT INTO test2 SET a2 = NEW.a1;
    DELETE FROM test3 WHERE a3 = NEW.a1;  
    UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
  END
|

DELIMITER ;

INSERT INTO test3 (a3) VALUES 
  (NULL), (NULL), (NULL), (NULL), (NULL), 
  (NULL), (NULL), (NULL), (NULL), (NULL);

INSERT INTO test4 (a4) VALUES 
  (0), (0), (0), (0), (0), (0), (0), (0), (0), (0);
Si en la tabla test1 se insertan los siguientes valores:
mysql> INSERT INTO test1 VALUES 
    -> (1), (3), (1), (7), (1), (8), (4), (4);
Query OK, 8 rows affected (0.01 sec)
Records: 8  Duplicates: 0  Warnings: 0
Entonces los datos en las 4 tablas quedarán así:
mysql> SELECT * FROM test1;
+------+
| a1   |
+------+
|    1 |
|    3 |
|    1 |
|    7 |
|    1 |
|    8 |
|    4 |
|    4 |
+------+
8 rows in set (0.00 sec)

mysql> SELECT * FROM test2;
+------+
| a2   |
+------+
|    1 |
|    3 |
|    1 |
|    7 |
|    1 |
|    8 |
|    4 |
|    4 |
+------+
8 rows in set (0.00 sec)

mysql> SELECT * FROM test3;
+----+
| a3 |
+----+
|  2 |
|  5 |
|  6 |
|  9 |
| 10 |
+----+
5 rows in set (0.00 sec)

mysql> SELECT * FROM test4;
+----+------+
| a4 | b4   |
+----+------+
|  1 |    3 |
|  2 |    0 |
|  3 |    1 |
|  4 |    2 |
|  5 |    0 |
|  6 |    0 |
|  7 |    1 |
|  8 |    1 |
|  9 |    0 |
| 10 |    0 |
+----+------+
10 rows in set (0.00 sec)

Las columnas de la tabla asociada con el disparador pueden referenciarse empleando los alias OLD y NEW. OLD.nombre_col hace referencia a una columna de una fila existente, antes de ser actualizada o borrada. NEW.nombre_col hace referencia a una columna en una nueva fila a punto de ser insertada, o en una fila existente luego de que fue actualizada.
El uso de SET NEW.nombre_col = valor necesita que se tenga el privilegio UPDATE sobre la columna. El uso de SET nombre_var = NEW.nombre_col necesita el privilegio SELECT sobre la columna.
Nota: Actualmente, los disparadores no son activados por acciones llevadas a cabo en cascada por las restricciones de claves extranjeras. Esta limitación se subsanará tan pronto como sea posible.
La sentencia CREATE TRIGGER necesita el privilegio SUPER. Esto se agregó en MySQL 5.0.2.





  •