Poner el Gráfico en GraphQL con la Biblioteca Neo4j GraphQL

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

GraphQL expone los datos de la aplicación como un gráfico, lo cual puede presentar desafíos si su backend no está preparado para gráficos (piense en JOINs lentos como resultado de consultas GraphQL anidadas y el temido problema de la consulta n+1). La biblioteca Neo4j GraphQL permite a los desarrolladores construir APIs de GraphQL respaldadas por una base de datos de gráficos nativa utilizando solo definiciones de tipos GraphQL. En esta charla veremos cómo construir una API de GraphQL sin escribir ningún resolvedor, agregar lógica personalizada y desplegar en la nube.

This talk has been presented at GraphQL Galaxy 2021, check out the latest edition of this Tech Conference.

FAQ

Neo4j es una base de datos de grafo que utiliza un modelo de datos en forma de grafo, donde los nodos representan las entidades y las relaciones conectan estos nodos.

Cypher es un lenguaje de consulta utilizado por Neo4j, diseñado para permitir la coincidencia de patrones declarativos y manipular y recuperar datos de la base de datos de grafo.

La mejor manera de contactar a Will en línea es a través de Twitter, donde ha dejado el enlace junto con su sitio personal que incluye un blog y un boletín que publica.

GraphQL es principalmente un lenguaje de consulta para APIs que describe los tipos de datos y cómo están conectados, mientras que Cypher es un lenguaje de consulta para bases de datos de grafo enfocado en la coincidencia de patrones declarativos y operaciones de base de datos.

Un grafo de conocimiento es una implementación de un grafo de propiedades para un dominio específico que contextualiza la información, como mostró Google con su Google Knowledge Graph.

La biblioteca Neo4j GraphQL es una herramienta de JavaScript para Node.js que ayuda a construir APIs de GraphQL respaldadas por Neo4j, facilitando la generación de operaciones CRUD, manejo de tipos, paginación y más, basado en definiciones de tipo de GraphQL.

Se construyó usando datos de la API de New York Times para crear un grafo que incluye artículos, temas y personas mencionadas, y se puede consultar a través de Cypher o una API de GraphQL.

Graphstuff.fm es un podcast sobre tecnología de grafo, del cual Will es anfitrión, donde se discuten temas relacionados con grafos y tecnología.

William Lyon
William Lyon
23 min
09 Dec, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla discute cómo poner el gráfico en GraphQL con la Biblioteca Neo4j GraphQL. Explora la construcción de APIs de GraphQL respaldadas por una base de datos de gráficos y la comparación entre Cypher y GraphQL. La biblioteca Neo4j GraphQL proporciona funciones poderosas como funcionalidad CRUD, autorización y paginación. También cubre temas como la integración de bases de datos, contratación para el equipo de GraphQL y despliegue de una API de GraphQL con la biblioteca Neo4j GraphQL.

1. Introducción a GraphQL y Neo4j

Short description:

La charla trata sobre cómo poner el grafo en GraphQL con la biblioteca Neo4j GraphQL. Will, que trabaja para Neo4j, se presenta y menciona su presencia en línea en Twitter y su sitio personal. También menciona que es el anfitrión del podcast graphstuff.fm.

Hola a todos. El título de esta charla es Poner el Grafo en GraphQL con la biblioteca Neo4j GraphQL. Pueden encontrar las diapositivas en dev.neo4j.com slash GraphQL dash galaxy. Mi nombre es Will. Trabajo para una empresa llamada Neo4j, que es una base de datos de grafo. Hablaremos de qué es eso en un momento. La mejor manera de contactarme en línea es probablemente a través de Twitter, donde he dejado el enlace junto con mi sitio personal que incluye un blog y un boletín que publico. También soy el anfitrión del podcast graphstuff.fm. Así que si les gustan los podcasts y la tecnología de grafo, definitivamente revisen graphstuff.fm.

2. Introducción a Neo4j y Bases de Datos de Grafo

Short description:

Neo4j es una base de datos de grafo que utiliza un lenguaje de consulta llamado Cypher. Discutiremos la construcción de APIs de GraphQL respaldadas por una base de datos de grafo y la parte de grafo de GraphQL. Un grafo es una estructura de datos donde los nodos y las relaciones conectan los nodos. Utilizamos un modelo de datos llamado grafo de propiedades para trabajar con datos en el grafo. Los grafos de conocimiento son una implementación de un grafo de propiedades para un dominio específico.

Entonces, Neo4j es una database de grafo que es similar a otras bases de datos con las que puedes estar familiarizado, como bases de datos relacionales o bases de datos de documentos. Pero la diferencia más grande es que el modelo de datos es un grafo. Entonces, los nodos son las entidades que las relaciones conectan, y con Neo4j utilizamos un lenguaje de consulta llamado Cypher, que también veremos un poco hoy.

Hay muchas cosas interesantes que podemos hacer con bases de datos de grafo y sus implicaciones para las diferentes optimizaciones de rendimiento en comparación con otras bases de datos. Pero, por supuesto, lo que vamos a hablar hoy es sobre la construcción de APIs de GraphQL respaldadas por una database de grafo. Entonces, realmente lo que quiero hablar hoy es sobre la parte de grafo de GraphQL.

En esencia, un grafo es una estructura de data donde los nodos, que son las entidades en el grafo, y las relaciones conectan los nodos. Para trabajar con data en el grafo, a menudo utilizamos un modelo de datos llamado grafo de propiedades, donde agregamos etiquetas a los nodos que describen el tipo de cosa que son y atributos de pares clave-valor que describen los datos reales con los que estamos trabajando. También es posible que hayas oído hablar de los grafos de conocimiento. Los grafos de conocimiento, en mi opinión, son realmente una implementación de un grafo de propiedades para un dominio específico que pone las cosas en contexto, así es como me gusta pensar en ello. Google, cuando anunciaron la API de Google Knowledge Graph, publicaron esta publicación de blog llamada Cosas, no Cadenas, que creo que hizo un buen trabajo explicando qué es un grafo de conocimiento y cómo podemos trabajar con los datos en un grafo de conocimiento.

