Моделирование данных для couchbase

У меня есть сканер, который тестирует веб-сайты / страницы. И ниже модель, которую я бы сделал с RDBMS:

class Site{
   Uri Uri {set;get;}
   Collection<Test> Test{set;get;}
}

class Test{
   Collection<Page> Pages {set;get;}
}

class Page{
   // Page info
}

Мои запросы будут такими, как, сколько страниц не удалось загрузить, сколько вернуло 404 и т. Д. На сайт и в целом.

Поэтому моя забота о couchbase - размер документа, 20 МБ, на некоторых сайтах, которые я просматриваю, по 10 тысяч страниц. Если я сканирую пару, скажем, 10 раз, объект Site превысит этот предел, и в конечном итоге он будет.

Как правильно делать моделирование здесь?

1 ответ

Не существует правильного способа моделирования этого без большого количества информации. Я могу подумать о нескольких способах из головы, которые могут или не могут работать для вас, но вот мой первый.

  1. Каждый сайт может быть своим собственным объектом, который является 10k. Используйте объект счетчика для каждого сайта и используйте этот счетчик в качестве номера версии для использования в качестве части идентификатора объекта в каждом документе на основе счетчика. Таким образом, идентификатор объекта может выглядеть как "::". Тогда, когда вам нужна последняя версия, вы просто получаете значение объекта счетчика, а затем получаете требуемый идентификатор объекта. Очень легко и очень быстро.

Для получения дополнительной информации о расширенном моделировании объектов с помощью ключей в Couchbase, я мог бы порекомендовать этот пост и этот пост, который может дать вам хорошие идеи. Эти два примера не совсем уместны, но они должны помочь вам подумать о том, как вы можете моделировать свои данные и почему вы можете принять определенное решение, которое поможет вам воспользоваться конкретными возможностями Couchbase. Как я уже сказал, здесь действительно нет правильного пути. Это будет зависеть от ваших данных, варианта использования и производительности, которая вам нужна для работы с Couchbase. Есть лучшие способы, чем другие, это все.

Другие вопросы по тегам