¿Qué es el rendimiento más rápido sabio? ¿Crear una API REST y hacer que su aplicación web use la API REST para hacer todas las interacciones con su base de datos O consultar su base de datos directamente (es decir, usar cualquier objeto típico que su lenguaje use para consultar una base de datos como JDBC para Java)?
La forma en que lo veo con REST:
- Haces un objeto en tu código para llamar al método REST
- Llame al método http
- El código dentro de su API REST consulta la base de datos
- La base de datos devuelve algunos datos
- El código REST API empaqueta los datos en Json y los envía a su cliente
- El cliente recibe una respuesta Json / XML
- Asigna la respuesta a un objeto en tu código
Por otro lado, consultar una base de datos directamente:
- Crea un objeto con cadena de consulta para consultar la base de datos
- La base de datos devuelve algunos datos
- Asigna la respuesta a un objeto en tu código
Entonces, ¿no significa esto que usar una API REST sería más lento? ¿Tal vez depende del tipo de base de datos (SQL vs NoSQL)?
Respuestas:
Cuando agrega complejidad, el código se ejecutará más lentamente. Introducir un servicio REST si no es necesario ralentizará la ejecución ya que el sistema está haciendo más.
Resumir la base de datos es una buena práctica. Si le preocupa la velocidad, puede analizar el almacenamiento en caché de los datos en la memoria para que no sea necesario tocar la base de datos para manejar la solicitud.
Antes de optimizar el rendimiento, aunque analizaría qué problema está tratando de resolver y la arquitectura que está utilizando, me cuesta pensar en una situación en la que las opciones de la base de datos sean acceso directo frente a REST.
fuente
extra work
. Pero en realidad podría ser más rápido almacenando en caché consultas repetidas.Si le preocupa la velocidad, entonces sí, un servicio de descanso será más lento por las razones indicadas anteriormente. Sin embargo, la velocidad del tipo que describe rara vez es la principal preocupación y, si lo es, puede abordarse de otras maneras. La optimización prematura es la raíz de todo mal .
Considere si su principal preocupación es la interoperabilidad (móvil, web, B2B), ahora REST es muy atractivo porque es independiente de la tecnología.
Supongamos que codifica una base de datos. ¿Qué haría si elige cambiar su almacén de datos subyacente? ¿Qué tan difícil sería hacer si está estrechamente vinculado a la tienda subyacente?
La verdadera respuesta es que depende , ¡pero espero que te haya dado algunas cosas para pensar!
fuente
Si le resulta difícil responder esta pregunta.
La respuesta general correcta debería ser: depende.
Hay un error en tu pensamiento.
Y este error se deriva del hecho de que no comprende completamente REST y sus principios. REST no fue inventado, porque a algunos nerds les pareció genial (por supuesto que sí) enviar objetos Javascript a través de HTTP a través del cable. La principal ventaja de usar HTTP es la posibilidad de usar el almacenamiento en caché . Si hace que sus resultados se puedan almacenar en caché , entonces hay menos solicitudes que hacer a la base de datos. Y no está involucrada la clasificación . La respuesta podría ser entregada directamente.
En la medida en que @Klees la respuesta no es del todo correcta :
Cuando se trata de resultados almacenables en caché, no hay impacto en su aplicación: la entrega de respuestas conocidas a preguntas conocidas podría hacerse a través de servidores proxy inversos.
fuente
La introducción de un nivel de servicio adicional siempre tiene un costo en complejidad y sobrecarga de rendimiento. Hay algunos tipos específicos de arquitectura en los que la introducción de un nivel de servicio compartido (como una API REST) puede mejorar el rendimiento debido al almacenamiento en caché compartido, pero parece que no es el tipo de arquitectura que tiene.
Considere una arquitectura en la que tiene múltiples aplicaciones web o múltiples aplicaciones de escritorio que se conectan directamente a la misma base de datos. Si realizan las mismas consultas con frecuencia, puede mejorar el rendimiento para almacenar en caché los resultados de las consultas en un servicio compartido. Especialmente si ha dicho que cientos de aplicaciones de escritorio acceden directamente a la misma base de datos (¡no a través de una aplicación web!) Y realizan las mismas consultas, podría haber una mejora importante. Sin embargo, incluso en esta arquitectura, la razón principal para la introducción de un servicio compartido probablemente sería la seguridad y la abstracción de datos en lugar del rendimiento.
Pero parece que tiene una única aplicación web que se conecta directamente a la base de datos. En ese caso, no es beneficioso introducir una capa de servicio adicional. El almacenamiento en caché, la abstracción de la base de datos, etc. podría manejarse en la capa de acceso a datos en la misma aplicación.
fuente
Depende.
Obviamente, cuantas más capas haya en su código, más lento será. Pero ... llega un punto en el que el rendimiento directo de extremo a extremo no importa tanto como la escalabilidad. Si tiene 1 usuario accediendo a su base de datos en una PC local, puede ir rápido. Si tienes miles de usuarios accediendo a la misma base de datos en la misma PC, es probable que los veas frustrados. La solución es mover el DB a otro cuadro, agregar una capa en el medio y, aunque para 1 usuario, funcionará más lentamente, cuando los mil accedan a él, irá más rápido. (Esa es una respuesta simplista pero cierta en principio).
Hay otras razones para ocultar su base de datos detrás de una capa de nivel medio, como la seguridad.
fuente
No sé dónde te pierdes, pero está bastante claro, cuando estás usando REST API estás haciendo un paso adicional, y el paso adicional "siempre" significa más lento cuando se trata de programación.
Hay ventajas y desventajas, pero si puede acceder a la base de datos directamente desde su aplicación, siempre es mejor llamarla directamente en lugar de usar la API web, por supuesto, si usa la API web, puede transferir fácilmente su aplicación a una plataforma diferente.
fuente
DESCANSO :
DB local:
ESTA ES UNA DIFERENCIA ENORME, LAS PERSONAS A MENUDO OLVIDARON ESTOS PUNTOS
fuente