дублирование информации с nosql? - PullRequest
3 голосов
/ 28 февраля 2012

Я использую Redis в качестве базы данных nosql (и действительно наслаждаюсь этим), но в некоторых случаях это не очень удобно (я знаю, что не каждая модель данных может использоваться с nosql, но все же ...).
Я хотел бы знать, есть ли правильный способ выполнить следующие действия в Redis или мне определенно нужно вместо этого использовать RDMS.

Допустим, у меня есть 2 объекта:

- User
- Asset

Актив может быть «квартирой», «зданием» или «домом».

Я использую список повторного ввода с именем «assets», который собирает активы, например:

assets = [asset:1, asset:2, ....]

Каждый актив представляет собой хеш-код:

asset:1 = {type: flat, value: 150000$}

Как получить список всех активов типа «квартира»?

Самым простым способом было бы перебрать список активов и проверить тип каждого из них, он линейный, что выглядит довольно неплохо.

Есть ли лучшее решение?

Может быть полезно иметь новый список: "квартиры", который будет содержать ссылки на активы с типом "квартира", но этот список новостей будет вызывать издержки, так как мы должны быть уверены, что он синхронизирован.

flats = [asset:1, asset:5, ...]

Но это приводит к репликации данных ... что плохо ... Это все еще способ использовать nosql?

Есть ли другие предложения?

1 Ответ

4 голосов
/ 28 февраля 2012

Я обычно строю второй ключ, который содержит индекс. Поэтому, когда вы пишете новый актив, вы записываете его в свой набор активов и в свой набор определенных типов активов. Это накладные расходы, но они такие же, как и в других базах данных, это просто заранее. Индексация всегда требует дополнительной записи, Redis просто делает очевидным, что это происходит.

Кроме того, я бы просто сохранил идентификатор в вашем наборе «активов», а не в активе: 1, просто храню 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...