Cómo abordar la elección de una arquitectura y diseño de base de datos

La respuesta es, depende”.

Creo que el factor clave es qué tipo de aplicación es y quién es su público objetivo.

Por ejemplo, una aplicación de línea de negocio generalmente tiene una audiencia predecible, es decir, 200 usuarios / empleados. Es poco probable que necesite escalar rápidamente, y en muchos casos las aplicaciones LOB requerirán que modele un dominio complejo, y a veces esto es un poco más fácil con las bases de datos relacionales.

Por otro lado, si el back-end es para un sitio web público, uno que podría generar cantidades de tráfico grandes e impredecibles, entonces puede considerar usar alguna forma de NoSQL (si es posible), o si está usando una consideración relacional alojándolo en la nube, entonces, si la base de datos se está machacando, puede escalar verticalmente (tenga en cuenta que existen límites para el escalado vertical y el rendimiento no es lineal al costo, por lo que puede ser costoso).

La alternativa para escalar bases de datos relacionales es utilizar una técnica conocida como fragmentación. Esto es esencialmente una partición horizontal de la base de datos. Le permitirá distribuir la carga en varias bases de datos, sin embargo, este enfoque es un poco más complicado de implementar y creo que es más difícil abstraer su lógica de negocios de la base de datos. Sin embargo, fragmentar le dará la capacidad de escalar más que de escalar. El uso de hardware comercializado y distribución horizontal es la forma en que la mayoría de las grandes empresas logran escalar en la web.

Debo señalar que tampoco hay ninguna razón por la que no puedas disfrutar lo mejor de ambos mundos. La persistencia políglota se refiere al uso de múltiples tecnologías de almacenamiento para el back-end. Por ejemplo, un db + NoSQL + xml relacional. Un ejemplo del mundo real sería usar una base de datos relacional para almacenar datos relacionales complejos y usar el NoSQL donde necesita rendimiento, es decir, lecturas rápidas.

Otras cosas a considerar:

  • Si está creando prototipos, no importa tanto. Para los POC rápidos, me gustan los db NoSQL porque requieren menos esfuerzo. Sin embargo, también depende de la complejidad del modelo de datos.
  • Almacenamiento en caché: ya sea utilizando NoSQL o relacional, el almacenamiento en caché puede mejorar drásticamente su rendimiento
  • Optimización de consultas: preste atención a cómo crea sus consultas, puede tener un gran impacto en el rendimiento
  • No tenga miedo de desnormalizar los datos. Durante mucho tiempo fue tabú no seguir las prácticas de normalización, pero en algunas situaciones está perfectamente bien desnormalizar algunos de sus datos en su base de datos relacional. Por ejemplo, podría tener tablas relacionales separadas para todas sus necesidades de escritura y luego replicar algunos de los datos en tablas de solo lectura para el rendimiento. Presenta cierta redundancia, pero reduce problemas como el bloqueo de la tabla, y también mejora el rendimiento de lectura si se diseña bien porque puede evitar combinaciones costosas. No dejes que los DBA te digan que es una mala idea. Puede ser muy útil a veces.

Depende totalmente del requisito.

SQL vs NoSQL Diferencias en la base de datos explicadas con pocos DB de ejemplo

Uno puede pasar por esto

Pero aún así mi lista de deseos es la siguiente

Esquemas:

La mayoría de las bases de datos NoSQL son sin esquema o esquema dinámico. Cuando el requisito es muy estricto y seguro, es mejor optar por SQL o, de lo contrario, cualquier usuario nuevo / novato arruinará la base de datos.

Aplicaciones de seguridad: busque el tipo de base de datos RDBMS

Recopilación de datos grandes -> tipo de base de datos NoSQL

tabla / colección separación y relaciones

RDBMS es muy adecuado para gestionar relaciones. Vista inteligente, asignación inteligente, mantenimiento inteligente, es más fácil de administrar

escalabilidad y disponibilidad

Oracle (RDBMS)

apoyo

MongoDB, Couch admite una copia de seguridad más sencilla, ya que originalmente siguen los documentos JSON.

Todos los conceptos se usan viceversa también. Sin embargo, para algunos factores, como la gestión de relaciones / escalabilidad, RDBMS es el mejor y para NOSQL de respaldo / portabilidad / rentable es el mejor.

Espero que ayude

https://www.facebook.com/priyara

Elijo SQL, porque estoy familiarizado con el lenguaje y sus capacidades.

Los esquemas / tablas / separación de colecciones y las relaciones están dictados por la naturaleza de los datos; no hay una regla general que se aplique en todos los casos.

La escalabilidad es algo automática, a menos que esté construyendo una base de datos que contenga toda la información sobre cada persona en la Tierra. Probablemente estará limitado por el tamaño del archivo, no por la base de datos.

¿Apoyo? Veamos, tenemos que desenterrarlo de debajo de la tumba del bisabuelo de hoy. Copia de seguridad diaria. Reutilice todas las copias de seguridad excepto el viernes, durante todo el mes. Mantenga el último viernes de respaldo el próximo mes. Al final del año, tiene 12 copias de seguridad permanentes más 6 copias de seguridad que se reutilizan cada semana. (Una copia de seguridad total de todo el sistema, luego copias de seguridad incrementales a partir de ese momento). Utilizamos ese esquema con cintas magnéticas DC-600, y era antiguo en aquel entonces.

¿Disponibilidad? Por lo general, no puede elegir, usa el que está allí, ya sea MySQL, MariaDB, Oracle (o RDB7, que fue lo que instalé en mi último trabajo).

Me gustaría ver el tamaño de los datos. Para tablas pequeñas, puede usar la base de datos SQL tradicional y realizar varias pruebas complejas. Para tablas grandes, es difícil o muy lento hacer consultas complejas. La base de datos de Jaguar es NoSQL pero tiene soporte de unión para igualdad interna, une dos tablas. Jaguar proporciona la capacidad, pero depende del usuario usarla o no. Tiene un tiempo de espera de todos modos.

Diseño la arquitectura general del software. La naturaleza de los datos, las estructuras de datos, los flujos de datos, los tipos de operaciones a realizar. Qué base de datos usar se vuelve obvia.

Generalmente requiere saber algo sobre las opciones de bases de datos disponibles y cómo hacer evaluaciones técnicas y compensaciones.

Ningún sql es ideal para sistemas pequeños o cachés. Comience con ellos, porque son simples, simplemente no se quede con ellos.