Hace unos años NoSQL podría haber sonado como un monstruo alienígena, pero dados los avances en la tecnología y la forma en que las aplicaciones web y móviles modernas almacenan y acceden a los datos, es y se ha convertido en una parte fundamental del desarrollo actual.
Couchbase facilita más que nunca el cambio (o la adición) de una base de datos relacional a NoSQL con la incorporación de su última tecnología de consulta.
Lo que ya sabe sobre SQL
Probablemente proceda de un sistema de gestión de bases de datos relacionales (RDBMS) como MySQL, SQL Server, Oracle o alguna de las muchas otras bases de datos SQL populares. Todas estas bases de datos comparten algunas cosas en común:
- Utilizar tablas que contengan datos en filas y columnas
- Limitado a determinados tipos de datos (en su mayor parte)
Los datos de estas tablas podrían estar relacionados.
Relaciones de datos entre tablas
Si llevas tiempo utilizando un RDBMS, sabrás que muchas de tus tablas estarán relacionadas. Por ejemplo, supongamos que tiene las dos tablas siguientes:
Tabla de usuarios
| Nombre | Tipo |
|---|---|
| id | int |
| nombre de usuario | varchar |
| contraseña | varchar |
Tabla de perfiles
| Nombre | Tipo |
|---|---|
| id | int |
| nombre | varchar |
| usuario_id | int |
Se establece una relación entre estas dos tablas sobre el user_id de la tabla profile y el id de la tabla user. Esto se debe a que cada usuario tendrá un perfil. Por supuesto, la relación se basa en claves externas y primarias.
Unir datos de tablas
Unir datos de dos tablas es una práctica común en un RDBMS. Siguiendo con el ejemplo anterior, es probable que lo siguiente te resulte familiar:
|
1 2 3 |
SELECT * FROM tblUser AS u JOIN tblProfile AS p ON u.id = p.user_id |
Te estarás preguntando a dónde quiero llegar, porque esto es bastante básico. Lo verás en un momento.
Lo que cree saber sobre NoSQL
Con Couchbase y las bases de datos NoSQL en general tus datos se almacenan como JSON. Todo el concepto de tablas y filas se tira por la ventana, lo que puede parecer un poco extraño al principio. Por ejemplo, qué pasa si tienes los siguientes dos documentos JSON:
usuario_1
|
1 2 3 4 5 6 |
{ username: "nraboy", password: "1234" } |
perfil_1
|
1 2 3 4 5 6 |
{ name: "Nic Raboy", user_id: "user_1" } |
Los datos de estos documentos siguen siendo no estructurados, lo que significa que no estás confinado al esquema de una tabla. Si quieres añadir o eliminar contenido, puedes hacerlo sin tocar ningún otro documento ni cambiar la estructura permitida.
La forma de consultar estos documentos varía según la plataforma NoSQL, pero hay algo que no varía. Si quisieras unir estos dos documentos, tendrías que hacer dos llamadas a la base de datos del lado del servidor y reconstruir los datos en un único documento. Por ejemplo, tomemos este psuedocódigo:
|
1 2 3 4 5 6 7 |
get all documents from profile view get user where user id is profile.user_id do something with profile and user document end end |
No es muy divertido tener que unir documentos de esa manera, y puede resultar bastante lioso si tienes que unir más de un documento.
Cómo Couchbase une SQL y NoSQL
Con Couchbase 4.0 ya no tienes que diseñar complicada lógica del lado del servidor para realizar las consultas simples que verías típicamente en un RDBMS.
Couchbase 4.0 introduce N1QL, que se puede considerar como una extensión de SQL. Lo que esto significa para ti es que puedes usar el lenguaje SQL que ya conoces y amas, con datos NoSQL. Usando N1QL puedes crear la siguiente consulta para los documentos mencionados anteriormente:
|
1 2 3 4 5 |
SELECT * FROM `bucket-name` AS u JOIN `bucket-name` AS p ON KEYS p.user_id |
No está tan mal, ¿verdad? Claro que hay algunas diferencias con lo que podría estar acostumbrado en MySQL o similares, pero no lo suficiente como para que sea complicado de entender o aprender.
¿Qué otras ventajas aporta N1QL de Couchbase al mundo NoSQL? Muchas cosas, pero por ejemplo, aquí van algunas:
- Todo el trabajo pesado para obtener y manipular datos ocurre en Couchbase, no en tu servidor de aplicaciones.
- Tendrás todos tus comandos SQL favoritos, además de otros extras.
- Es rápido
¿Puede incluirse en los lenguajes de programación que ya utiliza?
SQL funciona en casi todos los lenguajes de programación, pero ¿lo hará N1QL?
Existe un SDK de Couchbase para la mayoría de los lenguajes de programación más populares. Tanto si desarrollas en Java, Node.js o .NET, puedes usar N1QL en tu aplicación con la misma facilidad con la que usas SQL.
Conclusión
Pasar de una base de datos que utiliza De SQL a NoSQL puede parecer un movimiento aterrador, pero con Couchbase 4.0 y N1QL, la transición entre las dos plataformas no es demasiado diferente de lo que ya sabes. Para que te hagas una idea de lo que supondría la transición, echa un vistazo a este vídeo interactivo y muy completo Tutorial N1QL.