Cuando se trata de aplicaciones grandes con una gran base de datos que contiene millones de registros, pronto se da cuenta de que las selecciones simples, las actualizaciones, las inserciones y las eliminaciones simplemente no son suficientes.
Entonces comienzas a pensar de una manera diferente. Creas procedimientos y disparadores para ocuparte de cosas más complicadas directamente en la base de datos y esto no es muy bueno. Las bases de datos ofrecen un gran rendimiento al realizar operaciones CRUD. Procedimientos largos? No tanto.
El problema con los procedimientos.
Ahora imagine que cambia a una base de datos que no admite el concepto de procedimientos. ¿Qué vas a hacer? En su lugar, se ve obligado a mover los procedimientos a su base de código, donde puede estar bastante seguro de que una vez que lo programe, digamos Java, siempre permanecerá allí, sin importar el motor de base de datos que elija.
Sin mencionar que sus procedimientos generalmente son parte de su lógica comercial y no es una buena idea tener su lógica comercial salpicada en su base de código y base de datos.
Idealmente, siempre debe tener un mediador entre la base de datos y el cliente que implemente sus propias reglas comerciales. Proporcionar acceso directo a la base de datos no es una buena idea, porque cuando lo hace, el que tiene acceso tiene acceso directo a las tablas y puede hacer casi cualquier cosa con los datos que hay.
Desventajas
- Tarda más en desarrollarse: por supuesto, está creando un nuevo sistema, que requerirá más tiempo que simplemente darle al cliente una cadena de conexión de base de datos y dejarle escribir las consultas.
- Más complejo: Complejidad de un sistema> complejidad de una consulta de base de datos.
- El servidor hace más trabajo: no necesariamente. Con un buen diseño, almacenamiento en caché, ... puede mover la carga del servidor de la base de datos a la del mediador.
- Más lento: ¿ En términos de desarrollo? Si. ¿En términos de velocidad al recuperar datos? No. Puede optimizar su mediador utilizando cachés (como - popular a partir de enero de 2016 - Redis, Elasticsearch) y realmente hacer que entregue datos más rápido que una simple consulta de base de datos.
Ventajas
- Migrar a otras plataformas es más fácil: ¿ Migrar a un nuevo motor de base de datos? Seguro. ¿Migrar todo el mediador a un nuevo idioma? Realmente no.
- La lógica de negocios también es necesaria cuando se llama directamente a la base de datos. No tardará mucho más en desarrollarse: como se explicó anteriormente, el problema de los procedimientos.
- Seguridad: con la autorización adecuada, tener un mediador es definitivamente mucho más seguro que darle a un usuario acceso directo a la base de datos, ya que lo restringe a los puntos finales que ejecutan solo las consultas que desea.
- Mantenibilidad: uno de los mejores beneficios de tener un mediador. Si hay un error en una API a la que llaman sus clientes, lo arregla, inserta la solución en su repositorio de VCS, construye su mediador a partir de la versión correcta de VCS que contiene la solución y todos sus clientes la utilizan repentinamente, sin que necesiten descargar una actualización Esto es simplemente imposible de hacer si las consultas se almacenan directamente en las aplicaciones del cliente. En ese caso, los clientes se ven obligados a actualizar su aplicación.
Security issues
como una desventaja para la API REST?