Aplicaciones locales con ElectricSQL y React

Rate this content
Bookmark
Slides

Local-first es un nuevo paradigma para desarrollar aplicaciones con reactividad instantánea, multiusuario en tiempo real y sin conflictos offline incorporados. Esta charla muestra cómo desarrollar sistemas locales con React utilizando ElectricSQL, una plataforma de software de código abierto de los inventores de CRDTs.

FAQ

James Arthur es uno de los cofundadores y el CEO de Electric SQL.

Electric SQL es una plataforma que permite construir aplicaciones modernas como Figma y Linear directamente sobre Postgres, utilizando React. Está diseñada para aprovechar una arquitectura local-first.

Significa que Electric SQL prioriza el funcionamiento de las aplicaciones en el dispositivo local del usuario, permitiendo interactuar directamente con una base de datos local incrustada, y luego sincroniza los datos en segundo plano con el servidor.

Electric SQL mejora la experiencia del usuario al minimizar la latencia y permitir que las aplicaciones funcionen de manera instantánea y sin conexión, manteniendo una experiencia de usuario fluida y reactiva.

Electric SQL emplea un modelo de replicación activa-activa que permite la sincronización en tiempo real de los datos entre múltiples usuarios y plataformas, incluso en escenarios sin conexión.

Electric SQL elimina la necesidad de manejar complicaciones derivadas de la interacción con servicios web y problemas de red, simplifica la gestión del estado de la aplicación y ofrece ahorros en costos operativos.

Más información está disponible en el sitio web oficial electric-sql.com, y para discusiones y soporte técnico, los usuarios pueden unirse a la comunidad de Discord o seguir el proyecto en GitHub.

James Arthur
James Arthur
12 min
12 Dec, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Electric SQL es una capa de sincronización local que te permite construir aplicaciones directamente sobre Postgres usando React. Proporciona resultados instantáneos, funcionalidad offline y colaboración multiusuario incorporada. El sistema garantiza la consistencia transaccional causal plus y admite sincronización multiusuario en tiempo real y uso multiplataforma. Electric SQL elimina el código repetitivo, proporciona una experiencia de usuario de alta calidad y permite ahorros de costos y simplicidad operativa.

1. Introducción a Electric SQL

Short description:

Hola, soy James Arthur, cofundador y CEO de Electric SQL. Somos un Sinclair para construir aplicaciones modernas. Nuestro Sinclair local-first te permite construir aplicaciones directamente sobre Postgres usando React. Tenemos un equipo de geeks de sistemas distribuidos que han estado investigando y fortaleciendo la programación en el lado AP del teorema de cap. Esto ha llevado a un cambio en la arquitectura de las aplicaciones, con los sistemas local-first ganando más popularidad. Estos sistemas permiten la comunicación directa con una base de datos local y proporcionan resultados instantáneos, funcionalidad fuera de línea y colaboración multiusuario incorporada. Ahora pasemos a una demostración para ver esto en acción.

Entonces, hola, soy James Arthur. Soy uno de los cofundadores y soy el CEO de Electric SQL. Entonces esto es básicamente Electric. Somos un Sinclair para construir aplicaciones modernas. Entonces, específicamente, es un Sinclair local-first, del cual hablaré, y te permite construir aplicaciones como Figma, Linear, directamente sobre Postgres, usando React.

Solo para darte un poco de contexto sobre quiénes somos, básicamente somos un grupo de geeks de sistemas distribuidos. Y entonces, la compañía surge de una serie de investigaciones en el lado AP del teorema de cap, y tenemos a varias de las personas que han sido pioneras en muchas cosas en esa área en el equipo, incluyendo a dos de los inventores de CRDTs, etc. Y básicamente, estos académicos, durante las últimas probablemente un par de décadas o más, han estado trabajando para fortalecer básicamente lo que puedes hacer con la programación en el lado AP del teorema de cap. Y no entraré en detalles aquí, pero puedes investigar un poco sobre este tipo de investigación. Y ahora se está utilizando para cambiar la forma en que construyes aplicaciones hoy en día, y particularmente, se trata de apuntar a la transferencia de estado de la arquitectura de la aplicación. Entonces, los sistemas tradicionales cloud-first, se ejecutan en el servidor, hablan con servicios web a través de la red. Mientras que ahora tienes sistemas local-first, donde hablas directamente con una base de datos local que está incrustada dentro de la aplicación, y luego los datos se sincronizan en segundo plano. Y este tipo de arquitectura ahora está siendo utilizada por una amplia gama de aplicaciones exitosas. Así que mencioné cosas como Figma, Linear, tienes el nuevo Facebook Messenger, las nuevas aplicaciones de Google Workspace, tienes SuperHuman, por ejemplo. Y solo para darte una idea muy rápida de lo que está sucediendo allí, con un sistema tradicional cloud-first, tienes la red en el camino de interacción. Entonces el usuario hace clic en un botón, envía una solicitud al servidor, el servidor envía algo de vuelta al usuario, y luego ves los resultados. Y entonces tienes latencia por ir a través de la red, el servidor necesita estar en línea, tienes errores de red que tienes que codificar cada vez que vas a través de la red, y el usuario está allí viendo un spinner de carga o esperando que la página cargue. Mientras que, con local-first, básicamente mueves la base de datos, o un subconjunto de la base de datos, al cliente, el usuario hace clic en el botón, todo es instantáneo, por lo que no hay latencia porque no tienes la red en el camino de interacción, el usuario ve el resultado inmediatamente, las aplicaciones por defecto funcionan sin conexión, si el servidor se desconecta, la aplicación sigue funcionando. Luego introduces este tipo de capa de sincronización en vivo entre la base de datos y el cliente y en el servidor. Y juntos, lo que esto te da es este modelo donde obtienes una especie de trinidad sagrada de una gran experiencia de usuario moderna para el consumidor o prosumidor, que combina la reactividad instantánea para que las aplicaciones simplemente se sientan instantáneas de usar con colaboración multiusuario incorporada y también aplicaciones que pueden trabajar sin conexión y manejar conflictos por ti. Así que voy a saltar en este punto y vamos a pasar a una especie de demostración solo para ver eso en acción. Voy a cambiar de ventanas. Así que esto es pasar a electric. Como primero, solo voy a saltar para darte una idea de algo de el código si eso es útil como orientación. Entonces, por ejemplo, ¿cómo configuras esto? Correcto. Entonces tenemos una arquitectura donde tienes una base de datos Postgres en el fondo. Ejecutas un servicio de sincronización eléctrica. Entonces esto es un servicio de sincronización elixir. Es sin estado. Se ejecuta frente a PostgreSQL y maneja esa replicación por ti.

2. Acceso a Datos y Sincronización

Short description:

Generamos una biblioteca de acceso a datos segura desde el esquema de datos de Postgres. Define tu esquema como de costumbre y utiliza reglas para controlar la exposición de datos y los permisos. Autentica la aplicación local utilizando un JWT y envuelve el controlador SQL light con electrify para obtener una versión en vivo reactiva de la conexión a la base de datos. La API utiliza formas para controlar la sincronización de datos en el dispositivo local. Define formas para la replicación parcial dinámica y vincula consultas en vivo para actualizaciones en tiempo real. Escribe datos directamente en la base de datos local y mantén todo en vivo y reactivo.

Lo que hacemos entonces es generar una biblioteca de acceso a data segura desde el esquema de data de Postgres desde el esquema DDL. Así que la forma en que funciona es que simplemente defines tu esquema como de costumbre utilizando cualquier tooling que usarías para trabajar con Postgres. Así que algo como por ejemplo, luego, nosotros, proporcionamos un conjunto de reglas para poder controlar qué data se expone al sistema. Y también quién puede, quién tiene qué permisos sobre qué data. Es un poco como la security a nivel de fila, pero es un poco diferente porque está diseñado para ser portátil para que puedas ejecutar las reglas en el servicio de sincronización y en el cliente que te permite lograr algo llamado finalidad de los derechos locales. Así que no tienes que codificar para retrocesos y errores cada vez que lo haces. Correcto. Luego autenticas la aplicación local utilizando un JWT, y luego dentro del cliente, básicamente tomas el controlador SQL light estándar para tu entorno. Así que si estás en un navegador web utilizando una compilación Wasm de SQL lights, o si estás haciendo una aplicación móvil, es como un controlador React nativo o un expo o un controlador capacitor. Y luego envuelves eso con esta llamada para electrificarlo. Y eso te da una especie de versión en vivo reactiva de la conexión a la database que también es consciente de tu esquema, y sabe dónde conectar para la replicación. Luego proporcionamos una API utilizando un primitivo llamado formas, que te permite controlar qué data se sincroniza dentro y fuera del dispositivo local. Así que si te imaginas que empiezas con, digamos, una gran base de datos de postgres, y quieres sincronizar solo un subconjunto de la data en el dispositivo local. Defines una forma que podría ser como el proyecto 1234. Así que por ejemplo, aquí, como, podemos decir un proyecto e incluir todos los problemas y comentarios y los autores de los comentarios debajo de eso. Así que es un poco como hacer una consulta ORM con un gráfico de asociación. Y luego puedes definir múltiples formas a medida que avanzas. Y puedes actualizarlos en runtime. Y se agregarán en una especie de suscripción de forma combinada para una aplicación cliente en particular. Así que esa es una API que controla básicamente la replicación parcial dinámica, qué data se sincroniza en el dispositivo local. Y luego, una vez que tienes la data en la database para el dispositivo local, vinculas consultas en vivo. Así que en este caso, este es un ejemplo de resultados como una variable de estado de React, y usas un gancho de consulta en vivo. Y luego tienes un constructor de consultas inspirado en prisma para definir consultas de cómo quieres acceder a la data en la database. O puedes bajar a SQL puro. Y luego, en cualquier momento, puedes escribir data directamente en la database local. Y básicamente todo se mantiene en vivo y reactivo. Así que porque tienes este modelo de replicación activa bidireccional debajo de los componentes que controlan qué data se sincroniza dentro y fuera del dispositivo, en lugar de hacer solo consultas estáticas o recuperaciones estáticas contra el servicio de backend, lo que haces es mantener todo en vivo para que si otro usuario también cambia la data en otro lugar, tus componentes también se actualizan naturalmente. Así que aquí hay un ejemplo de un simple componente de React. Obtienes un control sobre la database electrificada. Configuras una consulta en vivo

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

Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Vue.js London Live 2021Vue.js London Live 2021
34 min
Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Top Content
Cuando pensamos en Vuex, Pinia, o tiendas en general, a menudo pensamos en la gestión de estado y los patrones Flux, pero no solo las tiendas no siempre siguen el patrón Flux, ¡hay mucho más en las tiendas que las hace valer la pena usar! Plugins, Devtools, renderizado en el lado del servidor, integraciones TypeScript... Vamos a sumergirnos en todo más allá de la gestión de estado con Pinia con ejemplos prácticos sobre plugins y Devtools para sacar el máximo provecho de tus tiendas.
Uso efectivo de useEffect
React Advanced Conference 2022React Advanced Conference 2022
30 min
Uso efectivo de useEffect
Top Content
¿Puede useEffect afectar negativamente a tu base de código? Desde la obtención de datos hasta la lucha con las APIs imperativas, los efectos secundarios son una de las mayores fuentes de frustración en el desarrollo de aplicaciones web. Y seamos honestos, poner todo en ganchos useEffect no ayuda mucho. En esta charla, desmitificaremos el gancho useEffect y obtendremos una mejor comprensión de cuándo (y cuándo no) usarlo, así como descubriremos cómo los efectos declarativos pueden hacer que la gestión de efectos sea más mantenible incluso en las aplicaciones React más complejas.
React Query: ¡Es hora de romper con tu "Estado Global"!
React Summit Remote Edition 2020React Summit Remote Edition 2020
30 min
React Query: ¡Es hora de romper con tu "Estado Global"!
Top Content
Una cantidad creciente de datos en nuestras aplicaciones React proviene de fuentes remotas y asíncronas y, aún peor, continúa disfrazándose como "estado global". En esta charla, obtendrás información sobre por qué la mayoría de tu "estado global" en realidad no es un estado en absoluto y cómo React Query puede ayudarte a buscar, almacenar en caché y gestionar tus datos asíncronos con una fracción del esfuerzo y el código al que estás acostumbrado.
Los Átomos de Jotai Son Simplemente Funciones
React Day Berlin 2022React Day Berlin 2022
22 min
Los Átomos de Jotai Son Simplemente Funciones
Top Content
Jotai es una biblioteca de gestión de estado. La hemos estado desarrollando principalmente para React, pero conceptualmente no está vinculada a React. En esta charla, veremos cómo funcionan los átomos de Jotai y aprenderemos sobre el modelo mental que deberíamos tener. Los átomos son una abstracción agnóstica del marco para representar estados, y básicamente son solo funciones. Comprender la abstracción de átomo ayudará a diseñar e implementar estados en sus aplicaciones con Jotai
Anunciando Starbeam: Reactividad Universal
JSNation 2022JSNation 2022
27 min
Anunciando Starbeam: Reactividad Universal
Starbeam es una biblioteca para construir sistemas de datos reactivos que se integran nativamente con frameworks de UI como React, Vue, Svelte o Ember. En esta charla, Yehuda anunciará Starbeam. Cubrirá la motivación para la biblioteca, y luego entrará en los detalles de cómo funciona la reactividad en Starbeam, y lo más importante, cómo puedes usarlo para construir bibliotecas reactivas hoy que funcionarán nativamente en cualquier framework de UI. Si eres realmente aventurero, también hablará sobre cómo podrías usar Starbeam en una aplicación existente utilizando el framework de tu elección y hablará sobre los beneficios de usar Starbeam como el sistema de gestión de estado en tu aplicación.
Pensando en React Query
React Summit 2023React Summit 2023
22 min
Pensando en React Query
Top Content
En esta charla, explicaré React Query desde una perspectiva diferente. Después de haber mantenido React Query durante más de dos años y haber respondido muchas preguntas (a menudo las mismas varias veces), siento que podría faltar una comprensión fundamental sobre la librería. Comenzaré con una rápida introducción sobre mi viaje en el mundo de código abierto y cómo llegué a conocer React Query, seguido de mostrar qué cambio de mentalidad es beneficioso cuando se trabaja con React Query - cómo "pensar en React Query".Tendré 3 conclusiones principales:1) React Query no es una biblioteca de obtención de datos. Es un administrador de estado asíncrono, hablaremos rápidamente sobre qué hace a un administrador de estado, por qué React Query es uno y qué significa "estado asíncrono".2) staleTime es tu mejor amigo. He visto un poco de confusión sobre cómo usar React Query como un administrador de estado, así que explicaré por qué configurar staleTime es en su mayoría todo lo que necesitas3) los parámetros son dependencias. Esto es importante para entender para mostrar los límites entre el estado del cliente y el estado del servidor, y es esencial cuando se hace la gestión del estado con React Query. Terminaré con una nota sobre "separación de preocupaciones" y sobre los compromisos de simplemente llamar `useQuery` donde lo necesites en tu árbol de componentes.

Workshops on related topic

Repensando el Estado del Servidor con React Query
React Summit 2020React Summit 2020
96 min
Repensando el Estado del Servidor con React Query
Top Content
Featured Workshop
Tanner Linsley
Tanner Linsley
La distinción entre el estado del servidor y el estado del cliente en nuestras aplicaciones puede ser un concepto nuevo para algunos, pero es muy importante entenderlo cuando se entrega una experiencia de usuario de primera calidad. El estado del servidor viene con problemas únicos que a menudo se cuelan en nuestras aplicaciones sorpresa como:
- Compartir datos entre aplicaciones- Caché y Persistencia- Deduplicación de Solicitudes- Actualizaciones en segundo plano- Gestión de Datos "Obsoletos"- Paginación y Recuperación Incremental- Memoria y Recolección de Basura- Actualizaciones Optimistas
Los gestores tradicionales de "Estado Global" pretenden que estos desafíos no existen y esto finalmente resulta en que los desarrolladores construyan sus propios intentos sobre la marcha para mitigarlos.
En esta masterclass, construiremos una aplicación que expone estos problemas, nos permite entenderlos mejor, y finalmente los convierte de desafíos a características usando una biblioteca diseñada para gestionar el estado del servidor llamada React Query.
Al final de la masterclass, tendrás una mejor comprensión del estado del servidor, el estado del cliente, la sincronización de datos asíncronos (un bocado, lo sé), y React Query.
Gestión del estado en React con Context y Hooks
React Summit Remote Edition 2021React Summit Remote Edition 2021
71 min
Gestión del estado en React con Context y Hooks
WorkshopFree
Roy Derks
Roy Derks
Mucho ha cambiado en el mundo de la gestión del estado en React en los últimos años. Donde Redux solía ser la principal biblioteca para esto, la introducción de las API de Contexto y Hooks de React ha revolucionado las cosas. Ya no necesitas bibliotecas externas para manejar tanto el estado del componente como el estado global en tus aplicaciones. En este masterclass aprenderás los diferentes enfoques para la gestión del estado en la era post-Redux de React, ¡todos basados en Hooks! Y como bonificación, exploraremos dos próximas bibliotecas de gestión del estado en el ecosistema de React.