Wat is die maklikste manier om 'n databasistabel te boots met 'n indeks in 'n belangrike waarde winkel?

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

Vra

Wat is die maklikste manier om 'n databasistabel te boots met 'n indeks in 'n belangrike waarde winkel? Die sleutel waarde winkel het geen gewissel navrae en GEEN bestel sleutels.

Die dinge wat ek wil na te boots (in volgorde van prioriteit):

  1. Skep tabelle
  2. kolomme by
  3. indekse Skep
  4. Query gebaseer op primêre sleutel
  5. Query gebaseer op arbitrêre kolomme
Was dit nuttig?

Oplossing

As jy gebruik Redis ( 'n gevorderde sleutel-waarde winkel wat ondersteun snare, lyste , stelle, ens) dan is dit baie maklik. Ek het reeds ontwikkel 'n C # redis kliënt wat inheems ondersteuning vir die berging van data POCO se het modelle. Hierdie presies dieselfde POCO se gebruik kan word deur OrmLite om dit te stoor in 'n RDBMS.

By the way Redis is vinnig, ek het 'n maatstaf dat winkels en kry die hele Noordenwind databasis (3202 rekords) in onder 1.2 sekondes (hardloop binne 'n UnitTest op 'n vanaf 3 iMac) .

Ek slaan entiteite in twee maniere

  • Duidelike entiteite, waar ek kombineer die naam tipe Klas en Primêre sleutel tot 'n unieke sleutel bv skep urn:user:1
    • Ek handhaaf dan 'n aparte stel primêre sleutels (in 'n Redis Set) om tred te hou van al my entiteite hou, met behulp van 'n sleutel soos: ids:user
  • In 'n Redis bediener kant lys - wat dien baie soos 'n tafel met ondersteuning vir blaai, met behulp van 'n sleutel soos: lists:user

Ander wenke

Gebruik 'n hashtable of woordeboek. As jy wil n unieke sleutel waardes kan jy 'n GUID of hutskode gebruik.

Die sleutel-waarde winkel moet ondersteun bestel die sleutels en het gewissel toegang tot die sleutels.

Dan moet twee woordeboeke te skep:

id -> payload

en

col1, id -> NULL

, waar payload al die data van die databasis sou bevat, en die sleutels van die tweede woordeboek moet bevat moet die waardes van (col1, id) van elke inskrywing van die eerste woordeboek bevat.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top