Tabla comparativa SQL y NoSQL


Manejadores
Tipo
Características
Capacidad de registros
Access
SQL
* Los usuarios pueden crear tablas, consultas, formularios e informes y conectarlos con macros.
* Opción de importar y exportar los datos a muchos formatos incluyendo Excel, Outlook, ASCII, dBase, Paradox, FoxPro, SQL Server, Oracle, ODBC, etc.
* También está el formato de base de datos Jet (MDB o ACCDB en Access 2007), que puede contener la aplicación y los datos en un archivo. Esto hace muy conveniente para distribuir la aplicación completa a otro usuario, que puede ejecutarla en entornos desconectados.
* Microsoft Access ofrece consultas parametrizadas. Estas consultas y tablas Access se pueden referenciar desde otros programas como VB6 y .NET a través de DAO o ADO.
* Las ediciones de escritorio de Microsoft SQL Server se pueden utilizar con Access como alternativa al motor de base de datos de Jet.
* Microsoft Access es una base de datos basada en un servidor de archivos. A diferencia de los sistemas de administración de bases de datos relacionales cliente-servidor (RDBMS), Microsoft Access no implementa desencadenadores de base de datos, procedimientos almacenados o registro de transacciones.
6,618,624
MySQL
SQL
* Uso de transacciones ACID (Atomic, Consistent Isolated, Durable): Para construir aplicaciones más seguras mediante commit, rollback, crash recovery y bloqueo por registro.
* Store Procedures: Para mejorar la programación.
* Triggers: Para mejorar las reglas del negocio.
* Vistas: Para que la información sensible sea más segura.
* Information Schema: Para un fácil acceso a los metadatos.
* Transacciones Distribuidas(XA): Para soportar transacciones entre múltiples ambientes de bases de datos.
1.073.741.824
SQL server
SQL
* Soporte de transacciones.
* Escalabilidad, estabilidad y seguridad.
* Soporta procedimientos almacenados.
* Incluye también un potente entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente.
* Permite trabajar en modo cliente-servidor, donde la información y datos se alojan en el servidor y las terminales o clientes de la red sólo acceden a la información.
* Además permite administrar información de otros servidores de datos.
Depende del tipo de data que use esa columna.
- tinyint (255)
- smallint (32,767)
- int (2,147,483,647)
- bigint (9,223,372,036,854,775,807)
- numeric(38, 0) (10^38)
María DB
SQL
* MariaDB maneja hasta 32 segmentos clave por clave
* Se agregó –abort-source-on-error al cliente mysql
* Precisión de microsegundos en la lista de procesos
* Pool de hilos de ejecución o procesos
* Eliminación de tablas
* Extensiones de prueba mysqltest
* Columnas virtuales
* Estadísticas extendidas para el usuario
* Caché de claves segmentadas
* Autenticación a través de plugins
* Especificación de motor de almacenamiento en CREATE TABLE
* Mejoras a la tabla INFORMATION SCHEMA.PLUGINS
* Se agregó –rewrite-db como opción en mysqlbinlog al cambiar de base de datos usada
* Reporte de Procesos para ALTER TABLE y LOAD DATA INFILE
DB2
SQL
Permite el manejo de objetos grandes (hasta 2 GB), la definición de datos y funciones por parte del usuario, el chequeo de integridad referencial, SQL recursivo, soporte multimedia: texto, imágenes, video, audio; queries paralelos, commit de dos fases, backup/recuperación on−line y offline.
Además cuenta con un monitor gráfico de performance el cual posibilita observar el tiempo de ejecución de una sentencia SQL y corregir detalles para aumentar el rendimiento.
Mediante los extensores se realiza el manejo de los datos no tradicionales, por ejemplo si tengo un donde tengo almacenados los curriculums de varias personas, mediante este puedo realizar búsquedas documentos con los datos que me interesen sin tener que ver los CV uno por uno.
Esta capacidad se utiliza en sistemas de búsqueda de personas por huellas digitales, en sistemas información geográfica, etc.
Internet es siempre la gran estrella, con DB2 es posible acceder a los datos usando JDBC (tan potente como escribir directamente C contra la base de datos), Java y SQL (tanto el SQL estático, como complementa el SQL dinámico).
- Plataformas host:
OS/390(MVS), VM & VSE, OS/400
- Plataformas de servidor:
OS/2 Warp Server, Sinix, SCO Openserver, Windows NT, Aix, HP Ux, Solaris.
- Plataformas Cliente:
OS/2, DOS, Sinix, SCO OpenServer, Windows 3.1/95/NT, Macintosh System 7, Aix, HP Ux, Solaris.
10,000
ProstgreSQL
SQL
* El lenguaje SQL que usa es muy próximo al estándar ISO/IEC, gracias a lo que resulta relativamente sencillo portar consultas y scripts de otros sistemas de bases de datos, y así aprender fácilmente las variantes de este lenguaje.
* Cumple con ACID, es decir provee atomicidad, consistencia, aislamiento y durabilidad para sus operaciones.
* Permite crear esquemas, tablas heredadas y triggers orientados a eventos que no poseen otros motores.
* Permite definir procedimientos, no solo en PostgreSQL, sino también en otros muchos lenguajes como Pearl, TCL o Python. Incluso si lenguaje que queramos usar no está soportado, podemos definirlo con nuevas extensiones.
* Si necesitamos algún tipo de dato que no esté soportado de serie, también podemos definirlos.
* Podemos extender la funcionalidad con extensiones , provistas por la propia PostgreSQL, por terceros o incluso programando por nuestra cuenta.
* Tiene un soporte nativo de replicación maestro-esclavo, pero también es posible añadir otros tipos a través de productos de terceros, libres o de pago.
* También provee una excelente escalabilidad vertical.
sin limite
SQLite
SQL
* La base de datos completa se encuentra en un solo archivo.
* Puede funcionar enteramente en memoria, lo que la hace muy rápida.
* Tiene un footprint menor a 230KB.
* Es totalmente auto contenida (sin dependencias externas).
* Cuenta con librerías de acceso para muchos lenguajes de programación.
* Soporta texto en formato UTF-8 y UTF-16, así como datos numéricos de 64 bits.
* Soporta funciones SQL definidas por el usuario (UDF).
* El código fuente es de dominio público y se encuentra muy bien documentado.
  • Longitud máxima de una cadena o un BLOB, por defecto es 1 billón de bytes.
  • El número máximo de columnas por defecto es 2000 (configurable a 32767) aunque un buen diseño por muy complejo que sea se estima que no debe superar las 100.
  • Tamaño máximo de la base de datos son 140 Terabytes. Aunque no se han realizado pruebas con valores superiores por que los desarrolladores no tienen acceso a un hardware de esas características. Sin embargo, se comporta correctamente cuando alcanza el tamaño máximo del sistema de archivos del sistema operativo que contiene la base de datos. En Android el sistema de ficheros mas común es YAFFS que no se acerca ni de lejos.
  • El número máximo de filas en una tabla es 264 que es teóricamente inalcanzable ya que llegaríamos antes a límite del tamaño de la base de datos.
  • El numero máximo de tablas está sobre los 2 billones.
