database - una - tipos de indices en sql
¿Cuál es la forma más fácil de simular una tabla de base de datos con un índice en un almacén de valores clave? (3)
¿Cuál es la forma más fácil de simular una tabla de base de datos con un índice en un almacén de valores clave? El almacén de valores clave no tiene consultas a distancia ni claves ordenadas.
Las cosas que quiero simular (en orden de prioridad):
- Crear tablas
- Agregar columnas
- Crear índices
- Consulta basada en clave principal
- Consulta basada en columnas arbitrarias
El almacén de valores-clave debe permitir ordenar las claves y acceder a las teclas a distancia.
Entonces deberías crear dos diccionarios:
id -> payload
y
col1, id -> NULL
, donde la payload
debería contener todos los datos que contendría la tabla de la base de datos, y las claves del segundo diccionario deberían contener los valores de (col1, id)
de cada entrada del primer diccionario.
Si usa Redis (un almacén de clave-valor avanzado que admite cadenas, listas, conjuntos, etc.) entonces esto es bastante fácil. Ya he desarrollado un cliente de redis C # que tiene soporte nativo para almacenar los modelos de datos de POCO. Estos mismos POCO''s pueden ser usados por OrmLite para almacenarlos en un RDBMS.
Por cierto, Redis es rápido, tengo un punto de referencia que almacena y recupera toda la base de datos de Northwind (3202 registros) en menos de 1.2 segundos (ejecutándose dentro de UnitTest en un iMac de 3yo) .
Almacenar entidades de dos maneras
- Distintas entidades, donde combino el nombre del tipo de clase y la clave principal para crear una clave única, por ejemplo,
urn:user:1
- Luego mantengo un conjunto separado de claves principales (en un conjunto Redis) para hacer un seguimiento de todas mis entidades, usando una clave como:
ids:user
- Luego mantengo un conjunto separado de claves principales (en un conjunto Redis) para hacer un seguimiento de todas mis entidades, usando una clave como:
- En una lista del lado del servidor de Redis, que actúa como una tabla con soporte para paginación, usando una clave como:
lists:user
Use una tabla hash o diccionario. Si desea valores clave únicos, puede usar un GUID o un código hash.