2017-04-06 1 views
1

Je voudrais stocker une carte simple de chaînes de valeur-clé comme champ dans ma table PostgreSQL. J'ai l'intention de traiter la carte dans son ensemble; c'est-à-dire, sélectionnez toujours la carte entière, et ne jamais interroger par ses clés ou valeurs.Meilleur type de données PostgreSQL pour stocker des cartes de valeurs-clés?

J'ai lu des articles comparant entre hstore, json et jsonb, mais ceux qui ne m'a pas aidé choisirai-type de données est le plus approprié pour mes besoins, qui sont:

  • Seulement valeur clé, pas besoin d'imbrication.
  • Seules les chaînes, aucun autre type, ni null.
  • Efficacité de stockage, étant donné mon utilisation prévue pour le terrain.
  • Analyse rapide des cartes interrogées.

Quel type de données convient le mieux à mon cas d'utilisation?

+1

Certainement 'hstore' –

+0

IIRC,' jsonb' est implémenté comme un 'hstore 'imbriqué, cela devrait donc fonctionner aussi. – jmelesky

+0

@a_horse_with_no_name Je le vivrais si vous développiez cela :) –

Répondre

1

vous pouvez utiliser hstore qui est un keymap, mais personnellement, je voudrais nous jsonb. C'est un peu exagéré, cependant, le langage peut convertir json nativement sans avoir à le décoder vous-même. En json, je stockerais simplement un objet ou tableau simple pour les informations que vous essayez de stocker.

Les deux prennent en charge les index et sont stockés efficacement. Hstore in text est un format de type personnalisé que votre langue peut ne pas connaître et qui nécessite donc le traitement des données à insérer ou à interroger.

+0

Selon le langage de programmation 'hstore' n'a pas besoin de" conversion ". Le pilote JDBC par exemple renvoie simplement un 'Map' pour le contenu d'une colonne' hstore' –