Qual è il modo più semplice per simulare una tabella di database con un indice in un negozio di valore chiave?

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

Domanda

Qual è il modo più semplice per simulare una tabella di database con un indice in un negozio di valore chiave? La memoria dei valori chiave non ha spaziato query e NO ordinato chiavi.

Le cose che voglio per simulare (in ordine di priorità):

  1. Crea tabelle
  2. Aggiungi colonne
  3. Crea gli indici
  4. query basata su chiave primaria
  5. query basata su colonne arbitrarie
È stato utile?

Soluzione

Se si utilizza Redis (un negozio avanzata di valori-chiave che supporta le stringhe, liste , set, ecc) allora questo è abbastanza facile. Ho già messo a punto un C # Redis cliente che ha il supporto nativo per la memorizzazione dei dati di POCO Modelli. Queste esattamente lo stesso di POCO può essere utilizzato da OrmLite per conservarlo in un RDBMS.

A proposito Redis è veloce, ho un che memorizza e recupera l'intero database Northwind (3202 record) in meno di 1,2 secondi (in esecuzione all'interno di un unittest su un iMac 3yo) .

I memorizzare entità in due modi

  • entità distinte, dove combino il nome del tipo di classe e la chiave primaria per creare una chiave univoca per esempio urn:user:1
    • Ho poi mantenere una serie separata di chiavi primarie (in un insieme Redis) per tenere traccia di tutti i miei soggetti, utilizzando una chiave del tipo: ids:user
  • In un elenco lato server Redis - che agisce molto simile a un tavolo con il supporto per il paging, utilizzando una chiave del tipo: lists:user

Altri suggerimenti

Utilizzare una tabella hash o un dizionario. Se si desidera che i valori chiave univoci si potrebbe usare un GUID o codice hash.

L'archivio di valori-chiave dovrebbe sostenere ordinare le chiavi e spaziato accesso alle chiavi.

Poi si dovrebbe creare due dizionari:

id -> payload

e

col1, id -> NULL

, dove payload dovrebbe contenere tutti i dati della tabella del database conterrebbe, e le chiavi del secondo dizionario dovrebbe contenere i valori di (col1, id) da ogni voce del primo dizionario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top