sintaxis - ¿Es SimpleDB similar a MongoDB? ¿Son ambas bases de datos de tipo clave/valor?
mongodb vs dynamodb 2018 (4)
Intente verificar este enlace MongoDB vs. SimpleDB es una cuadrícula de comparación. Espero que te sea de utilidad.
¿Es SimpleDB similar a MongoDB?
La similitud más sustancial es el hecho de que ambos evitan el modelo relacional. Aparte de eso, son principalmente diferentes de cualquier forma en que los mires. Aquí hay un desglose de una docena de formas para compararlas.
SimpleDB
- Un servicio de Amazon alojado, mantenido y escalado por Amazon. Se le facturará por lo que use cada mes más allá del nivel de uso gratuito.
- Todos los datos se replican en vivo en segundo plano en múltiples centros de datos
- Todas las réplicas son capaces de atender solicitudes en vivo.
- Después de una falla de la red o del servidor, cualquier nodo desincronizado se volverá a sincronizar automáticamente
- La replicación en segundo plano da como resultado una consistencia eventual pero una mayor disponibilidad (teórica)
- Todos los datos se almacenan como pares de nombre de cadena / valor de cadena, cada uno asociado con un ItemName
- Cada elemento está limitado a medio megabyte (cada nombre o valor solo puede tener una longitud de 1024 bytes, cada elemento contiene 256 pares de nombre / valor) y cada dominio puede contener 10 GB
- Estos límites lo hacen adecuado para conjuntos de datos que se pueden dividir en partes pequeñas.
- SimpleDB está optimizado para muchas solicitudes pequeñas ejecutadas en paralelo
- Se han establecido límites de rendimiento para cada dominio de datos.
- La escalabilidad horizontal se logra mediante la distribución de sus datos a más dominios
- Todos los valores de los atributos se indexan automáticamente, los índices compuestos no existen (pero se pueden simular)
- Las consultas se realizan utilizando un lenguaje de consulta similar a SQL Select
MongoDB
- Un producto de código abierto que instala y mantiene en sus propios servidores.
- Los datos se pueden replicar en modo maestro-esclavo
- Solo el maestro puede atender las solicitudes de escritura en vivo, el esclavo puede atender consultas (excepto en el modo no recomendado de maestro maestro limitado)
- Después de una falla de la red o del servidor o cuando una réplica se retrasa demasiado, siempre será necesaria la intervención del operador.
- El maestro único es muy consistente.
- Todos los datos se almacenan como documentos JSON serializados, lo que permite un gran conjunto de tipos de datos
- Cada documento está limitado a 4 MB, los documentos más grandes se pueden almacenar utilizando un sistema especial de fragmentación de documentos
- Más adecuado para datos pequeños y medianos, y pequeños objetos binarios.
- Los límites de rendimiento son dictados por MongoDB y su hardware
- Escalabilidad vertical a través de un servidor más grande, potencial para una futura escalabilidad horizontal en su propio clúster de servidores a través de un módulo de fragmentación actualmente en desarrollo.
- La identificación del documento se indexa automáticamente. Los índices se pueden crear y eliminar según sea necesario. Los índices pueden ser para una sola clave o compuesto.
- Las consultas se realizan utilizando un lenguaje de consulta de estilo JSON.
SimpleDB se describe como :
El modelo de datos es simplemente:
- Grandes colecciones de artículos organizados en dominios.
- Los elementos son pequeñas tablas hash que contienen atributos de clave, pares de valores.
- Los atributos se pueden buscar con varias consultas lexicográficas.
MongoDB es un poco más simple :
La base de datos administra colecciones de documentos similares a JSON que se almacenan en un formato binario denominado BSON.
Tengo un buen conocimiento de mongodb y recién comencé a trabajar con SimpleDB. Así que, en primer lugar, ambos no son almacenamiento de valor clave . Mongodb y SimpleDB es una base de datos nosql basada en documentos que están libres de esquemas. Esto significa que no es necesario crear un esquema para una ''tabla'' antes de ingresar los datos (básicamente significa que puede almacenar allí todo lo que desee).
Básicamente aquí termina la similitud. Usaré S para SimpleDB y M para Mongo.
- M está escrito en C ++, S está escrito en Erlang (no es el lenguaje más rápido)
- M es de código abierto, instalado en todas partes, S es propietario, solo puede ejecutarse en Amazon AWS. También debe pagar por un montón de personal para S
- S tiene un montón de extrañas limitaciones . Las limitations M son mucho más razonables. Las limitaciones más extrañas son:
- El tamaño máximo de dominio (tabla) es de 10 GB.
- la longitud del valor del atributo (tamaño del campo) es 1024 bytes
- elementos máximos en respuesta de selección - 2500
- Tamaño máximo de respuesta para Select (la cantidad máxima de datos que S puede devolverle) - 1Mb
- S admite solo algunos idiomas (java, php, python, ruby, .net), M admite mucho más
- ambos apoyan REST
- S tiene una sintaxis de consulta muy similar a SQL (pero mucho menos potente). Con M necesitas aprender una nueva sintaxis que se parece a json (también es sencillo aprender lo básico)
- con M tienes que aprender a diseñar tu base de datos. Debido a que mucha gente piensa que lo desagradable significa que puede tirar cualquier basura en la base de datos y extraerla con facilidad, puede que se sorprenda de que Junk, Junk out maxim funciona. Supongo que lo mismo está en S, pero no puedo reclamarlo con certeza.
- Ambos no permiten búsqueda de mayúsculas y minúsculas. En M, puede usar expresiones regulares para superar de alguna manera (feo / sin índice) esta limitación sin introducir la lógica de campo / aplicación en minúscula adicional.
- en S la clasificación se puede hacer solo en un campo
- Debido a 5s, el conteo de tiempo en S puede comportarse de manera extraña . Si pasaron 5 segundos y la consulta no ha finalizado, terminará con un número parcial y un token que le permitirá continuar con la consulta. La lógica de la aplicación es responsable de recopilar todos estos datos y resumirlos.
- todo es una cadena UTF-8 , lo que hace que sea difícil trabajar con valores que no son cadenas (como números, fechas) en el soporte de tipo S. M es mucho más rico .
- Ambos no tienen transacciones y se unen
- M es compatible con la compression que es realmente útil para las tiendas nosql, donde el mismo nombre de campo se almacena nuevamente.
- S admite solo un índice único, M tiene un solo, compuesto, multi-clave, geoespacial, etc.
- ambos soportan replicación y fragmentación
Una de las cosas más importantes que debe considerar es que SimpleDB tiene un lenguaje de consulta muy rudimentario. Incluso las cosas básicas como group by
, sum
, distinct
, así como la manipulación de datos, no son compatibles, por lo que la funcionalidad no es realmente más rica que Redis / Memcached. Por otro lado, Mongo soporta un rico lenguaje de consulta.