2015-03-21 2 views
1

Je devrais faire une comparaison des prix du site en pur aérospike, puis: produits, produits de combinaison (un processeur lié à certaines cartes mères) et les magasins. ù Les produits doivent se rapporter aux magasins, par exemple un produit est lié à trois magasins et chaque magasin a un prix différent.Aérospike: Quelque chose comme relatation

Aérospike peut m'aider dans ce domaine?

Je pensais que je pourrais faire les bacs de relation, mais je ne sais pas si c'est une bonne idée des suggestions pour résoudre le problème?

+0

copie possible de [Relationships Aerospike] (http://stackoverflow.com/questions/27411433/relationships-in-aerospike) –

Répondre

1

Vous pouvez modéliser des relations plusieurs-à-un qui, autrement, seraient réparties sur deux tables dans un ensemble aérosposs unique à l'aide de la liste et de la mappe de types complexes. Ainsi, un produit de combinaison peut avoir une corbeille de 'composants' qui est une liste d'objets de carte, chacun d'eux un produit. Ou vous pouvez avoir des 'composants' soit une liste d'ID de produit puis lire en lots ces produits en fonction des ID de la liste. Toutefois, vous pouvez également modéliser des relations plusieurs-à-plusieurs d'une manière similaire à un SGBDR, avec une table d'intersection. Vous n'avez pas JOIN, mais vous pouvez effectuer des requêtes séparées et compter sur le fait que les opérations par lots de valeurs-clés et d'aérospatiales sont beaucoup plus rapides qu'un SGBDR. Par exemple, vous pouvez avoir une table d'intersection store_products où vous pouvez conserver un identifiant du magasin et du produit. Vous créez un index secondaire sur l'ID du magasin et l'ID du produit, ce qui vous permet d'effectuer des requêtes. Si vous recherchez toutes les boutiques qui proposent un certain produit, faites une requête, puis récupérez les objets du magasin dans la table du magasin. Si vous recherchez tous les produits dans un magasin, vous interrogez avec un où store_id = x puis effectuez une lecture par lot pour ces produits.

J'espère que cela répond à votre question.

+0

Merci! Oui cette bonne réponse !! – user112752

+0

Je voudrais demander une faveur, voulez-vous me donner un exemple en golang pour mieux comprendre? J'ai essayé, mais certaines choses dans l'aérospike malheureusement je ne peux pas les comprendre :( – user112752

+0

Vous pouvez poser cette question sur le forum Go (https://discuss.aerospike.com/c/client-libraries/go-client) ou regarder la documentation sur GitHub (https://github.com/aerospike/aerospike-client-go) ou le manuel du client Go sur notre site (http://www.aerospike.com/docs/client/go/). –