Qual é a maneira mais fácil de simular uma tabela de banco de dados com um índice em um valor de chave loja?

StackOverflow https://stackoverflow.com/questions/2272996

Pergunta

Qual é a maneira mais fácil de simular uma tabela de banco de dados com um índice em um valor de chave loja?O valor da chave loja NÃO tem variou consultas e NÃO ordenou chaves.

As coisas que eu quero simular (em ordem de prioridade):

  1. Criar tabelas
  2. Adicionar colunas
  3. Criar índices
  4. Consulta com base na chave primária
  5. Consulta com base na arbitrário colunas
Foi útil?

Solução

Se você usar Redis (um avançadas de armazenamento de chave-valor que suporta strings, listas, conjuntos, etc.) Então, isto é muito fácil.Eu já desenvolveram uma C# redis cliente que tem suporte nativo para armazenar POCO de dados de modelos.Exatamente estas mesmas POCO pode ser usado por OrmLite para armazená-lo em um RDBMS.

Pela maneira como o Redis é rápido, eu tenho um referência que armazena e recupera todo o Banco de dados Northwind (3202 registros) no âmbito de 1.2 segundos (correndo dentro de um UnitTest em um 3yo iMac).

Eu armazenamento de entidades de duas maneiras

  • Entidades distintas, onde eu combinar o tipo de Classe e de nome de Chave Primária para criar uma chave exclusiva e.g. urn:user:1
    • Eu, então, manter um conjunto separado de chaves primárias (em um Redis Conjunto) para acompanhar todas as minhas entidades, usando uma chave como: ids:user
  • Em um Redis do lado do servidor de lista - que funciona muito bem como uma tabela com suporte a paginação, usando uma chave como: lists:user

Outras dicas

Use um hashtable ou dicionário. Se você deseja valores -chave exclusivos, pode usar um GUID ou HashCode.

A loja de valores-chave deve apoiar o pedido das chaves e o acesso à distância às teclas.

Então você deve criar dois dicionários:

id -> payload

e

col1, id -> NULL

, Onde payload deve conter todos os dados que a tabela de banco de dados conteria e as chaves do segundo dicionário devem conter os valores de (col1, id) de cada entrada do primeiro dicionário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top