¿Cuál es la manera más fácil para simular una tabla de base de datos con un índice en un almacén de claves de valor?

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

Pregunta

¿Cuál es la manera más fácil para simular una tabla de base de datos con un índice en un almacén de claves de valor? El almacén de claves valor ha oscilado NO y NO consultas ordenada claves.

Las cosas que quiero para simular (en orden de prioridad):

  1. Crear tablas
  2. Añadir columnas
  3. Crear índices
  4. Consulta basada en la clave principal
  5. Consulta basada en columnas arbitrarias
¿Fue útil?

Solución

Si utiliza listas Redis (un avanzado almacén de claves-valor que admite cadenas, , juegos, etc.) entonces esto es bastante fácil. Ya he desarrollado un C # Redis cliente que tiene soporte nativo para almacenar datos de POCO modelos. Estos exactamente el mismo de POCO puede ser utilizado por OrmLite para almacenarla en un RDBMS.

Por cierto Redis es rápido, tengo un que las tiendas y recupera la base de datos Northwind (3202 registros) en menos de 1,2 segundos (que se ejecuta dentro de un unittest en un iMac 3yo) .

almaceno entidades en dos formas

  • entidades distintas, donde combino el nombre del tipo de clase y la clave principal para crear una clave única, por ejemplo, urn:user:1
    • I luego mantener un conjunto separado de las claves principales (en un conjunto Redis) para realizar un seguimiento de todos mis entidades, utilizando una llave como: ids:user
  • En la lista del lado del servidor Redis - que actúa muy parecido a una mesa con soporte para paginación, utilizando una llave como: lists:user

Otros consejos

Utilice una tabla hash o diccionario. Si desea que los valores de clave única se puede usar un GUID o código hash.

El almacén de claves-valor debe apoyar el pedido las llaves y osciló acceso a las llaves.

A continuación, debe crear dos diccionarios:

id -> payload

y

col1, id -> NULL

, donde payload debe contener todos los datos de la tabla de base de datos podría contener, y las llaves de la segunda diccionario debe contener los valores de (col1, id) de cada entrada del primer diccionario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top