3. Consulta de Grafo de Noticias con Cypher y GraphQL

Short description:

En este ejemplo, tenemos un grafo de artículos de noticias y sus temas y regiones geográficas. Podemos consultar este grafo de noticias utilizando Cypher, un lenguaje de consulta de base de datos de grafo centrado en la coincidencia de patrones declarativos. Cypher tiene funcionalidades como agregaciones, funciones matemáticas y operaciones específicas de grafo. GraphQL, por otro lado, es un lenguaje de consulta diseñado para trabajar con APIs, con un sistema de tipos que describe los datos disponibles y un conjunto de selección para definir recorridos a través del grafo de datos.

Entonces, en este ejemplo tenemos un grafo de artículos de noticias y sus temas y las regiones geográficas que se mencionan en estos artículos. Cuando estamos mirando un nodo de artículo, sabemos qué es, conocemos sus atributos, pero también tenemos el contexto que lo rodea. Sabemos a qué región geográfica se refiere. También sabemos qué personas y temas trata el artículo.

Así que obtuve algunos datos de la API de New York Times y construí un grafo de conocimiento de esto en Neo4j, por lo que tenemos información sobre artículos, temas, personas mencionadas en los artículos, y cosas por el estilo. Y pensé que este era un conjunto de datos interesante por varias razones y aplicaciones diferentes. Pero lo que quiero usar hoy es hablar sobre diferentes formas de consultar este grafo de noticias si estoy interesado en construir una aplicación. Podría usar GraphQL para consultar este grafo de noticias. De hecho, hay una API de GraphQL en news-graph.versel.app que podemos usar para escribir consultas de GraphQL. En este caso, estamos buscando regiones geográficas específicas dentro de 100 kilómetros de una cierta latitud y longitud. ¿Cuáles son los artículos que mencionan esa región? ¿Cuáles son los temas de esos artículos? También podríamos consultar este grafo de noticias utilizando Cypher, el lenguaje de consulta que usamos con bases de datos de grafo como Neo4j. Esta es una captura de pantalla de Neo4j Browser, que es como un banco de trabajo de consultas para trabajar con Neo4j. Puedes ver que hemos escrito una consulta de Cypher aquí buscando un artículo específico, algo relacionado con criptomonedas en Ucrania. Luego buscamos los temas en otros artículos que comparten esos mismos temas. Con Cypher, dibujamos esta especie de representación de arte ASCII del patrón de grafo con el que queremos trabajar. Y también hay otras herramientas para consultar el grafo de noticias. Podríamos usar herramientas visuales, por ejemplo, Neo4j Bloom, que es una herramienta de exploración de grafo. Todas estas consultan los mismos datos, este grafo de noticias, pero en diferentes modalidades y contextos.

4. Comparación entre Cypher y GraphQL

Short description:

Cypher es un lenguaje de consulta de base de datos de grafo centrado en la coincidencia de patrones declarativos. Tiene funcionalidades como trabajar con agregaciones, funciones matemáticas, operaciones de base de datos, crear índices, importar datos en formato CSV y operaciones específicas de grafo como caminos de longitud variable, funciones de nodo y relación.

Enfoquémonos en comparar Cypher y GraphQL en el contexto de este grafo de noticias data. Esta es una pregunta que surge con frecuencia. ¿Cuál es la diferencia entre Cypher y GraphQL? Ambos parecen hacer algo con grafos. Bueno, fundamentalmente, Cypher es un lenguaje de consulta de base de datos de grafo, como mencioné anteriormente, centrado en la coincidencia de patrones declarativos. Dibujamos estas representaciones de arte ASCII del grafo para describir el patrón con el que queremos trabajar. Cypher tiene muchas funcionalidades que esperaríamos en un lenguaje de consulta de base de datos, como trabajar con agregaciones, funciones matemáticas, operaciones de base de datos, crear índices, importar datos en formato CSV. Y luego muchas operaciones específicas de grafo, como el concepto de caminos de longitud variable, funciones de nodo y relación, entre otras cosas.

5. Comparación de GraphQL y Cypher

Short description:

Si comparamos eso con GraphQL, GraphQL es principalmente un lenguaje de consulta diseñado para trabajar con APIs. Tenemos un sistema de tipos que describe los datos disponibles para el cliente y cómo están conectados. En Cypher, escribimos un patrón similar a un arte ASCII para encontrar y devolver nodos de artículos. Cypher tiene funcionalidades para ordenar, limitar y omitir. En Cypher, podemos agregar un patrón de grafo más complejo para encontrar artículos y sus temas relacionados. Cypher también tiene funcionalidad de ruta más corta. Los artículos recomendados se pueden expresar en Cypher al observar otros artículos que están viendo usuarios similares.

Si comparamos eso con GraphQL, GraphQL es principalmente un lenguaje de consulta diseñado para trabajar con APIs. Entonces tenemos un sistema de tipos que describe exactamente los data que están disponibles para el cliente, cómo están conectados. Este es el grafo de data. Y luego, para describir los recorridos a través del grafo de data, definimos un conjunto de selección en GraphQL.

Veamos algunos ejemplos. Digamos que quiero ver todos los artículos en el grafo de noticias. En Cypher, escribo un patrón similar a un arte ASCII, los paréntesis representan nodos, en este caso, encuentro todos los nodos de artículo y los devuelvo. Con GraphQL, en mi conjunto de selección, comienzo con el campo de consulta de artículo y luego describo los campos de los artículos que quiero devolver.

¿Qué pasa si quiero ver los diez artículos más recientes? Bueno, Cypher tiene la funcionalidad para ordenar, limitar, omitir, para la paginación básica. Esto no está incorporado en GraphQL, pero podemos trabajar con estos elementos como argumentos de campo. Entonces, tal vez nuestro campo de consulta de artículos tenga un argumento de orden de clasificación y un argumento de límite que nos permite lograr lo mismo.

