Video Summary and Transcription
Los principios de React pueden desmoronarse para aplicaciones full-stack, pero Convex ha construido un backend y una base de datos para abordar esto. Los cinco principios de React discutidos incluyen reactividad, consistencia, escrituras superpuestas y almacenamiento en caché. La base de datos de Convex garantiza consistencia, maneja escrituras superpuestas con transacciones y invalida automáticamente las cachés basadas en las escrituras relevantes. Convex combina lo mejor de las bases de datos SQL y NoSQL y aplica los principios de React para simplificar el desarrollo de aplicaciones y mejorar la experiencia del usuario.
1. Introducción a Convex y los principios de React
React ha revolucionado la forma en que construimos interfaces interactivas para nuestras aplicaciones. Convex ha construido un backend y una base de datos que lleva los principios de React al desarrollador full-stack y a la experiencia del usuario. El primer principio es la reactividad, lo que te permite construir puntos finales tan reactivos como tu estado. El segundo principio es la consistencia, asegurando una vista consistente incluso con obtenciones de datos separadas. El tercer principio trata sobre las escrituras superpuestas, garantizando actualizaciones correctas incluso con múltiples actualizaciones de estado.
Hola a todos. Soy Michael. Soy un ingeniero de software en Convex. He estado construyendo aplicaciones full-stack durante más de 15 años. Y como todos ustedes probablemente saben, React ha revolucionado la forma en que construimos interfaces interactivas para nuestras aplicaciones.
Pero cuando se trata de construir aplicaciones full-stack para múltiples usuarios que interactúan entre sí, los principios de React que nos ayudan a construir excelentes interfaces se desmoronan un poco. Así que en Convex, nos propusimos construir un backend y una base de datos que lleve estos principios al desarrollador full-stack y a la experiencia del usuario. Y hoy hablaré sobre cinco de estos principios de React, y cada uno resuelve un problema que estoy seguro de que muchos de ustedes han encontrado.
Entonces, el primer principio es la reactividad. Vamos a construir una aplicación de tareas en React, la demostración favorita de todos. Entonces, ¿qué sucede cuando toco una tarea y presiono enter? Actualizo mi estado y React renderiza automáticamente la lista de tareas. Súper fácil. Pero, ¿qué pasa si quiero almacenar la lista de tareas en una base de datos? Necesitaré un punto final de lectura y un punto final de escritura, y cuando presiono enter, llamo a mi punto final de escritura, pero nada sucede automáticamente. Tendré que indicarle a React o a mi framework que vuelva a obtener el punto final de lectura, y esto puede volverse bastante difícil y complejo a medida que las aplicaciones crecen en complejidad, y ni siquiera funcionará si otro usuario es el que agrega la tarea a la lista. Con Convex, puedes construir puntos finales que son tan reactivos como tu estado. En este ejemplo, simplemente escribo la tarea en la base de datos, y la base de datos se encarga de determinar que la lista de tareas necesita actualizarse, envía las actualizaciones a todos los clientes y esos desencadenan que React se vuelva a renderizar automáticamente. Y eso es todo lo que se necesita.
El segundo principio es la consistencia. No sé ustedes, pero las interfaces inconsistentes me frustran. ¿Alguna vez has estado en Slack o Instagram y hay un distintivo rojo y haces clic en ese icono y abres una lista y no hay nada? Bueno, la razón por la que eso sucede es porque ese distintivo rojo y la lista en la bandeja están alimentados por diferentes puntos finales de backend y se obtienen por separado. Así que el propio React del lado del cliente no tiene este problema. Si tienes algún estado y luego renderizas un árbol de componentes de React, la vista que obtienes siempre es consistente. Pero una vez que agregamos una base de datos y separamos las obtenciones de datos, es posible que obtengas una vista inconsistente de tu base de datos. Convex, por otro lado, siempre es consistente. En este ejemplo, cuando los datos cambian, la base de datos determina que esas dos lecturas necesitan actualizarse y envía la actualización al cliente y luego el cliente instruye nuevamente a React para renderizar un resultado consistente en un solo paso. El tercer principio tiene que ver con las escrituras superpuestas. El ejemplo más simple en el que puedes demostrar esto es incrementar un contador. Necesitas el valor actual y luego actualizas el contador al valor actual más uno. Y en React, podemos asegurarnos de que esto siempre funcione correctamente incluso si hay múltiples lugares donde se puede actualizar el estado, múltiples actualizaciones de estado juntas pasando una función de actualización a la función de configuración. React luego ejecuta todas las actualizaciones de estado en serie para que dos actualizaciones no puedan arruinar la lógica de la otra.
1. Introducción a los principios de React y Convex
Hola a todos. Soy Michael, un ingeniero de software en Convex. React revolucionó el desarrollo front-end, pero sus principios se desmoronan para aplicaciones full-stack con interacciones de múltiples usuarios. En Convex, construimos un backend y una base de datos para abordar esto. Hoy, hablaré sobre cinco principios de React, cada uno resolviendo problemas comunes. El primero es la reactividad. Al utilizar Convex, puedes construir puntos finales reactivos que actualizan automáticamente el estado y desencadenan el re-renderizado de React.
Hola a todos. Soy Michael. Soy un ingeniero de software en Convex. He estado construyendo aplicaciones full-stack durante más de 15 años. Y como todos ustedes probablemente saben, React ha revolucionado la forma en que construimos interfaces interactivas para nuestras aplicaciones.
Pero cuando se trata de construir aplicaciones full-stack para múltiples usuarios que interactúan entre sí, los principios de React que nos ayudan a construir excelentes interfaces se desmoronan un poco. Así que en Convex, nos propusimos construir un backend y una base de datos que lleve estos principios al desarrollador full-stack y a la experiencia del usuario. Y hoy hablaré sobre cinco de estos principios de React, y cada uno resuelve un problema que estoy seguro de que muchos de ustedes han encontrado.
Entonces, el primer principio es la reactividad. Vamos a construir una aplicación de tareas en React, la demostración favorita de todos. Entonces, ¿qué sucede cuando toco una tarea y presiono enter? Actualizo mi estado y React renderiza automáticamente la lista de tareas. Súper fácil. Pero, ¿qué pasa si quiero almacenar la lista de tareas en una base de datos? Necesitaré un punto final de lectura y un punto final de escritura, y cuando presiono enter, llamo a mi punto final de escritura, pero nada sucede automáticamente. Tendré que indicarle a React o a mi framework que vuelva a obtener el punto final de lectura, y esto puede volverse bastante difícil y complejo a medida que las aplicaciones crecen en complejidad, y ni siquiera funcionará si otro usuario es el que agrega la tarea a la lista. Con Convex, puedes construir puntos finales que son tan reactivos como tu estado. En este ejemplo, simplemente escribo la tarea en la base de datos, y la base de datos se encarga de determinar que la lista de tareas necesita actualizarse, envía las actualizaciones a todos los clientes y esos desencadenan que React se vuelva a renderizar automáticamente. Y eso es todo lo que se necesita.
1. Introducción a Convex y los principios de React
React ha revolucionado la forma en que construimos interfaces interactivas. Convex resuelve el problema de construir aplicaciones full-stack para múltiples usuarios. Los principios de React se desmoronan cuando se trata de construir aplicaciones full-stack. Convex introduce cinco principios de React. El primer principio es la reactividad, que permite actualizaciones automáticas. El segundo principio es la consistencia, asegurando una interfaz de usuario consistente. El tercer principio trata sobre las escrituras superpuestas y garantiza actualizaciones de estado correctas en React.
Hola a todos. Soy Michael. Soy un ingeniero de software en Convex. He estado construyendo aplicaciones full-stack durante más de 15 años. Y como todos ustedes probablemente saben, React ha revolucionado la forma en que construimos interfaces interactivas para nuestras aplicaciones. Pero cuando se trata de construir aplicaciones full-stack para múltiples usuarios que interactúan entre sí, los principios de React que nos ayudan a construir excelentes interfaces se desmoronan un poco. Así que en Convex, nos propusimos construir un backend y una base de datos que lleve estos principios al desarrollador full-stack y a la experiencia de usuario. Y hoy hablaré sobre cinco de estos principios de React, y cada uno resuelve un problema que estoy seguro de que muchos de ustedes han encontrado. Entonces, el primer principio es la reactividad. Vamos a construir una aplicación de tareas en React, la demostración favorita de todos. Entonces, ¿qué sucede cuando toco una tarea y presiono enter? Actualizo mi estado y React renderiza automáticamente la lista de tareas. Súper fácil. Pero, ¿qué pasa si quiero almacenar la lista de tareas en una base de datos? Necesitaré un punto final de lectura y un punto final de escritura, y cuando presiono enter, llamo a mi punto final de escritura, pero nada sucede automáticamente. Tendré que indicarle a React o a mi framework que vuelva a obtener el punto final de lectura, y esto puede volverse bastante difícil y complejo a medida que las aplicaciones crecen en complejidad, y ni siquiera funcionará si otro usuario es el que agrega la tarea a la lista. Con Convex, puedes construir puntos finales que son tan reactivos como tu estado. En este ejemplo, simplemente escribo la tarea en la base de datos, y la base de datos se encarga de determinar que la lista de tareas necesita actualizarse, envía las actualizaciones a todos los clientes y esos desencadenan que React se vuelva a renderizar automáticamente. Y eso es todo lo que se necesita. El segundo principio es la consistencia. No sé ustedes, pero las interfaces inconsistentes me frustran. ¿Alguna vez has estado en Slack o Instagram y hay un distintivo rojo y haces clic en ese icono y abres una lista y no hay nada? Bueno, la razón por la que eso sucede es porque ese distintivo rojo y la lista en la bandeja están alimentados por diferentes puntos finales de backend y se obtienen por separado. Así que el propio React del lado del cliente no tiene este problema. Si tienes algún estado y luego renderizas un árbol de componentes de React, la vista que obtienes siempre es consistente. Pero una vez que agregamos una base de datos y separamos las obtenciones de datos, es posible que obtengas una vista inconsistente de tu base de datos. Convex, por otro lado, siempre es consistente. En este ejemplo, cuando los datos cambian, la base de datos determina que esas dos lecturas necesitan actualizarse y envía la actualización al cliente y luego el cliente instruye nuevamente a React para renderizar un resultado consistente en un solo paso. El tercer principio tiene que ver con las escrituras superpuestas. El ejemplo más simple en el que puedes demostrar esto es incrementar un contador. Necesitas el valor actual y luego actualizas el contador al valor actual más uno. Y en React, podemos asegurarnos de que esto siempre funcione correctamente incluso si hay múltiples lugares donde se puede actualizar el estado, múltiples actualizaciones de estado juntas pasando una función de actualización a la función de configuración. React luego ejecuta todas las actualizaciones de estado en serie para que dos actualizaciones no puedan arruinar la lógica de la otra.
1. Introducción a los principios de React
React ha revolucionado la forma en que construimos interfaces interactivas. Sin embargo, cuando se trata de construir aplicaciones full-stack para múltiples usuarios, los principios de React se desmoronan. Convex resuelve este problema construyendo un backend y una base de datos reactivos. El primer principio es la reactividad, donde Convex permite construir puntos finales reactivos que actualizan automáticamente el cliente.
Hola a todos. Soy Michael. Soy un ingeniero de software en Convex. He estado construyendo aplicaciones full-stack durante más de 15 años. Y como todos ustedes probablemente saben, React ha revolucionado la forma en que construimos interfaces interactivas para nuestras aplicaciones.
Pero cuando se trata de construir aplicaciones full-stack para múltiples usuarios que interactúan entre sí, los principios de React que nos ayudan a construir excelentes interfaces se desmoronan un poco. Así que en Convex, nos propusimos construir un backend y una base de datos que lleve estos principios al desarrollador full-stack y a la experiencia de usuario. Y hoy hablaré sobre cinco de estos principios de React, y cada uno resuelve un problema que estoy seguro de que muchos de ustedes han encontrado.
Entonces, el primer principio es la reactividad. Vamos a construir una aplicación de tareas en React, la demostración favorita de todos. Entonces, ¿qué sucede cuando toco una tarea y presiono enter? Actualizo mi estado y React renderiza automáticamente la lista de tareas. Súper fácil. Pero, ¿qué pasa si quiero almacenar la lista de tareas en una base de datos? Necesitaré un punto final de lectura y un punto final de escritura, y cuando presiono enter, llamo a mi punto final de escritura, pero nada sucede automáticamente. Tendré que indicarle a React o a mi framework que vuelva a obtener el punto final de lectura, y esto puede volverse bastante difícil y complejo a medida que las aplicaciones crecen en complejidad, y ni siquiera funcionará si otro usuario es el que agrega la tarea a la lista.
Con Convex, puedes construir puntos finales que son tan reactivos como tu estado. En este ejemplo, simplemente escribo la tarea en la base de datos, y la base de datos se encarga de determinar que la lista de tareas necesita actualizarse, envía las actualizaciones a todos los clientes y esos desencadenan que React se vuelva a renderizar automáticamente. Y eso es todo lo que se necesita.
2. Transacciones, Caché y API de Base de Datos
Las transacciones en React son económicas y garantizan que ninguna escritura concurrente pueda afectar su lógica. La caché en el backend es difícil debido a la invalidación automática de la caché. El principio de React de ser simplemente JavaScript proporciona simplicidad, composabilidad y seguridad de tipos. La API de la base de datos Convex es simple, componible y completamente tipada. Aplicar estos principios al stack completo simplifica el desarrollo de aplicaciones y permite una mejor experiencia de usuario. El backend Convex es completamente de código abierto y viene con un panel de control y varias características.
Pero en una base de datos, que puede tener muchas tablas, cada una con muchas filas, no puedes simplemente ejecutar en serie cada mutación. Ahí es donde entran en juego las transacciones y resuelven este problema. El problema con los backends actuales es que las transacciones son costosas y, por lo tanto, opcionales. Es muy fácil escribir código de backend como este, y que falle, no en las pruebas, no durante el desarrollo, sino solo en producción cuando obtienes suficiente volumen de escritura para que esas escrituras concurrentes arruinen la lógica de los demás.
React está diseñado para que las transacciones sean económicas. Esto le permite requerir que cada punto final que escribe en la base de datos se ejecute como una transacción automáticamente, asegurando que ninguna escritura concurrente pueda afectar su lógica. El cuarto principio se relaciona con la caché. Un componente de React es una función pura de las props y el estado al UI renderizado. Y esto nos permite almacenar en caché fácilmente el renderizado de los componentes con el memo de React. Esto conduce a una mejor rendimiento. La caché es aún más importante en el backend, donde el propietario del servidor, a veces nosotros, paga el costo de la computación, no el usuario. Pero la caché en el backend hoy en día es difícil porque la invalidación de la caché no es automática. Tomemos el ejemplo de la lista de tareas pendientes. Queremos almacenar en caché la lista de tareas pendientes, pero cuando se agrega un nuevo elemento, un backend tradicional no sabe que necesita invalidar la caché. Nuevamente, debemos instruirlo manualmente.
Entonces, la base de datos Convex realiza un seguimiento de qué escrituras afectan a qué lecturas, y en Convex, los puntos finales de lectura son funciones puras del estado de la base de datos al resultado. Por lo tanto, si no ocurren escrituras relevantes, el punto final de lectura se puede almacenar en caché automáticamente y con una validación de caché perfecta. Y el último principio que mencionaré es que React es simplemente JavaScript, ¿verdad? Y este principio le otorga a React varias propiedades excelentes. Es altamente componible, fácil de construir sobre él y viene con una excelente verificación de tipos opcional, gracias a TypeScript, como hemos escuchado antes. Y JavaScript se está volviendo cada vez más popular en el backend, lo cual es genial, pero cuando se trata de bases de datos, las opciones más populares parecen ser Postgres y MySQL. Y SQL es lo opuesto a JavaScript. Es difícil de componer, difícil de construir sobre él y no tiene verificación de tipos estática en sí mismo. Y esta falta de composabilidad conduce a consultas complejas que la base de datos intenta optimizar, lo que luego conduce a un rendimiento impredecible. Y es por eso que la API de la base de datos Convex es simplemente JavaScript.
2. Consistencia, Escrituras Superpuestas y Caché
El segundo principio es la consistencia. En React del lado del cliente, la vista siempre es consistente. Sin embargo, agregar una base de datos puede introducir inconsistencias. Convex, por otro lado, garantiza la consistencia actualizando el cliente con los cambios de datos en un solo paso. El tercer principio se refiere a las escrituras superpuestas, que se pueden resolver con transacciones. Los backends actuales a menudo carecen de transaccionalidad, lo que lleva a fallas lógicas. El cuarto principio se centra en la caché, donde la base de datos de Convex invalida automáticamente las cachés basadas en las escrituras relevantes, asegurando una validación perfecta de la caché.
El segundo principio es la consistencia. A mí, personalmente, me frustran las interfaces de usuario inconsistentes. ¿Alguna vez has estado en Slack o Instagram y hay un distintivo rojo y haces clic en ese ícono y abres una lista y no hay nada allí? Bueno, la razón de esto es porque ese distintivo rojo y la lista en la bandeja están alimentados por diferentes puntos finales del backend y se obtienen por separado. Por sí mismo, React del lado del cliente no tiene este problema. Si tienes algún estado y luego renderizas un árbol de componentes de React, la vista que obtienes siempre es consistente.
Pero una vez que agregamos una base de datos y separamos las consultas de datos, es posible que obtengas una vista inconsistente desde tu base de datos. En cambio, Convex siempre es consistente. En este ejemplo, cuando los datos cambian, la base de datos determina que esas dos lecturas necesitan actualizarse y envía la actualización al cliente, luego el cliente instruye nuevamente a React para renderizar un resultado consistente en un solo paso.
El tercer principio tiene que ver con las escrituras superpuestas. El ejemplo más simple en el que se puede demostrar esto es incrementar un contador. Necesitas el valor actual y luego actualizas el contador sumándole uno al valor actual. Y en React, podemos asegurarnos de que esto siempre funcione correctamente incluso si hay varios lugares donde se puede actualizar el estado, múltiples actualizaciones de estado juntas pasando una función de actualización a la función set. React luego ejecuta todas las actualizaciones de estado en serie para que dos actualizaciones no puedan afectar la lógica de la otra.
Pero en una base de datos, que puede tener muchas tablas, cada una con muchas filas, no puedes simplemente ejecutar en serie cada mutación. Ahí es donde entran en juego las transacciones y resuelven este problema. El problema con los backends actuales es que las transacciones son costosas y, por lo tanto, opcionales. Es muy fácil escribir código de backend como este, y que falle, no en las pruebas, no durante el desarrollo, sino solo en producción cuando obtienes suficiente volumen de escritura para que esas escrituras concurrentes arruinen la lógica de los demás. React está diseñado para que las transacciones sean baratas. Esto le permite requerir que cada punto final que escribe en la base de datos se ejecute como una transacción automáticamente, asegurando que ninguna escritura concurrente pueda arruinar su lógica.
El cuarto principio se relaciona con la caché. Un componente de React es una función pura de las props y el estado al UI renderizado. Y esto nos permite almacenar en caché fácilmente el renderizado de los componentes con el memo de React. Esto conduce a una mejor rendimiento. La caché es aún más importante en el backend, donde el propietario del servidor, a veces nosotros, paga el costo de la computación, no el usuario. Pero la caché en el backend hoy en día es difícil porque la invalidación de la caché no es automática. Tomemos el ejemplo de la lista de tareas pendientes. Queremos almacenar en caché la lista de tareas pendientes, pero cuando se agrega un nuevo elemento, un backend tradicional no sabe que necesita invalidar la caché. Nuevamente, debemos instruirlo manualmente.
2. Principios de Convex: Transacciones, Caché y API
Las transacciones resuelven el problema de ejecutar mutaciones en una base de datos. React garantiza transacciones baratas y caché. React es altamente componible y fácil de construir sobre él. La base de datos de Convex realiza un seguimiento de las escrituras y afecta las lecturas, lo que permite la caché automática. La API de la base de datos de Convex es simple, componible y completamente tipada. Convex combina lo mejor de las bases de datos SQL y NoSQL. Convex está construyendo un backend de código abierto con escalabilidad y varias características.
Pero en una base de datos, que puede tener muchas tablas, cada una con muchas filas, no puedes simplemente ejecutar en serie cada mutación. Ahí es donde entran en juego las transacciones y resuelven este problema. El problema con los backends actuales es que las transacciones son costosas y, por lo tanto, opcionales. Es muy fácil escribir código de backend como este, y que falle, no en las pruebas, no durante el desarrollo, sino solo en producción cuando obtienes suficiente volumen de escritura para que esas escrituras concurrentes arruinen la lógica de los demás. React está diseñado para que las transacciones sean baratas. Esto le permite requerir que cada punto final que escribe en la base de datos se ejecute como una transacción automáticamente, asegurando que ninguna escritura concurrente pueda arruinar su lógica. El cuarto principio se relaciona con la caché. Un componente de React es una función pura de las props y el estado al UI renderizado. Y esto nos permite almacenar en caché fácilmente el renderizado de los componentes con el memo de React. Esto conduce a una mejor rendimiento. La caché es aún más importante en el backend, donde el propietario del servidor, a veces nosotros, paga el costo de la computación, no el usuario. Pero la caché en el backend hoy en día es difícil porque la invalidación de la caché no es automática. Tomemos el ejemplo de la lista de tareas pendientes. Queremos almacenar en caché la lista de tareas pendientes, pero cuando se agrega un nuevo elemento, un backend tradicional no sabe que necesita invalidar la caché. Nuevamente, debemos instruirlo manualmente. Entonces, la base de datos de Convex realiza un seguimiento de qué escrituras afectan a qué lecturas, y en Convex, el punto final de lectura es una función pura del estado de la base de datos al resultado. Por lo tanto, si no ocurren escrituras relevantes, el punto final de lectura se puede almacenar en caché automáticamente y con una validación de caché perfecta. Y el último principio que mencionaré es que React es solo JavaScript, ¿verdad? Y este principio le otorga a React varias propiedades excelentes. Es altamente componible, fácil de construir sobre él y viene con una gran verificación opcional de tipos gracias a TypeScript, como hemos escuchado antes. Y JavaScript se está volviendo cada vez más popular en el backend, lo cual es genial, pero cuando se trata de bases de datos, las opciones más populares parecen ser Postgres y MySQL. Y SQL es lo opuesto a JavaScript. Es difícil de componer, difícil de construir sobre él y no tiene verificación de tipos estática en sí mismo. Y esta falta de composabilidad conduce a consultas complejas que la base de datos intenta optimizar, lo que luego conduce a un rendimiento impredecible. Y es por eso que la API de la base de datos de Convex es simplemente JavaScript. Es simple, altamente componible, fácil de construir sobre él y completamente tipado, lo que permite la seguridad de tipos de extremo a extremo hasta el cliente. Y Convex combina lo mejor de las bases de datos SQL y NoSQL al ser relacional y, sin embargo, no requerir que definas un esquema de antemano. Entonces, tomando estos cinco principios de React y aplicándolos a la pila completa, simplifica radicalmente la construcción de aplicaciones y permite una mejor UX. Y, por supuesto, este backend necesita escalar según tus necesidades. Así que estamos construyendo un backend así en Convex. Es completamente de código abierto, viene con un panel de control y un montón de características, búsqueda de texto, almacenamiento de archivos, programación, y más de lo que no tuve la oportunidad de hablar.
2. Consistencia y Convex
Las interfaces de usuario inconsistentes pueden ser frustrantes, especialmente cuando diferentes partes de la interfaz de usuario son alimentadas por puntos finales de backend separados. Convex garantiza la consistencia al enviar actualizaciones juntas al cliente, lo que resulta en una vista consistente.
El segundo principio es la consistencia. No sé ustedes, pero las interfaces de usuario inconsistentes me frustran. ¿Alguna vez han estado en Slack o Instagram y hay un distintivo rojo y hacen clic en ese icono y abren una lista y no hay nada allí? Bueno, la razón de eso es porque ese distintivo rojo y la lista en la bandeja son alimentados por diferentes puntos finales de backend y se obtienen por separado. Entonces, el propio React del lado del cliente no tiene este problema. Si tienes algún estado y luego renderizas un árbol de componentes React, la vista que obtienes siempre es consistente. Pero una vez que agregamos una base de datos y separamos las obtenciones de datos, es posible que obtengas una vista inconsistente de tu base de datos.
Por otro lado, Convex siempre es consistente. En este ejemplo, cuando los datos cambian, la base de datos determina que esas dos lecturas necesitan actualizarse y envía la actualización junta al cliente, luego el cliente instruye nuevamente a React para renderizar un resultado consistente en un solo paso.
3. Convex Backend and Features
El backend convex combina bases de datos SQL y NoSQL sin requerir una definición de esquema previa. Aplicar los principios de React al stack completo simplifica el desarrollo de aplicaciones y permite una mejor experiencia de usuario. El backend convex es completamente de código abierto y viene con un panel de control y varias características.
Es simple, altamente componible, fácil de construir sobre él y completamente tipado, lo que permite una seguridad de tipos de extremo a extremo hasta el cliente. Y convex combina lo mejor de las bases de datos SQL y NoSQL siendo relacional y sin requerir que definas un esquema previo.
Tomando estos cinco principios de React y aplicándolos al stack completo, simplifica radicalmente la construcción de aplicaciones y permite una mejor experiencia de usuario. Y, por supuesto, este backend necesita escalar según tus necesidades. Por eso estamos construyendo un backend así en convex. Es completamente de código abierto, viene con un panel de control y un montón de características, búsqueda de texto, almacenamiento de archivos, programación, y más de lo que no tuve la oportunidad de hablar.
Si estás interesado, échale un vistazo o ven y hazme una pregunta más tarde. Muchas gracias. Gracias. Gracias. Muchas gracias. Muchas gracias. Gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias.
3. Backend, React Principles, and Convex
La base de datos de Convex realiza un seguimiento de las escrituras y lecturas, lo que permite el almacenamiento en caché automático y una validación perfecta. Las grandes propiedades de React incluyen ser altamente componibles, fáciles de construir y tener verificación de tipos opcional con TypeScript. La falta de capacidad de composición de SQL conduce a consultas complejas y un rendimiento impredecible. La API de la base de datos de Convex es simple, componible y completamente tipada, combinando lo mejor de las bases de datos SQL y NoSQL. Aplicar los principios de React al stack completo simplifica el desarrollo de aplicaciones y permite una mejor experiencia de usuario. Convex está construyendo un backend escalable, completamente de código abierto, con características como búsqueda de texto, almacenamiento de archivos y programación.
La base de datos de Convex realiza un seguimiento de qué escrituras afectan a qué lecturas, y en Convex, los puntos finales de lectura son funciones puras desde el estado de la base de datos hasta el resultado. Por lo tanto, si no ocurren escrituras relevantes, el punto final de lectura se puede almacenar en caché automáticamente y con una validación de caché perfecta.
Y el último principio que mencionaré es que React es solo JavaScript, ¿verdad? Y este principio le otorga a React varias propiedades excelentes. Es altamente componible, fácil de construir y viene con una excelente verificación de tipos opcional, gracias a TypeScript, como hemos escuchado antes.
Y JavaScript se está volviendo cada vez más popular en el backend, lo cual es genial, pero cuando se trata de bases de datos, las opciones más populares parecen ser Postgres y MySQL. Y SQL es lo opuesto a JavaScript. Es difícil de componer, difícil de construir y no tiene verificación de tipos estática en sí mismo. Y esta falta de capacidad de composición conduce a consultas complejas que la base de datos intenta optimizar, lo que luego conduce a un rendimiento impredecible.
Y por eso la API de la base de datos de Convex es simplemente JavaScript. Es simple, altamente componible, fácil de construir y completamente tipada, lo que permite una seguridad de tipo de extremo a extremo hasta el cliente. Y Convex combina lo mejor de las bases de datos SQL y NoSQL al ser relacional y, al mismo tiempo, no requerir definir un esquema de antemano.
Por lo tanto, tomar estos cinco principios de React y aplicarlos al stack completo simplifica radicalmente la construcción de aplicaciones y permite una mejor UX. Y, por supuesto, este backend necesita escalar según tus necesidades. Por eso estamos construyendo un backend así en Convex. Es completamente de código abierto, viene con un panel de control y un montón de características, búsqueda de texto, almacenamiento de archivos, programación y más de lo que no tuve la oportunidad de hablar. Así que si estás interesado, échale un vistazo o ven a hacerme una pregunta más tarde.
Muchas gracias. Gracias. Gracias. Muchas gracias. Muchas gracias. Gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias.
3. Convex: Siguientes Pasos y Agradecimiento
Si estás interesado, échale un vistazo o ven a hacerme una pregunta más tarde. Muchas gracias.
Así que si estás interesado, échale un vistazo o ven a hacerme una pregunta más tarde. Muchas gracias. Gracias. Gracias. Muchas gracias. Muchas gracias. Gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias.
3. Overlapping Writes and Transactions
React asegura el manejo correcto de las escrituras superpuestas ejecutando todas las actualizaciones de estado en serie. En las bases de datos, se necesitan transacciones para manejar mutaciones concurrentes. Sin embargo, los backends actuales hacen que las transacciones sean costosas y opcionales, lo que puede llevar a posibles fallas. Por otro lado, React hace que las transacciones sean económicas y requiere que los puntos finales que escriben en la base de datos se ejecuten como transacciones, asegurando la consistencia lógica.
El tercer principio tiene que ver con las escrituras superpuestas. El ejemplo más simple en el que se puede demostrar esto es incrementar un contador. Necesitas el valor actual y luego actualizas el contador al valor actual más uno. Y en React, podemos asegurarnos de que esto siempre funcione correctamente incluso si hay múltiples lugares donde se puede actualizar el estado, múltiples actualizaciones de estado juntas pasando una función de actualización a la función de configuración. React luego ejecuta todas las actualizaciones de estado en serie para que dos actualizaciones no puedan afectar la lógica de la otra. Pero en una base de datos, que puede tener muchas tablas, cada una con muchas filas, no puedes simplemente ejecutar en serie cada mutación. Ahí es donde entran en juego las transacciones, y ellas resuelven este problema.
El problema con los backends actuales es que las transacciones son costosas y, por lo tanto, opcionales. Es muy fácil escribir código de backend de esta manera, y que falle, no en las pruebas, no durante el desarrollo, sino solo en producción cuando obtienes suficiente volumen de escritura para que esas escrituras concurrentes arruinen la lógica de las demás. React está diseñado para que las transacciones sean económicas. Esto le permite requerir que cada punto final que escribe en la base de datos se ejecute automáticamente como una transacción, asegurando que ninguna escritura concurrente pueda afectar su lógica.
4. Caching, JavaScript, and the Convex Backend
La caché en React conduce a un mejor rendimiento. La caché en el backend es desafiante debido a la invalidación manual de la caché. La base de datos de Convex realiza un seguimiento de las escrituras y lecturas, lo que permite una caché automática y validada. El uso de JavaScript en React proporciona composabilidad y seguridad de tipos. Las bases de datos SQL carecen de composabilidad y verificación de tipos, a diferencia de JavaScript. La API de la base de datos de Convex permite la simplicidad, la composabilidad y la seguridad de tipos de extremo a extremo. Combina lo mejor de las bases de datos SQL y NoSQL, simplificando el desarrollo de aplicaciones. El backend de Convex es de código abierto, escalable y ofrece varias características.
El cuarto principio se relaciona con la caché. Un componente de React es una función pura de props y estado al UI renderizado. Y esto nos permite almacenar en caché fácilmente el renderizado de los componentes con el memo de React. Esto conduce a un mejor rendimiento. La caché es aún más importante en el backend, donde el propietario del servidor, a veces nosotros, paga el costo de la computación, no el usuario.
Pero la caché en el backend es difícil hoy en día porque la invalidación de la caché no es automática. Tomemos como ejemplo la lista de tareas pendientes. Queremos almacenar en caché la lista de tareas pendientes, pero cuando se agrega un nuevo elemento, un backend tradicional no sabe que necesita invalidar la caché. Nuevamente, necesitamos instruirlo manualmente.
Entonces, la base de datos de Convex realiza un seguimiento de qué escrituras afectan a qué lecturas, y en Convex, los puntos finales de lectura son funciones puras desde el estado de la base de datos hasta el resultado. Por lo tanto, si no ocurren escrituras relevantes, el punto final de lectura se puede almacenar en caché automáticamente y con una validación de caché perfecta. Y el último principio que mencionaré es que React es simplemente JavaScript, ¿verdad? Y este principio le otorga a React varias propiedades excelentes. Es altamente componible, fácil de construir sobre él y viene con una gran verificación de tipos opcional gracias a TypeScript, como hemos escuchado antes.
Y JavaScript se está volviendo cada vez más popular en el backend, lo cual es genial, pero cuando se trata de bases de datos, las opciones más populares parecen ser Postgres y MySQL. Y SQL es lo opuesto a JavaScript. Es difícil de componer, difícil de construir sobre él y no tiene verificación de tipos estática en sí mismo. Y esta falta de composabilidad conduce a consultas complejas que la base de datos intenta optimizar, lo que luego conduce a un rendimiento impredecible. Y es por eso que la API de la base de datos de Convex es simplemente JavaScript. Es simple, altamente componible, fácil de construir sobre él y completamente tipado, lo que permite una seguridad de tipos de extremo a extremo hasta el cliente.
Y Convex combina lo mejor de las bases de datos SQL y NoSQL al ser relacional y, sin embargo, no requerir que definas un esquema de antemano. Entonces, tomando estos cinco principios de React y aplicándolos a la pila completa, simplifica radicalmente la construcción de aplicaciones y permite una mejor UX. Y, por supuesto, este backend debe escalar según tus necesidades. Por eso estamos construyendo un backend así en Convex. Es completamente de código abierto, viene con un panel de control y un montón de características, búsqueda de texto, almacenamiento de archivos, programación, y más de lo que no tuve la oportunidad de hablar. Así que si estás interesado, échale un vistazo o ven a hacerme una pregunta más tarde. Muchas gracias. Gracias. Gracias. Muchas gracias. Muchas gracias. Gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias. Muchas gracias.
Comments