Quelle est la meilleure façon de simuler une table de base de données avec un index dans un magasin de valeur clé?

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

Question

Quelle est la meilleure façon de simuler une table de base de données avec un index dans un magasin de valeur clé? Le magasin clé de valeur n'a pas de distance requêtes et NO ordonné clés.

Les choses que je veux simuler (par ordre de priorité):

  1. Créer des tables
  2. Ajoutez des colonnes
  3. Créer un index
  4. requête basée sur la clé primaire
  5. requête basée sur des colonnes arbitraires
Était-ce utile?

La solution

Si vous utilisez Redis (un magasin avancé valeur clé qui prend en charge les chaînes, les listes , jeux, etc.), cela est assez facile. Je l'ai déjà développé un C # Redis client qui a prise en charge native pour stocker les données de POCO des modèles. Ces mêmes POCO Exact peut être utilisé par OrmLite pour le stocker dans un SGBDR.

Par ailleurs Redis est rapide, j'ai une que les magasins et récupère toute la base de données Northwind (3202 records) en moins de 1,2 secondes (en cours d'exécution dans un UnitTest sur un iMac 3ans) .

Je stocke des entités de deux façons

  • Distinct entités, où je combinons le nom du type de classe et clé primaire pour créer un exemple clé unique urn:user:1
    • Je maintiens: un jeu de clés primaires (dans un ensemble Redis) de garder une trace de toutes mes entités, en utilisant une clé comme: ids:user
  • Dans une liste côté serveur Redis - qui se comporte comme une table avec le support pour la pagination, en utilisant une clé comme: lists:user

Autres conseils

Utilisez un Hashtable ou un dictionnaire. Si vous voulez des valeurs clés uniques que vous pouvez utiliser un GUID ou hashcode.

Le magasin valeur-clé doit appuyer sur les touches de commande et à distance l'accès aux clés.

Ensuite, vous devez créer deux dictionnaires:

id -> payload

et

col1, id -> NULL

, où payload doit contenir toutes les données de la table de base de données contiendrait, et les clés du second dictionnaire doit contenir les valeurs de (col1, id) de chaque entrée du premier dictionnaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top