¿Qué pasa si quiero ver los diez artículos más recientes y sus temas? Bueno, en Cypher, agrego un patrón de grafo más complejo. Entonces puedes ver aquí que primero estamos haciendo coincidir todos los artículos y devolviendo el primero por fecha de publicación. Luego tenemos otro patrón de grafo donde estamos recorriendo desde este nodo de artículo a lo largo de esta relación tiene tema a los nodos de tema y devolviendo ambos. Y ahora vemos los diez artículos más recientes y sus temas relacionados. En GraphQL, simplemente agregaríamos a nuestro conjunto de selección para describir este recorrido ahora desde los artículos hasta los temas. Así que estamos comenzando a crear un conjunto de selección anidado aquí.

¿Qué pasa si también quiero, no solo los diez artículos más recientes, sus temas, sino también qué otros artículos hay en esos temas? Bueno, en Cypher simplemente agrego a mi patrón de grafo. Entonces ahora quiero recorrer a lo largo de esta relación tiene tema nuevamente para encontrar artículos que comparten temas similares. Y en GraphQL, agrego a mi conjunto de selección anidado ahora yendo desde los temas hasta los artículos y en este caso, devolviendo el título de esos artículos.

Pero ¿qué pasa si quiero algo como encontrar la ruta más corta en el grafo entre dos nodos, en este caso, el Servicio de Parques Nacionales y la FAA? Bueno, Cypher tiene funcionalidad de ruta más corta y funcionalidad de ruta de longitud variable incorporada en Cypher, por lo que puedo decir, encontrar la ruta más corta que conecta estas dos organizaciones. En este caso, siguiendo cualquier relación. Eso es lo que significa este asterisco entre corchetes, está diciendo seguir cualquier número de relaciones para encontrar la ruta más corta. Y puedo encontrarla a través de un par de artículos sobre escasez de mano de obra que ambas organizaciones están enfrentando. Esta funcionalidad no está realmente incorporada en GraphQL, por lo que GraphQL no tiene una forma nativa de expresar esta idea de una ruta más corta, aunque ciertamente podríamos implementar esta funcionalidad y exponerla a través de ciertos campos en GraphQL. Pero no es algo incorporado.

¿Qué pasa con los artículos recomendados? Muchos sitios de noticias, mientras leo un artículo, me muestran algo como, aquí hay otros artículos que podrían interesarme. Este tipo de cosas. Bueno, en Cypher, hay muchas formas de expresar ese tipo de cosas. Podría ver otros artículos que están viendo usuarios similares.

6. Graph Traversal and Neo4j GraphQL Library

Short description:

Discutimos la travesía del grafo desde un artículo hacia artículos relacionados basados en el autor, los temas o las regiones geográficas. GraphQL no expone estos conceptos, pero podemos implementar un campo recomendado en nuestra API de GraphQL. Al construir una aplicación React para una organización de noticias, utilizamos GraphQL para obtener beneficios como autorización y almacenamiento en caché. La arquitectura implica que una aplicación React realiza consultas a una API de GraphQL, que luego se comunica con la base de datos. Neo4j ha lanzado la biblioteca Neo4j GraphQL, que permite el desarrollo basado en GraphQL y genera una API de GraphQL completa con funcionalidad CRUD basada en las definiciones de tipo.

Podría analizar la superposición de temas. Podría analizar la superposición de regiones geográficas basada en mi historial de lectura, este tipo de cosas. Entonces aquí estamos describiendo una travesía a través del grafo desde un artículo que estoy leyendo hacia artículos que tienen el mismo autor, temas similares o tratan sobre regiones geográficas similares. GraphQL realmente no expone estos conceptos. Y nuevamente, podríamos implementar un campo recomendado en el tipo de artículo en nuestra API de GraphQL para exponer esto. Pero nuevamente, no es algo que esté incorporado de forma inherente.

Los grafos, creo, están realmente en todas partes a nuestro alrededor en diferentes tecnologías. Los vemos en GraphQL. Los vemos en bases de datos de grafos. Pero creo que surge una pregunta para los desarrolladores: saber cuándo aprovechar la tecnología de grafo adecuada en el momento adecuado.

Supongamos, por ejemplo, que estamos construyendo una aplicación React que será el frontend de nuestra organización de noticias. Queremos mostrar artículos, queremos que los usuarios puedan iniciar sesión para guardar artículos, ver artículos recomendados, este tipo de cosas. Hemos hablado sobre cómo consultar este grafo de noticias en Cypher directamente desde la base de datos o GraphQL. ¿Cómo deberíamos estructurar la arquitectura básica de nuestra aplicación para hacer esto? Bueno, al mirar estos ejemplos que vimos, realmente no queremos exponer la base de datos a las aplicaciones de nuestros clientes y permitirles consultar lo que quieran en la base de datos. En cambio, ahí es donde GraphQL realmente brilla, ya que podemos brindar todos los beneficios de GraphQL a nuestra aplicación cliente, pero también tener esta capa que se encuentra entre el cliente y la base de datos donde podemos agregar cosas como autorización, almacenamiento en caché, lógica personalizada, este tipo de cosas.

Entonces nuestra arquitectura se ve algo así, donde nuestra aplicación React está consultando una API de GraphQL. Tal vez esto se implemente como funciones sin servidor o trabajadores de borde, algo así. Y luego nuestra capa de API es la que realmente accede a la base de datos. Para facilitar la construcción de este tipo de arquitectura de aplicaciones, Neo4j ha lanzado la biblioteca Neo4j GraphQL. Esta es una biblioteca de JavaScript para construir APIs de GraphQL en Node.js respaldadas por Neo4j. Hay muchas características realmente poderosas en la biblioteca GraphQL. Veamos algunas de ellas. Una de ellas es esta idea de desarrollo basado en GraphQL. Comenzamos con nuestras definiciones de tipo de GraphQL. Eso define el modelo de datos con el que estamos trabajando. Luego, la biblioteca Neo4j GraphQL utilizará eso para impulsar el modelo de datos para la base de datos y la API. Por lo tanto, no necesito mantener dos esquemas separados, uno para la base de datos, otro para la API. Todo se deriva de estas definiciones de tipo de GraphQL. La biblioteca Neo4j GraphQL tomará esas definiciones de tipo y generará una API de GraphQL completa con operaciones de creación, lectura, actualización y eliminación. Para cada tipo declarado en el esquema.

