2010-12-17 2 views
0

Donc, simpledb a une sorte de modèle de données de tableur.Comment mieux mapper cette structure sur amazon SimpleDB

J'ai une application qui a simplement besoin de stocker les clés par rapport aux valeurs. Sauf qu'une seule clé peut avoir plusieurs valeurs.

Il y aura plusieurs clients. Chaque client a un identifiant avec son propre jeu de clés. Je voudrais rester avec un seul domaine si je peux à ce stade.

Comment puis-je mapper ceci sur simpleDB?

Je pensais domaine = mydomain item = clientid attribute.n.name = key_1 ... key_n attribute.n.value = val1 ... valn

qui satisferait la capacité de stocker plusieurs valeurs pour la même clé. Mais ensuite, j'ai trouvé que je devais soit obtenir tous les attributs dans mon exemple de sélection ou de savoir combien d'attributs que j'ai. Je ne le saurai pas à l'avance. Aussi, j'autorise la suppression d'une valeur spécifique d'une clé (ou d'un attribut). Je vais devoir le chercher en premier. Il semble que dans la sélection il n'y a pas de fonction attributeName(), juste la fonction itemName().

Serait-il préférable de faire du nom de l'élément une combinaison de id + key + _n? par exemple. Si l'identifiant est 'myid' et que la clé est 'boots', alors le nom de l'article sera 'myidboots_1'

Et puis un seul attribut par élément appelé 'keyval'.

et je peux faire un sélectionnez 'keyval' où itemName like 'myidboots_%'?

Encore un peu encombrant par rapport à une base de données sql normale.

Peut-être que je devrais essayer d'encoder les valeurs comme une liste séparée par des virgules? Sauf que c'est probablement plus encombrant et j'ai lu qu'il y a une limite de 1000 caractères.

D'autres suggestions?

Répondre

0

Je ne suis pas sûr que je suis tout à fait votre question, mais je pense qu'il pourrait être utile de signaler que SimpleDB vous permet de faire des requêtes classiques de style SQL comme:

select * from foo where bar = '1' 

Ceci renvoie tous les attributs/valeurs pour les enregistrements résultants.

Questions connexes