Cassandra
NoSQL
* Arquitectura escalable: gracias a un diseño masterless, en el que todos los nodos son iguales, lo que ofrece simplicidad operativa y fácil escalabilidad horizontal.
* Diseño activo de principio a fin: ya que en todos los nodos se puede escribir y leer.
* Rendimiento a escala lineal: la posibilidad de añadir nodos sin tener que frenar el ritmo produce aumentos en el rendimiento.
* Disponibilidad continua: elimina los puntos únicos de fallo y proporciona un tiempo de actividad constante.
* Detección de fallos y recuperación transparente: para nodos que no pueden ser fácilmente restaurados o reemplazados.
* Modelo de datos flexible y dinámico: que soporta tipos de datos modernos para lectura y escritura rápida.
* Protección de datos sólida: un diseño de registro de confirmación evita la pérdida de datos y construye copias de seguridad para facilitar la restauración a la vez que se mantienen los datos protegidos y seguros.
* Consistencia de los datos sintonizable: de esta forma, Cassandra base de datos ofrece apoyo a la consistencia de los datos en un clúster ampliamente distribuido.
* Replicación de datos multi-centro: se trata de un centro de datos transversal (en diferentes zonas geográficas) que recibe el el apoyo de múltiples zonas de disponibilidad en la nube tanto para escritura como para lectura.
* Compresión de datos: garantiza que los datos se comprimirán hasta un 80% sin que ello suponga un gasto de recursos.
* CQL (Lenguaje de Consulta Cassandra): un lenguaje similar a SQL que consigue que la transición desde una base de datos relacional sea muy sencilla.
MongoDB
NoSQL
* Consultas ad hoc . Con MongoDb podemos realizar todo tipo de consultas. Podemos hacer búsqueda por campos, consultas de rangos y expresiones regulares. Además, estas consultas pueden devolver un campo específico del documento, pero también puede ser una función JavaScript definida por el usuario.
* Indexación . El concepto de índices en MongoDB es similar al empleado en bases de datos relacionales, con la diferencia de que cualquier campo documentado puede ser indexado y añadir múltiples índices secundarios.
* Replicación . Del mismo modo, la replicación es un proceso básico en la gestión de bases de datos. MongoDB soporta el tipo de replicación primario-secundario. De este modo, mientras podemos realizar consultas con el primario, el secundario actúa como réplica de datos en solo lectura a modo copia de seguridad con la particularidad de que los nodos secundarios tienen la habilidad de poder elegir un nuevo primario en caso de que el primario actual deje de responder.
* Balanceo de carga . Resulta muy interesante cómo MongoDB puede escalar la carga de trabajo. MongoDB tiene la capacidad de ejecutarse de manera simultánea en múltiples servidores, ofreciendo un balanceo de carga o servicio de replicación de datos, de modo que podemos mantener el sistema funcionando en caso de un fallo del hardware.
* Almacenamiento de archivos . Aprovechando la capacidad de MongoDB para el balanceo de carga y la replicación de datos, Mongo puede ser utilizado también como un sistema de archivos. Esta funcionalidad, llamada GridFS e incluida en la distribución oficial, permite manipular archivos y contenido.
* Ejecución de JavaScript del lado del servidor. MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas.
Redis
NoSQL
* Increíblemente rápido. Los datos se encuentran en la memoria principal, a diferencia de otros sistemas que se encuentran en SSD o disco duro convencional. Como se elimina el acceso a esos discos, se evitan retrasos: se accede y se opera mucho más rápido.
* Estructuras de datos en memoria.  Con Redis podemos guardar claves de diferentes tipos de datos y disponemos de un tamaño máximo de 512MB para una cadena, ya sea texto o datos binarios. También admite listas de cadenas, conjuntos de cadenas sin orden, conjuntos clasificados por puntuación, hashes e HyperLogLogs. Es decir, podemos almacenar en la memoria prácticamente cualquier tipo de dato.
* Replicación y persistencia. Como comentamos antes, Redis hace uso de una arquitectura maestro-esclavo y acepta la replicación asíncrona que hace que pueda copiar datos en multitud de servidores esclavos. Con esto se mejoran las lecturas y la recuperación cuando falla el servidor principal.
* Compatibilidad con casi cualquier lenguaje. Los que quieran desarrollar en Redis, pueden hacerlo con multitud de lenguajes de programación, como por ejemplo Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go y muchos más.
CouchDB
NoSQL
* Almacenamiento de documentos
    CouchDB almacena los datos como "documentos", esto es, uno o más pares campo/valor expresados en JSON. Los valores de los campos pueden ser datos simples como cadenas de caracteres, números o fechas. Pero también se pueden usar listas ordenadas y vectores asociativos. Todos los documentos en una base de datos CouchDB tienen un identificador único y no requieren un esquema determinado.