7. Características de la Biblioteca Neo4j GraphQL

Short description:

La biblioteca Neo4j GraphQL genera una única consulta a la base de datos para cualquier solicitud de GraphQL, eliminando la necesidad de implementar resolvers. Proporciona funcionalidad CRUD y permite lógica personalizada a través de la directiva de esquema Cypher GraphQL. La biblioteca ofrece características poderosas como un modelo de autorización, paginación de cursor de relay y trabajo con uniones e interfaces.

Por supuesto, hay mucho que se puede configurar en lo que se genera. Pero de forma predeterminada, obtenemos campos de consulta y mutación para cada uno de nuestros tipos, ordenamiento, paginación, conexión de relay, paginación, filtrado complejo, así como los tipos geo y date que son compatibles de forma nativa en la database. Y así es como construimos ese gráfico de noticias, GraphQL API al que hice referencia anteriormente.

Ahora, una de las características realmente poderosas de la biblioteca Neo4j GraphQL es la generación de consultas a la database. Esto significa que para cualquier solicitud de GraphQL arbitraria, la biblioteca genera una única consulta a la database. Como desarrollador, no necesito implementar resolvers. Simplemente necesito definir mis definiciones de tipo y luego la biblioteca generará una única consulta a la database en el momento de la consulta. Y esto es genial para la productividad del desarrollador porque no tengo que construir estos resolvers, pero también para el rendimiento, esto resuelve básicamente el problema de la consulta N más uno donde necesito pensar en el agrupamiento o el almacenamiento en caché en mi implementación de GraphQL para no realizar múltiples viajes a la database. En cambio, puedo confiar en que se genera una única consulta a la database, se envía a la database, y la database optimizará cómo manejar esa consulta.

Hemos hablado sobre la funcionalidad CRUD que se genera para nosotros. ¿Qué hay de la lógica personalizada? ¿Cómo la agregamos? Bueno, esta es probablemente mi característica favorita de la biblioteca Neo4j GraphQL. Y esta es la directiva de esquema Cypher GraphQL. Las directivas de esquema son el mecanismo de extensión incorporado de GraphQL. Entonces, con las directivas, puedo indicar que hay alguna lógica personalizada que debe ocurrir en el servidor. Y hay muchas directivas diferentes disponibles para configurar nuestro esquema con la biblioteca Neo4j GraphQL, pero la directiva de esquema Cypher GraphQL es la más poderosa porque nos permite básicamente anotar campos en nuestra API de GraphQL con consultas Cypher. Aquí hemos agregado un campo similar a los tipos de artículo. Esto es algo así como la consulta de recomendación que vimos antes. Si estás leyendo este artículo, ¿qué artículos similares podrían interesarte? Y en este caso, estamos utilizando Graph Data Science, similitud de jacquard para encontrar artículos similares basados en temas. Esto es muy poderoso. Básicamente podemos exponer cualquier funcionalidad de Cypher a través de GraphQL utilizando las directivas de esquema Cypher. Esa es la funcionalidad básica de la Biblioteca Neo4j GraphQL. Hay muchas otras cosas interesantes allí. Hay un modelo de autorización muy poderoso. Mencioné la paginación de cursor de relay así como el trabajo con uniones e interfaces. Muchas cosas interesantes y poderosas en la Biblioteca Neo4j GraphQL. Echemos un vistazo rápido a algo de código. Este es un enlace a CodeSandbox. Simplemente estaba extrayendo de este repositorio de GitHub. Puedes encontrar todo el código en GitHub o en este CodeSandbox. Pero echemos un vistazo rápido para ver qué está sucediendo aquí.

8. Index.js y Definiciones de Tipos GraphQL

Short description:

El archivo index.js importa dependencias y lee las definiciones de tipos GraphQL del archivo schema.graphql. La Biblioteca Neo4j GraphQL se utiliza para pasar estas definiciones de tipos y crear una conexión con la base de datos. Las definiciones de tipos definen los nodos en el gráfico de noticias y sus conexiones. La consulta generada a la base de datos se registra en la consola, lo que permite flexibilidad al consultar datos específicos. El objeto resolveInfo se utiliza por las integraciones de bases de datos GraphQL para generar consultas a la base de datos a partir de las solicitudes GraphQL. Hay recursos disponibles para aprender más sobre Neo4j GraphQL en la página de inicio de Neo4j GraphQL y el Neo4j Sandbox proporciona una plataforma para probar Neo4j con conjuntos de datos precargados.

Este es nuestro archivo index.js. Simplemente importando algunas dependencias y leyendo desde este archivo schema.graphql, que son nuestras definiciones de tipos GraphQL. Pasamos esas definiciones de tipos a la Biblioteca Neo4j GraphQL. Creamos una instancia del controlador de Neo4j solo para crear una conexión con la base de datos. Y luego pasamos ese esquema que creamos con la Biblioteca Neo4j GraphQL a Apollo Server, que maneja nuestra, sirviendo nuestra API GraphQL.

Si observamos nuestras definiciones de tipos, aquí es donde se encuentran las partes interesantes. Hemos definido tipos para artículo, autor, tema. Así que todos esos nodos que vimos en nuestro gráfico de noticias y cómo están conectados. No escribimos ningún resolvedor. Básicamente solo hemos definido nuestras definiciones de tipos. Y aquí está el Playground de GraphQL. Aquí hay una consulta de GraphQL que voy a ejecutar. Buscando los cien artículos más recientes y autores, fotos, Geo. Así que básicamente todo lo conectado a esos artículos y puedes ver los resultados que llegan.

