Acabamos de describir la base de datos (DB)
usando metáforas como biblioteca, memoria, bibliotecario, red.
Ahora, veámoslo moverse frente a tus ojos.
Cómo un servicio web
almacena información,
cómo recuerda,
cómo la recupera para mostrarla,
cómo se conecta entre sí,
Al seguir con Rails directamente,
es hora de sentirlo en tu cuerpo.
Parte 1. Creando la "memoria" del servicio web
Creando el modelo de Publicación (Post)
La memoria web comienza con un registro.
Llamaremos a este registro "Publicación (Post)".
En la terminal:
rails generate model Post title:string body:text
rails db:migrate
Estas dos líneas son muy simples.
"Crearemos una estructura llamada Post con espacios de memoria 'título' y 'cuerpo'."
"Y reflejaremos esa estructura en un almacén de memoria real, la DB."
Ahora Rails ha creado el "estante de libros (tabla de Post)" en la biblioteca,
y ahora se pueden colocar libros de dos espacios, "título y cuerpo", en ese estante.
Parte 2. Hablando directamente con la DB a través de la consola de Rails
Colocando un libro en el estante de la biblioteca
En la terminal:
rails console
Y coloquemos un libro.
Post.create(title: "Mi primera publicación", body: "¡Guardado en Rails DB!")
En el momento en que presionas Enter,
has registrado el primer dato en la "memoria" del servicio web.
Esta sola línea es mucho más poderosa
que cualquier código que hayas creado hasta ahora.
Porque has creado
una memoria que no desaparecerá.
Parte 3. La DB es un "espacio que nunca olvida"
Preguntemos de nuevo a la consola de Rails.
Post.all
Entonces Rails le dice a la DB.
"Trae todos los libros en el estante de Publicaciones."
Y la DB trae los datos que acabas de guardar
sin el más mínimo error.
Esto es
la memoria del servicio web, un espacio que nunca olvida.
Incluso si apagas y enciendes el servidor,
reinicias la computadora,
o vuelves una semana después,
ese recuerdo seguirá ahí.
Parte 4. Experimentando con una "biblioteca ordenada y detallada"
ID, created_at, updated_at son el sistema de clasificación de la biblioteca
Revisemos la Publicación que acabamos de crear.
post = Post.first
post.id
post.created_at
post.updated_at
Ahora entiendes.
id = número del libro
created_at = fecha de creación del libro
updated_at = fecha de última modificación
La DB, sin que tú hagas nada,
organiza meticulosamente todos los registros.
Estos registros
son la base para almacenar y estructurar una gran cantidad de datos.
La DB no es solo un espacio simple,
sino una biblioteca ordenada y detallada.
Parte 5. Experimentando como un "bibliotecario que encuentra rápidamente millones de libros"
Busquemos un libro por ciertas condiciones
Post.where(title: "Mi primera publicación")
Rails le dice a la DB.
"Encuentra solo los libros con el título 'Mi primera publicación'."
La DB encuentra y muestra los datos al instante.
Ya sea que haya 10 datos, 1,000 datos,
o 1 millón de datos,
los encuentra con precisión.
Porque la DB tiene
bibliotecarios sobrenaturales que pueden encontrar instantáneamente en una biblioteca de gran escala.
Acabas de
usar directamente esa habilidad.
Parte 6. Creando una "red intelectual conectada" por ti mismo
Creemos un Comentario y conectémoslo con una Publicación
El momento en que un servicio web se vuelve realmente poderoso
es cuando los datos comienzan a conectarse entre sí.
Por ejemplo,
permite comentar en una publicación de blog.
rails generate model Comment body:text post:references
rails db:migrate
Este modelo dice:
"Los comentarios tienen un contenido (body)"
"Guardarán datos relacionados con qué publicación (post_id) pertenecen"
Informemos a Rails sobre la relación
app/models/post.rb
class Post < ApplicationRecord
has_many :comments
end
app/models/comment.rb
class Comment < ApplicationRecord
belongs_to :post
end
Ahora, Post y Comment
se convierten en una red intelectual conectada perfectamente.
Parte 7. Creando datos conectados en la realidad
En la consola:
post = Post.first
post.comments.create(body: "¡Primer comentario!")
post.comments.create(body: "¡Segundo comentario!")
Ahora, veamos los comentarios.
post.comments
La DB sabe exactamente.
Qué comentario pertenece a qué Publicación
Cuántos comentarios hay en una publicación
Cuándo se guardaron esos comentarios
Cuando los datos se conectan entre sí,
el servicio web se convierte en un "sistema orgánico".
Parte 8. Ahora entiendes por qué la DB es el "corazón" de un servicio web
En el breve ejercicio que has seguido hasta ahora,
has experimentado lo siguiente.
La memoria del servicio web
→ Proceso de almacenar y recuperar datos
Un espacio que nunca olvida
→ Los datos creados con Post.create se mantienen permanentemente
Una biblioteca detallada
→ Funciones de organización automática como id, timestamps
Un bibliotecario que encuentra rápidamente millones de libros
→ Búsqueda de datos deseados con Post.where
Una red intelectual
→ Establecimiento de relaciones Post ↔ Comment para crear conexiones de datos
El corazón del servicio web
→ Almacenamiento, relaciones y búsquedas, todo se realiza en la DB
Ahora,
comprendes por qué un servicio web no puede existir sin una base de datos
y por qué manejar la DB es manejar el servicio web
con tus propias manos.
Un pensamiento que brota en la mente del lector
El lector que ha seguido hasta aquí seguramente pensará así.
"Espera... con esto,
¿podría crear mi propio blog?""¿Podría hacer una aplicación de tareas por hacer con mis amigos?"
"Los servicios web... parecen más factibles de lo que pensaba."
Este es el momento de la iluminación que estábamos buscando.
Cuando los datos se vuelven tangibles,
el servicio web ya no es una tecnología futura lejana,
sino una realidad que se crea en mis manos en este momento.
Y Rails te susurra así.
"Ahora, decide qué servicio crear.
Luego, te ayudaré."