J'ai un certain type d'objet qui est stocké dans une base de données. Ce type obtient maintenant des informations supplémentaires associées qui différeront dans la structure entre les instances. Bien que l'information soit structurée de la même façon pour les groupes d'instances, la structure ne sera connue qu'à l'exécution et changera au fil du temps.Quel format de sérialisation pour les paires clé/valeur est le mieux indexable dans SGBDR?
J'ai décidé d'ajouter simplement un champ BLOB à la table et de stocker les paires clé/valeur dans un format sérialisé. D'après votre expérience, quel format est le plus conseillé?
Dans le contexte de mon application, l'espace de stockage est secondaire. Il y a une opération particulière que je veux être rapide, qui recherche l'instance correcte pour un ensemble donné de paires clé/valeur (donc c'est une sorte de clé composite à champ variable). Je suppose que cela signifie, existe-t-il un format qui joue particulièrement bien avec l'indexation de base de données typique?
En outre, je serais peut-être intéressé par la recherche d'un ensemble d'instances partageant le même jeu de clés (une «classe» adhoc, si vous le souhaitez). J'écris ceci en Java et je stocke dans divers types de bases de données SQL. JSON, GPB et la sérialisation Java native sont sur mon radar, favorisant les formats inter-langues. Je peux penser à deux stratégies de base:
- stocker l'ensemble des valeurs du tableau et ajouter une clé étrangère à une table séparée qui contient l'ensemble des clés
- magasin les paires clé/valeur dans le tableau
Si vous décidez de prendre l'approche schemaless, Amazon.com SimpleDB est quelque chose d'autre que vous pouvez regarder - http://aws.amazon.com/simpledb/ –
Certaines parties de mes données sont déjà schemaless, je sérialiser certains objets et stocker eux dans une table générique, tout comme FriendFeed fait (voir http://bret.appspot.com/entry/how-friendfeed-uses-mysql). Je fais ceci où je n'ai pas besoin des fonctionnalités RDBM et un schéma strict rendrait les choses plus difficiles, mais certaines parties de mes données sont parfaitement adaptées à un RDBM standard. Depuis que j'utilise cette stratégie hybride, je ne veux pas passer à CouchDB etc. –
Merci pour vos commentaires sur la table de valeur-clé.J'avais déjà décidé contre cette approche, mais après avoir lu votre message, j'ai reconsidéré et il semble que je change d'avis. –