Una cosa que quiero señalar aquí es que podemos ver la consulta generada a la base de datos que se registra en la consola aquí. Por lo tanto, se genera en tiempo de consulta para cualquier solicitud GraphQL arbitraria. A medida que modificamos la consulta GraphQL, tal vez si solo estamos consultando artículos, solo veremos en la consulta generada a la base de datos que solo estamos obteniendo nodos de artículos. Muy poderoso para la productividad del desarrollador para tener una API GraphQL en funcionamiento sin escribir ningún resolvedor y aprovechando todo el poder del modelo de gráfico con la Biblioteca Neo4j GraphQL. Y nuevamente, todo el código está enlazado en GitHub.

Como un pequeño aparte, es posible que te preguntes cómo funcionan estas integraciones de bases de datos GraphQL bajo el capó, cómo pueden generar consultas a la base de datos a partir de una solicitud GraphQL. Y la respuesta está dentro de cada resolvedor, uno de los argumentos pasados es el objeto resolveInfo que contiene mucha información sobre el esquema GraphQL y la operación GraphQL que se está resolviendo actualmente. Entonces aquí puedes ver todas las cosas que están en el objeto resolveInfo. Y básicamente lo que hacen estas integraciones de bases de datos es inspeccionar este objeto resolveInfo, mirar el conjunto de selección anidado para la consulta y esencialmente iterar a través de eso y generar una consulta a la base de datos en el resolvedor raíz, lo cual es un patrón muy poderoso. Di una charla en la Cumbre de GraphQL sobre esto hace un tiempo. Así que la grabación está ahí si estás interesado en profundizar en eso con un poco más de detalle.

Genial, bueno, creo que eso es todo el tiempo que tenemos por hoy. Quiero terminar hablando de algunos recursos. Si estás interesado en aprender más. Un buen lugar para comenzar es la página de inicio de Neo4j GraphQL que tiene enlaces a la documentación, ejemplos, así como a Graph Academy, que es una formación en línea a tu propio ritmo que profundiza mucho más, todo centrado en la construcción de APIs GraphQL con Neo4j. Para probar Neo4j, creo que el mejor lugar para ir es el Neo4j Sandbox, que nos permite crear instancias de Neo4j con conjuntos de datos precargados.

QnA

Neo4j GraphQL Integration and Q&A

Short description:

Tenemos GraphQL expuesto a través de enlaces a ejemplos de código preconstruidos en Neo4j Sandbox. Neo4j está contratando específicamente para el equipo de GraphQL, buscando crecer. Si estás interesado, por favor contáctanos. El 60% de la audiencia está utilizando GraphQL en producción. La comunidad de GraphQL está madurando, abordando problemas de escalabilidad y avanzados. Sorprendentemente, el 20% no está utilizando GraphQL pero asistió a la conferencia. Pasemos a las preguntas y respuestas. La primera pregunta es sobre la posición en Neo4j para el trabajo de integración de GraphQL.

También tenemos GraphQL expuesto a través de enlaces a ejemplos de código preconstruidos en Neo4j Sandbox. También quiero mencionar que Neo4j está contratando, pero específicamente el equipo de GraphQL en Neo4j está contratando y buscando crecer. Si esto suena interesante para trabajar, por favor contáctanos. Puedes encontrar las publicaciones en nuestro sitio de trabajo o simplemente envía un correo electrónico a graphql.neo4j.com. Muchas gracias por unirte hoy. Y nuevamente, por favor contáctame en Twitter si deseas seguir en contacto. ¡Saludos!

¿Estás utilizando GraphQL en producción fue la pregunta y el 60% de nuestra audiencia está diciendo que sí, eso es increíble. Pero ¿esperabas que haya tanta gente que ya esté utilizando GraphQL en una conferencia o simplemente no era lo que esperabas en absoluto? Sí, supongo que tiene sentido. Quiero decir, ya que estamos en una conferencia centrada en GraphQL, supongo que hay dos tipos de personas interesadas en una conferencia de GraphQL. Es como, estoy utilizando GraphQL en producción y estoy listo para avanzar y pensar en la escalabilidad y este tipo de cosas y las cosas avanzadas y los otros tipos de, bueno, sé sobre GraphQL, es algo en lo que estamos pensando. Así que quiero aprender más sobre los conceptos introductorios. Sí, supongo que para una conferencia centrada en GraphQL, supongo que pensé que habría un poco más que eso, pero supongo que eso muestra que hay una buena mezcla de ambos tipos de personas, ¿verdad? Personas que están listas para avanzar y en el tipo de persona introductoria. Sí, entiendo eso. Supongo que una cosa que realmente he notado, creo que en la comunidad de GraphQL en general, al mirar esto en los últimos años en los que he estado involucrado en trabajar con GraphQL, parece que la comunidad de GraphQL está madurando realmente. Si miras los tipos de herramientas y supongo que también las mejores prácticas y tendencias que estás viendo, creo que las personas están enfrentando ese problema de, ok, estoy utilizando GraphQL en producción y ahora necesito pensar en cómo escalar, cómo abordar problemas más avanzados. Sí, tiene sentido para mí. Sí, también me sorprendió bastante porque hay un 20% que simplemente dijo que no y que no lo están planeando. Así que no estás utilizando GraphQL y no tienes planes de hacerlo, pero estás aquí. Bueno, aún así, estoy feliz de tenerte aquí, por supuesto. Pero sí, eso fue sorprendente para mí. Suficiente hablar sobre las preguntas de la encuesta. Pasemos a las preguntas y respuestas. Y perdí mi ventana. ¿Dónde estás, ventana de preguntas? Aquí está. Así que la primera pregunta es de un amigo. Ese es un buen nombre. Mencionaste que Neo4j está contratando para el trabajo de integración de GraphQL en Neo4j, pero ¿puedes describir un poco cómo es la posición y qué tipo de experiencia de fondo es necesaria? Entonces, ¿qué perfil estás buscando en realidad? Oh sí, esa es una gran pregunta. Sí, en mi charla hablé sobre esta biblioteca de GraphQL de Neo4j, que es una biblioteca de Node.js que facilita la construcción de APIs de GraphQL respaldadas por Neo4j. Hablamos sobre algunas de las características en eso.

Neo4j GraphQL Library Contratación y Próximos Pasos

Short description:

El equipo que trabaja en la biblioteca Neo4j GraphQL está contratando ingenieros en Europa. Buscan familiaridad con TypeScript, el ecosistema de Node.js y el ecosistema de GraphQL. El equipo también está considerando los próximos pasos para la biblioteca, como casos de uso avanzados, escalabilidad y rendimiento. Si tienes experiencia en escalar GraphQL en producción, al equipo le interesaría contar contigo. Neo4j también está contratando para varios roles y habilidades.

Entonces, el equipo que trabaja en esa biblioteca está contratando ingenieros en Europa para trabajar en la biblioteca. Está escrita en TypeScript, por lo que se requiere cierta familiaridad con TypeScript y el ecosistema de Node.js y el ecosistema de GraphQL también. Creo que también están pensando en los próximos pasos, ¿verdad? Como mirar algunos de esos casos de uso más avanzados de GraphQL de los que hablamos antes, ¿verdad? Como escalar, mejorar el rendimiento. Creo que esas son las cosas en las que el equipo está pensando a continuación.

Si has escalado GraphQL en producción o algo similar, tener esa experiencia, creo que el equipo estaría encantado de contar contigo. Pero sí, definitivamente TypeScript es lo que el equipo hace a diario. Y si eso no encaja del todo, Neo4j está contratando para muchos roles y habilidades de ingeniería. Te recomendaría que eches un vistazo a la página de carreras que enlacé en las diapositivas. Seguramente encontrarás algo que se ajuste a tus habilidades. Hay algo para todos. Eso es cierto.

Database Company and Diverse Competencies

Short description:

Como una empresa de bases de datos, hay varias piezas con las que trabajar, incluyendo ingenieros de Java básico, Scala para el lenguaje de consulta Cypher y herramientas de escritorio para visualización de gráficos. Es interesante ver las competencias diversas requeridas para esta herramienta.

Bueno, quiero decir, cuando eres una empresa de bases de datos, como una base de datos es tan central para tu aplicación de infraestructura que realmente hay muchas piezas diferentes con las que tienes que trabajar. Quiero decir, tenemos ingenieros de Java básico que trabajan en la optimización de la base de datos. El lenguaje de consulta Cypher está escrito en Scala. Tenemos herramientas de escritorio para visualización de gráficos, donde estás trabajando en cosas de alto rendimiento con WebGL. Así que sí, hay muchas habilidades y conjuntos de herramientas diferentes por ahí. Sí, siempre es divertido. Siempre me parece agradable escuchar cuántos tipos diferentes de competencias necesitas para una herramienta así. Como dices, que tienes desarrolladores de Java y Scala trabajando para ti o para tu empresa. Sí, es agradable ver a tanta gente unida de diferentes orígenes construyendo más productos.

Authorization in Neo4j GraphQL Library

Short description:

Hay múltiples opciones para manejar la autorización al usar la biblioteca Neo4j GraphQL. Puedes implementar tu propia capa de autorización o usar la función de autorización incorporada que utiliza las directivas de esquema de GraphQL. La directiva de esquema Auth GraphQL te permite definir reglas de autorización en tu esquema, como especificar que solo los autores de una publicación de blog pueden editarla. Esta función funciona con JSON Web Tokens (JWT) y admite varios proveedores de identidad. La flexibilidad de la biblioteca Neo4j GraphQL permite a los desarrolladores personalizar la autorización y la autenticación según sus necesidades específicas.

La siguiente pregunta es de un usuario. Supongo que es un usuario anónimo. ¿Qué hay de la autorización? ¿Cómo manejaríamos la autorización de la aplicación al usar la biblioteca Neo4j GraphQL? ¿Depende únicamente del desarrollador implementarlo ellos mismos? Sí, buena pregunta. Aquí hay algunas opciones. Supongo que una de las cosas sobre la biblioteca Neo4j GraphQL es ser lo más flexible posible. Por lo tanto, definitivamente puedes implementar tu propia capa de autorización como lo harías con cualquier otro servicio GraphQL. Hay muchas opciones diferentes allí, pero hay una función de autorización incorporada en el núcleo de la biblioteca Neo4j GraphQL que utiliza las directivas de esquema de GraphQL. En mi charla, mostré algunos ejemplos de cómo usar las directivas de esquema de GraphQL para configurar un poco la API. Vimos la directiva de relación para definir relaciones en el esquema y también la directiva de esquema Cypher GraphQL para agregar lógica personalizada a tu API. También hay una directiva de esquema Auth GraphQL que puedes usar para definir reglas de autorización en tu esquema. Por ejemplo, puedes crear una regla que diga que solo los autores de una publicación de blog pueden editarla o si tal vez tienes el rol de administrador también puedes editar eso, este tipo de cosas. Y funciona con un JSON Web Token, JWT. Por lo tanto, puedes usar cualquier proveedor de identidad siempre y cuando genere un JSON Web Token. Nuevamente, está diseñado para ser lo más flexible posible pero aún así tener estas características enfocadas en la productividad del desarrollador. Porque es bastante agradable, creo, poder definir este tipo de cosas en tu esquema de GraphQL que son bastante poderosas. Entonces, supongo que ese sería mi primer enfoque sería ver y ver las características admitidas por esta directiva de esquema de autenticación GraphQL con las reglas que podemos crear. ¿Coincide eso con tus necesidades para agregar autorización y autenticación? Si es así, esa puede ser una característica muy poderosa incorporada. Genial, gracias William.

Despliegue de la API GraphQL con la biblioteca Neo4j GraphQL

Short description:

Puedes desplegar la capa de la API GraphQL utilizando cualquier implementación de GraphQL en JavaScript con la biblioteca Neo4j GraphQL. Next.js es un buen marco para construir aplicaciones de pila completa, con su función de rutas de API que te permite definir una entrada para tu API GraphQL. El despliegue de una aplicación Next.js se puede hacer de diferentes formas, y Vercel puede desplegar tus puntos finales de API como funciones sin servidor. Esta combinación de Next.js y Vercel es excelente para construir aplicaciones GraphQL de pila completa. Si hay más preguntas, no dudes en preguntar. De lo contrario, haremos un breve descanso y volveremos pronto. William estará disponible en su sala de conferencias en Spatial Chat para discutir cualquier cosa sobre Neo4j. Gracias y que tengas un buen día.