* Semántica ACID
    CouchDB provee una semántica de atomicidad, consistencia, aislamiento y durabilidad.8​ Lo hace implementando una forma de control de concurrencia multiversión, lo que significa que CouchDB puede manejar un gran número de lectores y escritores en paralelo, sin que surjan conflictos.
* Vistas e índices Map/Reduce
    Los datos almacenados se estructuran por medio de vistas. En CouchDB, cada vista se construye por medio de una función JavaScript que actúa como la mitad Map de una operación map/reduce. La función recibe un documento y lo transforma en un único valor, retornándolo. CouchDB puede indexar vistas y mantener actualizados esos índices a medida de que se agregan, eliminan o actualizan documentos.
* Arquitectura distribuida con replicación
    CouchDB se diseñó con teniendo en mente la replicación bidireccional (o sincronización) y la operación off-line. Eso significa que múltiples réplicas pueden tener cada una sus propias copias de los mismos datos, modificarlas y luego sincronizar esos cambios en un momento posterior.
* Interfaz REST
    Todos los ítems tienen una URI única que queda expuesta vía HTTP. REST usa los métodos HTTP POST, GET, PUT y DELETE para las cuatro operaciones básicas CRUD (Create, Read, Update, Delete) con todos los recursos.
* Consistencia Eventual
    CouchDB garantiza consistencia eventual para poder ofrecer tanto disponibilidad como tolerancia a las particiones.
* Hecha para operar offline
    CouchDB puede replicar datos a dispositivos (como smartphones) que pueden quedar offline y manejar automáticamente la sincronización de los datos cuando el dispositivo vuelve a estar en línea.

* CouchDB también ofrece una interfaz de administración incorporada y accesible vía web llamada Futon.
Oracle estándar 72,000 pesos
edición de empresas
195,600 pesos
SQL y NoSQL
Oracle es básicamente una herramienta cliente/servidor para la gestión de Bases de Datos.
-Soporte de transacciones.
-Estabilidad.
-Escalabilidad.
-Multiplataforma.
40 a 50 millones de registros

Comentarios

Entradas más populares de este blog

Ejercicios en PyCharm

1.1 Aplicaciones gráficas por computadora.

Ensayo de lenguaje ensamblador