2015-03-21 7 views
1

Я должен сделать сравнение цен на сайте в чистом аэросике, а затем: продукты, комбинированные продукты (процессор, связанные с некоторыми материнскими платами) и магазины. ù Продукты должны относиться к магазинам, например, продукт относится к трем магазинам, и каждый магазин имеет другую цену.Aerospike: Что-то вроде отношений

Aerospike может помочь мне в этом?

Я думал, что смогу сделать мусорные корзины, но я не знаю, если это хорошая идея, чтобы решить эту проблему?

+0

Возможный дубликат [Отношения в аэросике] (http://stackoverflow.com/questions/27411433/relationships-in-aerospike) –

ответ

1

Вы можете моделировать отношения «один-к-одному», которые в противном случае были бы распространены на двух таблицах в одном наборе аэрокосмических технологий, используя список сложных типов и карту. Таким образом, у комбинированного продукта может быть «контейнер компонентов», который представляет собой список объектов карты, каждый из которых является продуктом. Или вы можете иметь «компоненты», чтобы быть списком идентификаторов продуктов, затем пакетно читать эти продукты на основе идентификаторов в списке.

Однако вы также можете моделировать отношения «многие ко многим» аналогично RDBMS с таблицей пересечений. У вас нет JOIN, но вы можете выполнять отдельные запросы и полагаться на то, что аэрокосмические ключевые значения и пакетные операции намного быстрее, чем РСУБД.

Так, например, вы можете иметь таблицу пересечений store_products, где вы можете хранить идентификатор магазина и продукта. Вы создаете вторичный индекс как для идентификатора магазина, так и для идентификатора продукта, и это позволяет вам делать запросы. Если вы ищете все магазины, в которых находится определенный продукт, вы делаете запрос, а затем извлекаете объекты хранилища из таблицы хранилища. Если вы ищете все продукты в магазине, вы запрашиваете где-то, где store_id = x, а затем выполняете чтение в пакетном режиме для этих продуктов.

Надеюсь, это ответит на ваш вопрос.

+0

Спасибо! Да, это хорошие ответы! – user112752

+0

Я хотел бы попросить одолжение, вы бы сделали мне один пример в голанге, чтобы лучше понять? Я попытался, но некоторые вещи в аэросике, к сожалению, я их не понимаю :( – user112752

+0

Вы можете задать этот вопрос на форуме Go (https://discuss.aerospike.com/c/client-libraries/go-client) или посмотреть документацию по GitHub (https://github.com/aerospike/aerospike-client-go) или руководство пользователя Go на нашем сайте (http://www.aerospike.com/docs/client/go/). –