Key-Value in db met meerdere typen Value

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Ik wil een aantal 'Key-Value'-paren opslaan in MS Access. Het probleem is nu dat de Value een handjevol verschillende typen kan hebben zoals een integer, string, datum, positie (x & y). Het type Value bij een Key staat al in een tabel in de db. De vraag is nu: hoe sla ik die 'Key-Value'-paren op in de db? Ik dacht aan (met + en - die ik zie):

1. Een tabel per type Value.
+ geen ruimte verspilling
- lastig te query-en (denk ik)

2. Alles in 1 tabel met kolommen voor de verschillende typen.
- veel Value-kolommen blijven leeg

3. Alles in 1 tabel met 1 Value-kolom waar ingepakte data (bv json) in komt.
+ geen ruimte verspilling
- (de)serialization nodig

4. Op een andere manier??

Acties:
  • 0 Henk 'm!

  • supreme tweaker
  • Registratie: December 2002
  • Laatst online: 28-08 01:27
If you must; De waarden als string opslaan en een aparte kolom toevoegen met daarin het type?

Upsides:
- Geen nullable kolommen
- Eenvoudige structuur

Downsides:
- Alles casten on retrieval (tenzij type = string)

[ Voor 40% gewijzigd door supreme tweaker op 24-02-2015 11:10 ]

Burp


Acties:
  • 0 Henk 'm!

  • xFeverr
  • Registratie: Juni 2011
  • Laatst online: 15-10 17:05
supreme tweaker schreef op dinsdag 24 februari 2015 @ 11:08:
Downsides:
- Alles casten on retrieval (tenzij type = string)
Maar dan kan je iets simpele voor schrijven die dat voor je doet natuurlijk

Acties:
  • 0 Henk 'm!

  • supreme tweaker
  • Registratie: December 2002
  • Laatst online: 28-08 01:27
xFeverr schreef op dinsdag 24 februari 2015 @ 11:54:
[...]


Maar dan kan je iets simpele voor schrijven die dat voor je doet natuurlijk
Dat is wel zo, maar als je het gebruikt in een grote JOIN of iets dergelijks loop je het risico op een vrij grote performance hit.

Overigens is een KV-pair zo ongeveer de meest gedenormaliseerde vorm van data opslag. Is er geen betekenisvollere manier van deze gegevens opslaan?

Burp


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
supreme tweaker schreef op dinsdag 24 februari 2015 @ 11:08:
If you must; De waarden als string opslaan en een aparte kolom toevoegen met daarin het type?

Upsides:
- Geen nullable kolommen
- Eenvoudige structuur

Downsides:
- Alles casten on retrieval (tenzij type = string)
Dat is optie 3 waar ik aan dacht...
supreme tweaker schreef op dinsdag 24 februari 2015 @ 11:56:
Overigens is een KV-pair zo ongeveer de meest gedenormaliseerde vorm van data opslag. Is er geen betekenisvollere manier van deze gegevens opslaan?
Er zijn een groot aantal Keys (met elk een bepaald type Value) waar willekeurig uit gekozen kan worden. Ik kan ook 1 tabel maken met voor elk 'Key-Value'-paar een kolom, maar dan blijft er helemaal veel leeg per keer.

Acties:
  • 0 Henk 'm!

  • supreme tweaker
  • Registratie: December 2002
  • Laatst online: 28-08 01:27
Daos schreef op dinsdag 24 februari 2015 @ 12:05:
[...]

Dat is optie 3 waar ik aan dacht...
Ik stel niet het verpakken van je gegevens voor, maar ze als string opslaan

Burp


Acties:
  • 0 Henk 'm!

  • TRON
  • Registratie: September 2001
  • Laatst online: 16-10 14:15
@Daos, waarom wil je de key-value pairs opslaan?

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
supreme tweaker schreef op dinsdag 24 februari 2015 @ 13:01:
Ik stel niet het verpakken van je gegevens voor, maar ze als string opslaan
Als string opslaan is toch het verpakken van de gegevens :?
TRON schreef op dinsdag 24 februari 2015 @ 13:30:
@Daos, waarom wil je de key-value pairs opslaan?
Het zijn waarnemingen in een soort van inspectieprogramma. De mogelijke waarnemingen en welke code/key zij hebben staan ergens in een standaard.

Ik wil dit opslaan zodat ik de resultaten later weer kan laten zien :+

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15-10 22:15

Janoz

Moderator Devschuur®

!litemod

Ik zou alsnog pogen het een beetje door te normaliseren en het niet puur als key value pairs opslaan. Waarnemingen zou dan een tabel zijn met daarbij (neem ik even aan) een tijdstip en een referentie naar de code/key van de standaard. Voor de daadwerkelijke meetwaarden zou ik optie 2 kiezen. Het aantal kolommen zal immers behoorlijk meevallen. Volgens mij ben je met int, double en string wel klaar.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1