Что такое эффективная схема MongoDB для многоязычного сайта электронной коммерции?

Я проектирую многоязычный сайт электронной коммерции. Продукты имеют различные свойства. Некоторые свойства различаются для каждого языка (например, цвет), другие свойства одинаковы для всех языков (например, SKU). Свойства не предопределены, например, автомобили имеют свойства, отличные от эспрессо-машин.

Я бы хотел разработать схему базы данных так, чтобы:

  1. Поиск и представление всех продуктов из категории x на языке y было быстрым
  2. Количество дубликатов данных невелико
  3. Я не хочу использовать файлы с переводами

Я думаю об использовании такой схемы:

{
 _id: ObjectID("5dd87bd8d77d094c458d2a33"),

 multi-lingual-properties: ["name", "description"],

 name: { en: "Super fast car",
         nl: "Hele snelle auto"},

 description: { en: "Buy this car",
                nl: "Koop deze auto"},

 price: 20000,

 sku: "SFC106X",

 categories: [ObjectID("4bd87bd8277d094c458d2a43")]
}

Есть ли лучшая альтернатива этой схеме? Какие проблемы возникнут при использовании этой схемы?

-121--1271844-

Как выполнить соединения по вложенным запросам в AREL в Rails У меня есть простой класс модели User has_many:logs class Logs, связанный обычным способом через регистрации user_id внешнего ключа. Я пытаюсь сделать следующее, используя Арела и согласно доку Арела...

У меня есть простая модель

class User
    has_many :logs


class Logs

, связанная обычным способом через регистрации user_id внешнего ключа. Я пытаюсь сделать следующее, используя Арела, и согласно доку Арела, это должно сработать.

u_t = Arel::Table::new :users
l_t = Arel::Table::new :logs

counts = l_t.
    group(l_t[:user_id]).
    project(
        l_t[:user_id].as("user_id"),
        l_t[:user_id].count.as("count_all")
    )

l_t.joins(counts).on(l_t[:id].eq(counts[:user_id]))

Когда я делаю это, я получаю ошибку

TypeError: Cannot visit Arel::SelectManager

Однако автор Arel явно предлагает , что Arel может делать такого рода вещи.

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

10
задан Shimmy 12 May 2013 в 00:46
поделиться