¿Qué es una configuración básica o típica para una aplicación que utiliza bases de datos SQL y NoSQL?

Tengo dos para ti.

La primera vez que usé una base de datos NoSQL fue para evitar que mi base de datos RDBMS cayera a> 300k escrituras por segundo. También quería que se redujera mi costo total de propiedad de HA / DR.

Usé Voldemort como un almacén de valores de clave transaccional que fácilmente podría romper 600k tps. Dejé las pruebas de estrés en ese punto. Podría haber hecho más.

También hice consultas tácticas simples del almacén de valores clave, como cuántas transacciones en la última hora, minuto, etc.

Solo guardé unos días de datos en el almacén de valores clave.

Corrí lotes cada hora en un RDBMS de todas las transacciones válidas, lo cual fue trivial para mí. Tenía diferentes estrategias de agregación que se actualizaron según fuera necesario en diferentes intervalos de tiempo. 4 horas 12 horas diarias, semanales, mensuales. Podría haber utilizado el almacén de valores clave para algo de esto, pero no para todo. Fue trivial para mí hacerlo al 100% en el RDBMS, así que lo hice. Si tuviera que volver a hacerlo desde cero, lo habría hecho un poco diferente, pero era una buena solución.

Lo siguiente vino del RDBMS

  • informes estratégicos
  • datos de referencia (también conocidos como búsqueda)
  • cliente también conocido como CRM
  • Datos del producto

En general funcionó bien.

Actualmente estoy construyendo un nuevo tipo de base de datos Enterprise mientras hablamos. El objetivo es utilizar S3, HDFS, también conocidos como servicios Hadoop, Dynamo y bases de datos relacionales, según sea lógico. Todos estarán envueltos en micro servicios con una capa de orquestación ligera.

Te recomendaría que eches un vistazo a Postgre. La versión 9.4 admite JSONB que, en esencia, le permite usarlo como un NoSQL db si lo desea. Puede usarlo como tal, como una base de datos SQL relacional o incluso combinar ambos.

Imagine tener una base de datos sin esquema con transacciones. Muy genial.

Si está utilizando node.js, eche un vistazo a Massive: https://github.com/robconery/mas
Es una biblioteca que le da un estilo NoSQL de usar Postgre.

Si no es libre de elegir los motores de su base de datos, aún puede usar db’s sin esquema y relacionales en una aplicación envolviendo el acceso / conexiones db en su propia capa db. De esta manera, puede escribir código de aplicación que no se base en el conocimiento de cómo se almacenan los datos. Esto te deja libre para cambiar el tipo de almacenamiento más tarde. Prefiero usar un “Repositorio” para esto, y una configuración para cambiar entre tipos de db. Una ventaja es que puede aumentar / probar utilizando una implementación de memoria del repositorio.

Algunas bibliotecas / ORM le permiten usar múltiples bases de datos listas para usar. Para el nodo, he usado Loopback que tiene un “malabarista de fuente de datos”. Es bastante útil para CRUD básico e incluso genera una API REST automáticamente. Tiene conectores para todas las bases de datos principales.

More Interesting

Se dice que copiar código es malo, pero ¿qué tal copiar solo patrones y arquitectura de software?

¿Puede un licenciado en ingeniería biomédica hacer una maestría en ingeniería de software con un promedio de 3.23?

¿Qué consejo le darías a un estudiante de último año de CS que no pudo obtener pasantías?

Para los ingenieros de software, ¿es productivo su entorno de desarrollador en el trabajo?

¿Cómo aprenden los informáticos todo lo que necesitan saber para comenzar su propia compañía de software?

¿Las compañías de software prestigiosas usan regularmente UML?

¿Cuáles son las preguntas de entrevista más comunes para un puesto de desarrollo de software integrado de nivel básico?

¿Cuáles son las mejores tecnologías, marcos y hosting para usar para implementar una aplicación web similar a Groupon (pero no utilizada internacionalmente)?

¿Es necesario aprender a programar muy bien para desarrollar software y sistemas de TI?

Profesionales ágiles, ¿cómo gestionan su ciclo de vida de mantenimiento?

¿Por qué la computadora no puede reconocerte con su cámara y confirmar quién eres con su micrófono?

Me encanta codificar y crear aplicaciones, pero no tengo un gran interés ni soy muy bueno en algoritmos. ¿Significa esto que la ingeniería de software no es la profesión adecuada para mí?

¿Cómo trabajan los arquitectos de software con el personal de programación?

¿Por qué alguien elegiría Git sobre Bazaar para el control de versiones?

Como desarrollador, ¿elegiría el monitor Samsung CHG90 (49 ") o LG 38UC99 (38") y por qué?