Que es GraphQL | VentureBeat


Los desarrolladores front-end que buscan una forma de trabajar con bases de datos back-end en el servidor han adoptado GraphQL debido a su formato poderoso pero simple para expresar requisitos complicados. Si bien GraphQL a menudo se considera estrechamente relacionado con las bases de datos de gráficos que se utilizan para almacenar relaciones como las redes sociales, ha superado esa conexión. La sintaxis reducida lo convierte en una forma popular de obtener todos los datos de las tablas.

Considere el siguiente ejemplo: una página solo necesita una lista de usuarios. Otro solo puede incluir a los usuarios con un perro. A un tercero le gustaría que los usuarios se compararan con sus direcciones y se clasificaran por código postal, pero solo por dirección de EE. UU.

Cuando las consultas necesitan trabajar con estructuras de datos en capas y, a veces, interconectadas, GraphQL facilita hacer una pregunta para obtener exactamente las respuestas correctas.

SQL y el cambio a GraphQL

Las bases de datos tradicionales se basan en un lenguaje llamado SQL, abreviatura de Structured Query Language. Los requisitos simples son bastante fáciles de escribir en SQL, pero surgen problemas cuando los datos tabulares están demasiado estructurados. Es difícil navegar por requisitos complejos y los datos de su aplicación están llenos de campos anidados enterrados en secciones y subsecciones. Intentar encontrar una buena consulta para obtener exactamente el subconjunto correcto que coincida requiere una reflexión, experimentación e iteraciones cuidadosas. Los desarrolladores dedican tiempo a pensar en cadenas complejas de operaciones que coinciden con tablas (UNIONES) y las fusionan en lugar de trabajar en la aplicación.

GraphQL es un mecanismo simplificado para presentar consultas en la base de datos. Se basa en una sintaxis moderna y, por lo tanto, es conocido por los desarrolladores que trabajan con navegadores web y pilas de servidores como Node.js que usan JavaScript. La solicitud enumera todos los campos deseados y agrega límites a ciertos campos para hacer coincidir o buscar. El formato de la lista es escaso y se ajusta al popular formato de estructura de datos JSON con campos entre llaves.

Muchos administradores de bases de datos eligen GraphQL porque ahorra tiempo a los desarrolladores y puede alentarlos a escribir consultas más precisas que solo devuelven los datos esenciales, lo que ahorra ancho de banda.

GraphQL fue creado originalmente por Facebook para un proyecto interno, y la compañía comenzó a compartirlo con la esperanza de desarrollar un estándar común. Tuvo éxito y muchos usuarios ahora confían en él para solicitudes que se parecen poco a las tareas originales.

La versión más antigua es de 2012, pero Facebook no publicó descripciones y especificaciones de idiomas hasta 2015. Facebook estableció una fundación separada en 2018 cuando otras empresas usaban el lenguaje de consulta. Los clientes externos con acceso API a los centros de datos de Facebook deben usar GraphQL para realizar búsquedas.

El lenguaje de consulta también está muy adaptado al estilo llamado Jamstack para desarrollar aplicaciones Node.js. Algunas de las principales bibliotecas, como Gatsby, utilizan GraphQL como lengua franca para extraer información de la base de datos. Los programadores que adoptan este estilo de desarrollo eligen naturalmente el lenguaje.

Como ayuda

Los usuarios de GraphQL a menudo hablan de su simplicidad y de cómo pueden crear consultas complejas que pueden atravesar estructuras de datos complejas construidas con muchas conexiones. Cuando los datos son lo suficientemente simples como para caber en una tabla, a menudo no se gana mucho cambiando a GraphQL. Sin embargo, si los datos contienen varias tablas, pueden brillar.

En un ejemplo del mundo de los viajes aéreos, un plan de vuelo puede estar lleno de vuelos y cada vuelo está lleno de pasajeros. Cada pasajero también tiene sus propias características físicas como altura o peso, así como preferencias y necesidades médicas. Encontrar una lista de todos los vuelos con pasajeros que necesitan una silla de ruedas extragrande solo requiere unas pocas palabras con GraphQL.

El lenguaje de consulta acepta estructuras de programación como variables. Los resultados se parecen más al código JavaScript, lo que hace que sea un poco más fácil de adoptar.

El lenguaje también se confunde a veces con las bases de datos de diagramas, un tipo de herramienta que facilita el almacenamiento y la búsqueda de redes de elementos relacionados. GraphQL es muy útil para especificar las consultas para estos gráficos complejos, especialmente cuando los resultados deben encontrarse buscando en múltiples niveles de nodos o elementos de datos. Sin embargo, el lenguaje también funciona bien con bases de datos tabulares o centradas en documentos convencionales. En otras palabras, no es necesario tener un gráfico para usar GraphQL.

Algunos desarrolladores tradicionales encuentran que GraphQL oculta demasiado bien la complejidad del proceso de recuperación. A algunos analistas de bases de datos les gusta crear consultas SQL con declaraciones JOIN únicas porque tienen que obligarse a imaginar cómo se unirán las distintas tablas. Los JOIN pueden ser la parte más lenta de responder preguntas, y escribirlas obliga al analista explícitamente a considerar las compensaciones entre tiempo y espacio. Comprender la estructura de las consultas también permite a los creadores de bases de datos planificar con anticipación para acelerar algunas de las consultas agregando índices.