La siguiente pregunta es de Sam. ¿Cómo podríamos desplegar la capa de la API GraphQL? Dijiste que la biblioteca Neo4j GraphQL es para construir API GraphQL en Node.js, pero ¿qué pasa si quiero desplegarlo como una función sin servidor? Sí, nuevamente, volviendo a esta idea de tratar de design la biblioteca para enfocarse en la flexibilidad, realmente puedes usar cualquier implementación de GraphQL en JavaScript con la biblioteca Neo4j GraphQL para aprovechar cosas como la generación de consultas a la base de datos, el proceso de ampliación del esquema GraphQL. Básicamente, obtienes un objeto de esquema ejecutable de GraphQL que luego puedes usar con Apollo Server o realmente cualquier implementación de GraphQL en JavaScript. Por lo tanto, es fácil de usar como una función Lambda o desplegar como una función sin servidor.

Me gusta usar Next.js para construir aplicaciones de pila completa. Next.js es este marco construido sobre React. Entonces puedo construir mis interfaces de usuario con React y Next.js, pero Next.js también tiene esta característica muy genial llamada rutas de API. Entonces, en la misma base de código, en el mismo marco, puedo definir una entrada para mi API GraphQL. Puedo aprovechar la biblioteca Neo4j GraphQL con eso. Y luego, cuando voy a desplegar eso, hay diferentes formas de desplegar una aplicación Next.js. Pero Vercel, que trabaja en Next.js, desplegará tus puntos finales de API como funciones sin servidor sin que tengas que pensar en eso. Así que esa es una buena combinación que me gusta usar para mis aplicaciones GraphQL de pila completa es Next.js y Vercel. Nuevamente, creo que es algo que se enfoca mucho en la productividad del desarrollador, lo cual es muy agradable si estás construyendo aplicaciones de pila completa.

Sí, es una combinación realmente agradable, una forma realmente agradable de trabajar. También soy un gran fan. Genial, gracias. Tenemos tiempo para algunas preguntas más, sí. La siguiente pregunta es de Daria, ¿qué hay de la autorización? ¿Cómo manejaríamos la autorización de la aplicación? Espera. Creo que recibimos esa pregunta correctamente. Es la misma pregunta, formulada de manera diferente. Oh, no, espera. No, solo estoy leyendo doble. Lo siento, esas fueron las preguntas que tenemos de nuestra audiencia. Así que si todavía hay alguien que quiera saber algo de William, ahora es el momento de hablar o guardar silencio para siempre. Y de lo contrario, te dejaré ir, William. Tomaremos un breve descanso y volveremos en cinco minutos. Y si quieres hablar con William, William irá a su sala de conferencias en Spatial Chat para discutir cualquier cosa que desees sobre Neo4j. William, ha sido un placer hablar contigo y que tengas un buen día. Adiós. Genial, muchas gracias. ¡Salud!

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
De GraphQL Zero a GraphQL Hero con RedwoodJS
GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
De GraphQL Zero a GraphQL Hero con RedwoodJS
Top Content
Tom Pressenwurter introduces Redwood.js, a full stack app framework for building GraphQL APIs easily and maintainably. He demonstrates a Redwood.js application with a React-based front end and a Node.js API. Redwood.js offers a simplified folder structure and schema for organizing the application. It provides easy data manipulation and CRUD operations through GraphQL functions. Redwood.js allows for easy implementation of new queries and directives, including authentication and limiting access to data. It is a stable and production-ready framework that integrates well with other front-end technologies.
Estado Local y Caché del Servidor: Encontrando un Equilibrio
Vue.js London Live 2021Vue.js London Live 2021
24 min
Estado Local y Caché del Servidor: Encontrando un Equilibrio
Top Content
This Talk discusses handling local state in software development, particularly when dealing with asynchronous behavior and API requests. It explores the challenges of managing global state and the need for actions when handling server data. The Talk also highlights the issue of fetching data not in Vuex and the challenges of keeping data up-to-date in Vuex. It mentions alternative tools like Apollo Client and React Query for handling local state. The Talk concludes with a discussion on GitLab going public and the celebration that followed.
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Top Content
There is a need for a standard library of APIs for JavaScript runtimes, as there are currently multiple ways to perform fundamental tasks like base64 encoding. JavaScript runtimes have historically lacked a standard library, causing friction and difficulty for developers. The idea of a small core has both benefits and drawbacks, with some runtimes abusing it to limit innovation. There is a misalignment between Node and web browsers in terms of functionality and API standards. The proposal is to involve browser developers in conversations about API standardization and to create a common standard library for JavaScript runtimes.
Baterías Incluidas Reimaginadas - El Resurgimiento de GraphQL Yoga
GraphQL Galaxy 2021GraphQL Galaxy 2021
33 min
Baterías Incluidas Reimaginadas - El Resurgimiento de GraphQL Yoga
Envelope is a powerful GraphQL plugin system that simplifies server development and allows for powerful plugin integration. It provides conformity for large corporations with multiple GraphQL servers and can be used with various frameworks. Envelope acts as the Babel of GraphQL, allowing the use of non-spec features. The Guild offers GraphQL Hive, a service similar to Apollo Studio, and encourages collaboration with other frameworks and languages.
Aplicaciones sólidas de React y GraphQL para personas con prisa
GraphQL Galaxy 2022GraphQL Galaxy 2022
29 min
Aplicaciones sólidas de React y GraphQL para personas con prisa
The Talk discusses the challenges and advancements in using GraphQL and React together. It introduces RedwoodJS, a framework that simplifies frontend-backend integration and provides features like code generation, scaffolding, and authentication. The Talk demonstrates how to set up a Redwood project, generate layouts and models, and perform CRUD operations. Redwood automates many GraphQL parts and provides an easy way for developers to get started with GraphQL. It also highlights the benefits of Redwood and suggests checking out RedwoodJS.com for more information.

