Os prós e contras de diferentes formatos de dados: valores-chave x tuplas

Como os dados são formatados sob o capô

Hieu Nguyen (Jack) Blocked Desbloquear Seguir Seguindo 28 de dezembro Foto de Franki Chamaki no Unsplash

Trabalhar no Vasern (um banco de dados cliente para o React Native) me deu a oportunidade de experimentar e testar diferentes formatos de dados, que incluem valores-chave, documentos orientados a colunas, documentos e tuplas. Cada formato foi projetado para se adequar a diferentes cenários.

Os critérios desses testes se concentram no desempenho, na capacidade de pesquisar valores e na eficiência do espaço. Além disso, não é necessário ter chaves e índices classificados no disco. Eles serão carregados na memória para pesquisa rápida.

Neste post, vou recapitular os prós e contras dos dois formatos comuns: valores-chave e formato de tuplas. Além disso, introduzirei valores-chave com tags , uma extensão de valores-chave com pesquisa de índice, que se beneficia do formato de tuplas.

Armazenamento de valor-chave

Uma coleção do armazenamento de valor-chave

Valores-chave armazenam uma coleção de pares de chave e valor, onde às vezes o valor representa mais de um valor, separados por delimitadores (isto é, uma vírgula). Esses pares são organizados em blocos com comprimento fixo (para deslocamento rápido entre registros).

Exemplo de layout de armazenamento de valor-chave de bloco único (" 0" representa valor nulo / vazio)

Vantagens do armazenamento de valor-chave:

  • Formato de dados simples torna as operações de gravação e leitura rápidas
  • O valor pode ser qualquer coisa, incluindo JSON, esquemas flexíveis

Desvantagens:

  • Otimizado apenas para dados com chave única e valor. Um analisador é necessário para armazenar vários valores.
  • Não otimizado para pesquisa. A pesquisa requer a verificação de toda a coleção ou a criação de valores de índice separados

Tuples Data Store (RDBMS)

O formato de dados de tuplas existe há muitas décadas. É usado em bancos de dados relacionais, como MySQL, Postgres, etc.

Um exemplo do formato de dados de tuplas no Banco de Dados Relacional

Ao contrário do formato de valores-chave, ele depende do esquema predefinido para organizar registros em linhas e seus valores em colunas de tamanho fixo. Cada valor apenas / geralmente representa uma única informação.

Vantagens do armazenamento de dados de tuplas:

  • O formato de dados estruturados ajuda a percorrer os valores dos registros rapidamente
  • Otimizado para pesquisa (uso comum de SQL para consultar registros)

Desvantagens:

  • Constrangido pela estrutura do esquema
  • Mudança de esquema geralmente requer reescrever todo o banco de dados

Tagged Key-Value Store

Uhmm, TKVF (formato de valor de chave marcado)

O valor-chave com tag é uma versão estendida do armazenamento de valores-chave – tem mais de uma chave para um único valor. Em outras palavras, ele possui uma chave, índices (ou tags) e um valor de corpo para cada registro. Onde:

  • Chave e índices serão carregados na memória na inicialização
  • O valor do corpo pode ser qualquer coisa, desde uma string simples, BSON / JSON ou um valor separado por vírgulas.

Vantagens do armazenamento de valor-chave com tags:

  • Semiestruturado, que ajuda a percorrer registros e índices rapidamente
  • Otimizado para pesquisa (através de chaves e índices)
  • Um corpo de registro pode ser qualquer coisa, ideal para esquemas flexíveis
  • Eficiência do espaço (chave, os índices são organizados em colunas estreitas)

Desvantagens:

  • Mudança de esquema que inclui índices pode precisar de migração de dados

Um exemplo de formato do valor-chave marcado

Vasern com armazenamento de valores-chave com tags

O Vasern é um banco de dados do cliente para o React Native. A versão mais recente foi lançada em versão beta para testes e estava usando armazenamento de valores-chave.

Na próxima versão 0.3.0-RC , o Vasern está migrando para um layout de armazenamento de valor-chave marcado. O foco está em seu poderoso recurso de pesquisa e eficiência de espaço.

Abaixo está uma consulta de demonstração. É lindo, não é?

Uma demonstração da consulta do Vasern

Conclusão

Existem muitos bancos de dados com diferentes formatos de dados para escolher um aplicativo. Dois formatos comuns são:

  • Pares de valor-chave – leitura e gravação rápidas, mas não otimizadas para pesquisa. É frequentemente usado como armazenamento de dados simples, NoSQL.
  • Tuplas – suporta vários valores digitados, índices, otimizados para pesquisa, mas falta de flexibilidade de esquema. Comumente usado para bancos de dados relacionais.

Ao combinar os pontos fortes mencionados acima, o formato Tagged-Key-Values é flexível com o esquema de dados e é capaz de pesquisar registros por meio de chaves e índices. Isso geralmente é mais adequado para o banco de dados de um cliente.