Cómo los jugadores heredados se acercan a GraphQL

Las bases de datos tradicionales hablan SQL, pero son compatibles con GraphQL al agregar capas adicionales de software que convierten GraphQL en declaraciones SQL tradicionales. Los resultados en JSON generalmente están formateados por las rutinas JSON nativas que han sido parte de las principales bases de datos durante algún tiempo.

Una startup, Hasura, distribuye un paquete de código abierto que traduce GraphQL para bases de datos PostgreSQL. Está estrechamente integrado y funciona con muchas funciones específicas de PostgreSQL, como el soporte GIS y la codificación geográfica. La compañía también ejecuta una API en la nube completamente administrada para aquellos que desean pagar por un servicio en lugar de un producto de software.

Hasura también está trabajando en la integración de su interfaz con Microsoft SQL Server. Este proyecto conjunto de Hasura y Microsoft está previsto para principios de 2021.

Otras herramientas también proporcionan el mismo tipo de pegamento. JoinMonster funciona, por ejemplo, con todas las principales bases de datos SQL, desde Oracle hasta SQLite, así como con varias versiones de MySQL. Se integra con Node.js y utiliza los esquemas de la base de datos para planificar una serie de consultas SQL tradicionales para obtener la cantidad correcta de datos.

Oracle también extiende el acceso a analizadores GraphQL externos que generan PL / SQL y encuentran los datos. La base de datos de Oracle ya contiene una función estándar para formatear las respuestas en JSON.

El advenedizo

DGraph se llama a sí mismo la «única base de datos GraphQL nativa con un backend gráfico». Es una herramienta de código abierto que se puede escalar horizontalmente al mismo tiempo que proporciona un control de transacciones completo para evitar inconsistencias. El código se publica bajo una combinación de la licencia Apache y la licencia comunitaria DGraph.

FaunaDB, una base de datos NoSQL, originalmente usó su propio lenguaje de consulta de estilo relacional llamado FQL. Los desarrolladores también agregaron una API GraphQL para aquellos que siguen este estándar.

Apollo también ofrece un servidor GraphQL que puede almacenar datos localmente y trabajar con otros servicios para recopilar todos los datos para la respuesta. Puede actuar como puerta de entrada a una constelación de servidores federados, simplificando la interfaz para los desarrolladores de aplicaciones para el usuario. La arquitectura de la herramienta promueve lo que sus desarrolladores denominan «separación de preocupaciones», que divide el trabajo en servicios y almacenes de datos separados. Esto promueve una fuente de datos más estable porque una falla en una puede no afectar a la otra.

Amazon Web Services (AWS) también es compatible con GraphQL para varias API. Por ejemplo, el marco de Amplify depende en gran medida del idioma para recuperar datos. Otras aplicaciones también pueden agregar una API GraphQL a una fuente de datos de AWS, como: B. DynamoDB mediante el servicio AppSync.

¿Hay algo que GraphQL no pueda hacer?

Si el esquema de la base de datos es simple y la consulta extrae toda la información de una tabla, no hay mucha diferencia en la complejidad de una consulta SQL o GraphQL. El formato de respuesta tradicional de las bases de datos SQL es a veces más eficiente que JSON. En estos casos, no hay ningún beneficio obvio en elegir uno sobre el otro. Los desarrolladores modernos pueden preferir la sintaxis GraphQL, pero es en gran parte una cuestión de gustos.

GraphQL se enciende cuando el esquema contiene muchas tablas normalizadas y las consultas incluyen varias de ellas. La elección de los campos y la inclusión de valores de filtro es más fácil de entender porque el desarrollador no tiene que considerar los JOIN.

La especificación GraphQL completa también incluye una serie de opciones para enfoques más programáticos para consultas, como agregar variables y definir funciones. Pueden diseñar estrategias aún más sofisticadas para obtener los datos correctos y reducir el tamaño de la respuesta. Sin embargo, las características complejas pueden ser abrumadoras para algunos desarrolladores y requieren una gran depuración y experimentación. Algunas consultas en redes complejas pueden resultar abrumadoras.

Este artículo es parte de una serie sobre tendencias de tecnología de bases de datos empresariales.

VentureBeat

La misión de VentureBeat es ser una plaza de la ciudad digital para que los responsables de la toma de decisiones tecnológicas obtengan conocimientos sobre la tecnología y las transacciones transformadoras. Nuestro sitio web proporciona información importante sobre tecnologías y estrategias de datos para ayudarlo a administrar su negocio. Te invitamos a convertirte en miembro de nuestra comunidad y acceder a:

  • información actual sobre los temas de su interés
  • nuestros boletines
  • contenido privado de líderes de opinión y acceso con descuento a nuestros valiosos eventos como Transform
  • Funciones de red y más

conviértete en miembro

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *