Cuando los Mundos Chocan: Frontend vs Base de Datos

Rate this content
Bookmark

Los conflictos clásicos de diseño entre frontend y backend API se están convirtiendo en una molestia del pasado con las arquitecturas y herramientas serverless y Jamstack; los desarrolladores frontend están construyendo el stack completo. Pero esto plantea un nuevo problema: "¿Qué base de datos? ¿A quién le importa la base de datos?" Esta charla te ayudará con las preguntas que debes hacerle a la base de datos para tu próximo proyecto paralelo... y un lugar para comenzar tu viaje en los entresijos de las bases de datos.

8 min
18 Jun, 2021

Video Summary and Transcription

Tyler Hannon analiza la importancia de elegir la base de datos correcta y explica el acrónimo ACID, que significa Atomicidad, Consistencia, Aislamiento y Durabilidad. También destaca los desafíos y beneficios de las transacciones distribuidas en aplicaciones Fullstack. Se mencionan varios enfoques para resolver los desafíos de las bases de datos, con un enfoque en FAUNA y su protocolo CALVIN. El objetivo es tener una base de datos rápida, confiable y serverless que cumpla con requisitos específicos.

Available in English

1. Choosing the Right Database and Understanding ACID

Short description:

En esta charla, Tyler Hannon habla sobre la importancia de elegir la base de datos adecuada para tu aplicación. Presenta el acrónimo ACID, que significa Atomicidad, Consistencia, Aislamiento y Durabilidad. Tyler explica cada componente de ACID y su importancia en el mantenimiento de la integridad y confiabilidad de los datos. También destaca los desafíos y beneficios de las transacciones distribuidas en aplicaciones Fullstack modernas.

Excelente, muchas gracias por unirse hoy. Mi nombre es Tyler Hannon, y me encargo de community, soporte y éxito del cliente en Fauna. Mi experiencia está en sistemas distribuidos y bases de datos, por lo que un evento como JS Nation no es donde me siento más cómodo, pero de manera similar, mi experiencia es quizás donde tú no te sientes más cómodo. Y por eso titulé esta charla Cuando los Mundos Chocan.

Estamos en un cambio sociológico en el mundo Fullstack, donde un servidor web estaba adyacente a la database, a este nuevo mundo con clientes y APIs globales, donde la latencia y la consistencia en el borde son críticas. Pero desafortunadamente, todos estamos siendo bombardeados con publicidad. Así que cuando piensas en tu aplicación, la realidad es que solo queremos almacenar data en algún lugar, y queremos leer data de algún lugar. Y te garantizo que ya sea en un diagrama propio o en algún lugar dentro de la empresa para la que trabajas, hay una imagen de clip art que parece de los años 80 que representa una database con las notas, inserta el logo aquí. Y de eso quiero hablar hoy. ¿Qué es importante considerar al elegir qué logo insertar en ese diagrama de database?

Sabemos que la database a menudo es un cuello de botella, y al igual que muchos proveedores de database hablan ahora, también sabemos que las transacciones distribuidas son la solución, pero ¿distribuido, qué incluso es eso? ¿Y qué es esta cosa, ACID, de la que los proveedores de database siguen hablando? No está relacionado con lo que puedes encontrar aquí en la ciudad de la que soy, Ámsterdam. Es algo completamente diferente. De hecho, es un acrónimo y los acrónimos son extraños. Así que pensé que tomaría un poco de tiempo para explicar este acrónimo ACID contigo. Así que el primero es A, atómico o atomicidad. Básicamente, lo que está diciendo es que todos los cambios en los data se realizan como si fueran una sola operación. Es decir, todo sucede o no sucede. El ejemplo canónico para este tipo de flujo de trabajo son los servicios financieros. Si estoy debitando una cuenta esa operación de débito debe realizarse con éxito y la operación de crédito debe realizarse con éxito pero eso son muchas palabras. Así que me gusta pensar en la propiedad atómica como todo o nada. Hay C para consistente. Los data están en un estado consistente cuando comienza la transacción y cuando termina la transacción. Nuevamente, para usar nuestro ejemplo canónico, esto sería en una aplicación que transfiere fondos de un lugar a otro. Esta propiedad asegura que el valor total combinado esté en el mismo estado tanto antes como después de la transacción. Es válido antes, es válido después. I es para aislamiento, en el que el estado intermedio de una transacción es invisible para otros. Básicamente, las cosas suceden una a la vez o en paralelo, pero independientemente, el resultado es el mismo, y D es duradero, o durabilidad. Cuando la transacción está completa, los cambios se persisten y no se deshacen. Esto es probablemente lo que te resulta más familiar. Una vez que está completo, sobrevive a las interrupciones. Ahora, hay una amplia variedad de proveedores de database que hablan sobre transacciones distribuidas.

2. Choosing the Right Database Approach

Short description:

Existen varios enfoques para resolver los desafíos de las bases de datos, incluyendo Mongo, Dynamo, Firebase, Cassandra y FAUNA. El enfoque de FAUNA se basa en el protocolo de transacción distribuida y replicación de datos CALVIN. CALVIN garantiza la integridad de los datos y proporciona replicación global, permitiendo capacidades temporales e integración con múltiples proveedores de servicios en la nube. Para aquellos interesados en aprender más, recursos como CMU Database Group YouTube y jepson.io ofrecen información valiosa. En última instancia, el objetivo es tener una base de datos rápida, confiable y sin servidor que cumpla con tus requisitos específicos. Prueba FAUNA de forma gratuita y contáctanos si tienes alguna pregunta o necesitas soporte.

Hay muchos enfoques para resolver esto. Está el enfoque de Mongo y el enfoque de Dynamo, y lo que Firebase menciona, y lo que Cassandra menciona. También hablamos de esto en FAUNA. Nuestro enfoque, por lo que vale, se basa en una transacción distribuida y un protocolo de replicación de datos llamado CALVIN. Este es el título del artículo. CALVIN Fast Distributed Transactions for Partitioned Database Systems. Si tienes interés, te animo a que lo leas. Porque en última instancia, comprender cómo se cumplen tus requisitos es importante para asegurarte de que se cumplan por completo.

En resumen, es una transacción de varios documentos, y se ve un poco así. He construido una aplicación impresionante y atractiva en algún sabor de JavaScript utilizando los marcos y herramientas en los que confío, ya sea React, Next o cualquier otro. Mi aplicación tiene un fragmento de datos, y mi pequeño ayudante amigable en mi aplicación va a la base de datos y dice: `oye, aquí están los datos`. Y esos datos se registran en el registro de transacciones. Ese registro de transacciones se replica en otro sitio a nivel global. La replicación se confirma. Hay una serie de comprobaciones, cálculos y cosas confusas que entran en juego. Y luego se escriben los datos. A medida que esos datos se replican globalmente, porque están en el registro de transacciones, se devuelven a la aplicación como completos. Esto también permite algunas capacidades realmente geniales en cuanto a temporalidad, saber qué sucedió en qué momento. Y nos permite llegar a una variedad de proveedores de servicios en la nube en diversas regiones del mundo, algunas de las cuales están disponibles hoy y otras que estarán disponibles en el futuro.

Pero tu viaje apenas comienza. Te animo a que veas el CMU Database Group YouTube si te interesa cómo funcionan este tipo de cosas. A mirar jepson.io y las increíbles charlas que ha realizado Kyle Kingsbury y el trabajo que ha hecho en la mejora de las bases de datos distribuidas y en hacer que nuestra industria sea mejor. Pero en resumen, solo quieres guardar tus datos en algún lugar. Solo quieres leer lo que escribiste. Solo quieres que sea rápido en todas partes. Has descrito un sistema distribuido geográficamente redundante. Y como no quieres ser un operador, has descrito una base de datos diseñada para ser sin servidor. Solo quieres que funcione. Queremos que lo pruebes. Es gratis, hay un nivel gratuito. Es genial. También no dudes en contactarme. Estoy en Tyler Hannon. También nos puedes encontrar en fauna. Te estoy haciendo marketing. Siempre te están haciendo marketing. Ten en cuenta que tu viaje de comprensión sobre los fundamentos de las bases de datos distribuidas comienza por saber qué te importa. Muchas gracias y estaré en el chat si alguien tiene preguntas. ♪♪

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

TypeScript Congress 2022TypeScript Congress 2022
27 min
TypeScript and the Database: Who Owns the Types?
Top Content
We all love writing types in TypeScript, but we often find ourselves having to write types in another language as well: SQL. This talk will present the choose-your-own-adventure story that you face when combining TypeScript and SQL and will walk you through the tradeoffs between the various options. Combined poorly, TypeScript and SQL can be duplicative and a source of headaches, but done well they can complement one another by addressing each other's weaknesses.
JSNation 2023JSNation 2023
29 min
I Would Never Use an ORM
What's an ORM? An Object-Relational Mapping tool (ORM) is a library to map a SQL table to a Class. In most cases, ORMs force the users to structure their code to have Model objects that include both data access and business logic.
Once upon a time, I did several projects using ORMs as I followed the common belief that they would simplify the development and maintenance of projects. I was wrong. ORMs are often a hurdle to overcome for the most complex part of a project.
As the next stop of my journey, I recommended people use the native languages of their databases, e.g., SQL. This works great for the most part, but it creates quite a struggle: there is a lot of boilerplate code to write that can be pretty tedious. I was wrong, again.
Today I'm presenting you Platformatic DB.
Node Congress 2022Node Congress 2022
31 min
Database Access on the Edge with Cloudflare Workers & Prisma
Edge functions are pushing the limit of serverless computing – but with new tools, come new challenges. Due to their limitations, edge functions don't allow talking to popular databases like PostgreSQL and MySQL. In this talk, you will learn how you can connect and interact with your database from Cloudflare Workers using the Prisma Data Proxy.
You can check the slides for Alex's talk here. 
React Summit 2022React Summit 2022
22 min
A Frontend Developer’s Guide to Web3
There is a lot of hype and interest around diving into the Web3 space, and it can be hard to manage the information overload and the emphasis on learning new languages to work on smart contracts. Many developers in the frontend space ask, “How much of this new information do I need to transition into web3?” The truth is as a React developer, the skills I know are essential in web3. Let’s add some context around how to leverage those existing skills to succeed in this new space.
In this talk, we’re going to explore how to build the correct context and the technologies to understand to help you dive into web3 as a front-end developer. We’ll go over popular packages like Ethers, which can be used in React applications to interact with wallets and existing smart contracts. We will also explore how you can leverage your Javascript skills to build full-stack dApps using managed services like Moralis and Thirdweb.
Let’s demystify some of the concepts in web3 and leverage our existing skills to start building.
Remix Conf Europe 2022Remix Conf Europe 2022
41 min
Remix Persistence With DynamoDB
Remix is the best React framework for working with the second most important feature of the web: forms. (Anchors are more important.) But building forms is the fun part: the tricky part is what happens when a web consumer submits a form! Not the client side validation logic but the brass tacks backend logic for creating, reading, updating, destroying, and listing records in a durable database (CRUDL). Databases can be intimidating. Which one to choose? What are the tradeoffs? How do I model data for fast queries? In this talk, we'll learn about the incredibly powerful AWS DynamoDB. Dynamo promises single-digit millisecond latency no matter how much data you have stored, scaling is completely transparent, and it comes with a generous free tier. Dynamo is a different level of database but it does not have to be intimidating.

Workshops on related topic

Remix Conf Europe 2022Remix Conf Europe 2022
195 min
How to Solve Real-World Problems with Remix
Featured Workshop
- Errors? How to render and log your server and client errorsa - When to return errors vs throwb - Setup logging service like Sentry, LogRocket, and Bugsnag- Forms? How to validate and handle multi-page formsa - Use zod to validate form data in your actionb - Step through multi-page forms without losing data- Stuck? How to patch bugs or missing features in Remix so you can move ona - Use patch-package to quickly fix your Remix installb - Show tool for managing multiple patches and cherry-pick open PRs- Users? How to handle multi-tenant apps with Prismaa - Determine tenant by host or by userb - Multiple database or single database/multiple schemasc - Ensures tenant data always separate from others
GraphQL Galaxy 2020GraphQL Galaxy 2020
106 min
Relational Database Modeling for GraphQL
Top Content
WorkshopFree
In this workshop we'll dig deeper into data modeling. We'll start with a discussion about various database types and how they map to GraphQL. Once that groundwork is laid out, the focus will shift to specific types of databases and how to build data models that work best for GraphQL within various scenarios.
Table of contentsPart 1 - Hour 1      a. Relational Database Data Modeling      b. Comparing Relational and NoSQL Databases      c. GraphQL with the Database in mindPart 2 - Hour 2      a. Designing Relational Data Models      b. Relationship, Building MultijoinsTables      c. GraphQL & Relational Data Modeling Query Complexities
Prerequisites      a. Data modeling tool. The trainer will be using dbdiagram      b. Postgres, albeit no need to install this locally, as I'll be using a Postgres Dicker image, from Docker Hub for all examples      c. Hasura
Node Congress 2023Node Congress 2023
33 min
Scaling up Your Database With ReadySet
WorkshopFree
The database can be one of the hardest parts of a web app to scale. Many projects end up using ad-hoc caching systems that are complex, error-prone, and expensive to build. What if you could drop in a ready-built caching system to enable better throughput and latency with no code changes to your application?
Join developers Aspen Smith and Nick Marino to see how you can change one line of config in your app and use ReadySet to scale up your query performance by orders of magnitude today.
Remix Conf Europe 2022Remix Conf Europe 2022
156 min
Building a Realtime App with Remix and Supabase
Workshop
Supabase and Remix make building fullstack apps easy. In this workshop, we are going to learn how to use Supabase to implement authentication and authorization into a realtime Remix application. Join Jon Meyers as he steps through building this app from scratch and demonstrating how you can harness the power of relational databases!
GraphQL Galaxy 2021GraphQL Galaxy 2021
143 min
Building a GraphQL-native serverless backend with Fauna
WorkshopFree
Welcome to Fauna! This workshop helps GraphQL developers build performant applications with Fauna that scale to any size userbase. You start with the basics, using only the GraphQL playground in the Fauna dashboard, then build a complete full-stack application with Next.js, adding functionality as you go along.

In the first section, Getting started with Fauna, you learn how Fauna automatically creates queries, mutations, and other resources based on your GraphQL schema. You learn how to accomplish common tasks with GraphQL, how to use the Fauna Query Language (FQL) to perform more advanced tasks.

In the second section, Building with Fauna, you learn how Fauna automatically creates queries, mutations, and other resources based on your GraphQL schema. You learn how to accomplish common tasks with GraphQL, how to use the Fauna Query Language (FQL) to perform more advanced tasks.