Workshops on related topic

Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
React Summit 2022React Summit 2022
173 min
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
Top Content
Workshop
Kellen Mace
Kellen Mace
En esta masterclass, aprenderás cómo construir una aplicación Next.js que utiliza Apollo Client para obtener datos de un backend de WordPress sin cabeza y usarlo para renderizar las páginas de tu aplicación. Aprenderás cuándo debes considerar una arquitectura de WordPress sin cabeza, cómo convertir un backend de WordPress en un servidor GraphQL, cómo componer consultas usando el IDE GraphiQL, cómo colocar fragmentos GraphQL con tus componentes, y más.
Construye un Tablero Rico en Datos y Hermoso con la Rejilla de Datos de MUI X y Joy UI
React Summit 2023React Summit 2023
137 min
Construye un Tablero Rico en Datos y Hermoso con la Rejilla de Datos de MUI X y Joy UI
Top Content
WorkshopFree
Sam Sycamore
Siriwat (Jun) Kunaporn
2 authors
Aprende cómo utilizar el ecosistema completo de MUI para construir un tablero de gestión de proyectos hermoso y sofisticado en una fracción del tiempo que tomaría construirlo desde cero. En particular, veremos cómo integrar la Rejilla de Datos de MUI X con Joy UI, nuestra biblioteca de componentes más nueva y hermana del estándar de la industria Material UI.
Tabla de contenidos:- Presentando nuestro proyecto y herramientas- Configuración de la aplicación e instalación del paquete- Construcción del tablero- Prototipado, estilos y temas - Características de Joy UI- Filtrado, ordenación, edición - Características de la Rejilla de Datos- Conclusión, pensamientos finales, P&R
Construir con SvelteKit y GraphQL
GraphQL Galaxy 2021GraphQL Galaxy 2021
140 min
Construir con SvelteKit y GraphQL
Top Content
Workshop
Scott Spence
Scott Spence
¿Alguna vez has pensado en construir algo que no requiera mucho código de plantilla con un tamaño de paquete pequeño? En esta masterclass, Scott Spence irá desde el hola mundo hasta cubrir el enrutamiento y el uso de endpoints en SvelteKit. Configurarás una API de GraphQL en el backend y luego usarás consultas de GraphQL con SvelteKit para mostrar los datos de la API de GraphQL. Construirás un proyecto rápido y seguro que utiliza las características de SvelteKit, y luego lo desplegarás como un sitio completamente estático. Este curso es para los curiosos de Svelte que no han tenido una experiencia extensa con SvelteKit y quieren una comprensión más profunda de cómo usarlo en aplicaciones prácticas.

Tabla de contenidos:
- Inicio e introducción a Svelte
- Inicializar el proyecto frontend
- Recorrido por el proyecto esqueleto de SvelteKit
- Configurar el proyecto backend
- Consultar datos con GraphQL
- Recuperación de datos en el frontend con GraphQL
- Estilización
- Directivas de Svelte
- Enrutamiento en SvelteKit
- Endpoints en SvelteKit
- Despliegue en Netlify
- Navegación
- Mutaciones en GraphCMS
- Envío de mutaciones GraphQL a través de SvelteKit
- Preguntas y respuestas
Modelado de Bases de Datos Relacionales para GraphQL
GraphQL Galaxy 2020GraphQL Galaxy 2020
106 min
Modelado de Bases de Datos Relacionales para GraphQL
Top Content
Workshop
Adron Hall
Adron Hall
En esta masterclass profundizaremos en el modelado de datos. Comenzaremos con una discusión sobre varios tipos de bases de datos y cómo se mapean a GraphQL. Una vez que se haya establecido esa base, el enfoque se desplazará a tipos específicos de bases de datos y cómo construir modelos de datos que funcionen mejor para GraphQL en varios escenarios.
Índice de contenidosParte 1 - Hora 1      a. Modelado de Datos de Bases de Datos Relacionales      b. Comparando Bases de Datos Relacionales y NoSQL      c. GraphQL con la Base de Datos en menteParte 2 - Hora 2      a. Diseño de Modelos de Datos Relacionales      b. Relación, Construcción de Tablas Multijoin      c. Complejidades de Consulta de Modelado de Datos Relacionales y GraphQL
Prerrequisitos      a. Herramienta de modelado de datos. El formador utilizará dbdiagram      b. Postgres, aunque no es necesario instalar esto localmente, ya que estaré utilizando una imagen de Dicker de Postgres, de Docker Hub para todos los ejemplos      c. Hasura
Construir y Desplegar un Backend Con Fastify & Platformatic
JSNation 2023JSNation 2023
104 min
Construir y Desplegar un Backend Con Fastify & Platformatic
Top Content
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente GraphQL y REST APIs con un esfuerzo mínimo. La mejor parte es que también te permite desatar todo el potencial de Node.js y Fastify siempre que lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y plugins adicionales. En la masterclass, cubriremos tanto nuestros módulos de Open Source como nuestra oferta en la Nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/). 
En esta masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la Platformatic Cloud.
Construyendo APIs GraphQL sobre Ethereum con The Graph
GraphQL Galaxy 2021GraphQL Galaxy 2021
48 min
Construyendo APIs GraphQL sobre Ethereum con The Graph
Workshop
Nader Dabit
Nader Dabit
The Graph es un protocolo de indexación para consultar redes como Ethereum, IPFS y otras blockchains. Cualquiera puede construir y publicar APIs abiertas, llamadas subgrafos, para hacer que los datos sean fácilmente accesibles.

En este masterclass aprenderás cómo construir un subgrafo que indexa datos de blockchain de NFT del contrato inteligente Foundation. Desplegaremos la API y aprenderemos cómo realizar consultas para recuperar datos utilizando diferentes tipos de patrones de acceso a datos, implementando filtros y ordenamiento.

Al final del masterclass, deberías entender cómo construir y desplegar APIs de alto rendimiento en The Graph para indexar datos de cualquier contrato inteligente desplegado en Ethereum.