Há alguns anos, o NoSQL poderia parecer um monstro alienígena, mas, devido aos avanços na tecnologia e à forma como os aplicativos modernos da Web e de dispositivos móveis estão armazenando e acessando dados, ele é e se tornou uma parte essencial do desenvolvimento atual.
O Couchbase torna mais fácil do que nunca fazer a mudança (ou adição) de um banco de dados relacional para NoSQL com a adição de sua mais recente tecnologia de consulta.
O que você já sabe sobre SQL
Você provavelmente vem de um sistema de gerenciamento de banco de dados relacional (RDBMS), como MySQL, SQL Server, Oracle ou um dos muitos outros bancos de dados SQL populares. Todos esses bancos de dados têm algumas coisas em comum:
- Usar tabelas que contenham dados em linhas e colunas
- Restrito a tipos de dados específicos (em sua maior parte)
Os dados dessas tabelas podem estar relacionados.
Relacionamentos de dados entre tabelas
Se você já usa um RDBMS há tempo suficiente, sabe que muitas das suas tabelas estão relacionadas. Por exemplo, digamos que você tenha as duas tabelas a seguir:
Tabela de usuários
| Nome | Tipo |
|---|---|
| id | int |
| nome de usuário | varchar |
| senha | varchar |
Tabela de perfil
| Nome | Tipo |
|---|---|
| id | int |
| nome | varchar |
| user_id | int |
Uma relação é estabelecida entre essas duas tabelas no user_id da tabela de perfil e no id da tabela de usuário. Isso ocorre porque cada usuário terá um perfil. O relacionamento, obviamente, é baseado em chaves estrangeiras e primárias.
Unindo dados de tabela
Unir dados de duas tabelas é uma prática comum em um RDBMS. Continuando com o exemplo que listei acima, o seguinte provavelmente lhe parecerá familiar:
|
1 2 3 |
SELECT * FROM tblUser AS u JOIN tblProfile AS p ON u.id = p.user_id |
Você deve estar se perguntando onde quero chegar com isso, pois são coisas bem básicas. Você verá daqui a pouco.
O que você acha que sabe sobre NoSQL
Com o Couchbase e os bancos de dados NoSQL em geral, seus dados são armazenados como JSON. Todo o conceito de tabelas e linhas é jogado pela janela, o que pode parecer um pouco estranho no início. Por exemplo, o que acontece se você tiver os dois documentos JSON a seguir:
usuário_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" } |
Os dados nesses documentos permanecem não estruturados, o que significa que você não está limitado ao esquema de uma tabela. Se você quiser adicionar ou remover conteúdo, poderá fazê-lo sem tocar em nenhum outro documento ou alterar a estrutura permitida.
A forma como você consultaria esses documentos variaria entre as plataformas NoSQL, mas uma coisa permaneceria consistente. Se você quisesse juntar esses dois documentos, teria que fazer duas chamadas para o banco de dados no lado do servidor e reconstruir os dados em um único documento. Por exemplo, veja este psuedocode:
|
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 |
Não é muito divertido ter que unir documentos dessa forma, e pode ficar bastante confuso se você tiver que unir mais de um documento.
Como o Couchbase une SQL e NoSQL
Com o Couchbase 4.0, não é mais necessário projetar uma lógica complicada do lado do servidor para realizar as consultas simples que você normalmente veria em um RDBMS.
O Couchbase 4.0 apresenta o N1QL, que pode ser melhor considerado como uma extensão do SQL. Isso significa que você pode usar a linguagem SQL que você já conhece e adora com dados NoSQL. Usando o N1QL, você pode criar a seguinte consulta para os documentos mencionados anteriormente:
|
1 2 3 4 5 |
SELECT * FROM `bucket-name` AS u JOIN `bucket-name` AS p ON KEYS p.user_id |
Não é tão ruim, certo? É claro que há algumas diferenças em relação ao que você pode estar acostumado no MySQL ou similar, mas não o suficiente para complicar a compreensão ou o aprendizado.
Então, que outras vantagens o N1QL do Couchbase traz para o mundo do NoSQL? Muitas coisas, mas, por exemplo, aqui estão algumas delas:
- Todo o trabalho pesado de obtenção e manipulação de dados acontece no Couchbase, e não no seu servidor de aplicativos.
- Você tem todos os seus comandos SQL favoritos, além de outros.
- É rápido
Então, ele pode ser incluído nas linguagens de programação que você já usa?
O SQL funciona em praticamente todas as linguagens de programação, mas será que o N1QL funciona?
Há um SDK do Couchbase para a maioria das linguagens de programação populares. Se estiver desenvolvendo em Java, Node.js ou .NET, você poderá usar o N1QL em seu aplicativo com a mesma facilidade com que usa o SQL.
Conclusão
Fazer a mudança de um banco de dados que usa SQL para NoSQL pode parecer uma mudança assustadora, mas com o Couchbase 4.0 e o N1QL, a transição entre as duas plataformas não é muito diferente do que você já conhece. Para ter uma ideia do que a transição implicaria, dê uma olhada neste guia completo e interativo Tutorial N1QL.