В Couchbase подумайте больше о том, как ваше приложение будет использовать данные больше, чем то, как вы хотите его сохранить. Например, будет ли ваше приложение получать все 10 авторов все время? Если это так, то один документ может оказаться полезным. Возможно, вашему приложению нужно только читать/писать одного из авторов за раз. Тогда вы можете захотеть поместить каждого по своему усмотрению, но иметь шаблон ключевого объекта, который делает его таким, чтобы вы могли быстро получить объект. Объекты, которые используются часто, хранятся в управляемом кеше, другие объекты, которые не используются часто, могут выпадать из управляемого кеша ... и это нормально.
Другим фактором является то, что ваш коэффициент чтения относится к данным.
Как я уже сказал, это зависит от того, как ваше приложение будет читать и записывать ваши данные. Используйте это как руководство для того, как ваши данные должны быть сохранены.
Один документ JSON довольно прямолинейный. Более продвинутый дизайн схемы, где каждый автор находится в своем собственном документе, и вы обращаетесь к ним через ключ объекта, может быть немного сложнее, но в конечном счете быстрее и более масштабируемым в зависимости от того, что я уже указывал. Я выложу примерную схему и некоторые возможности.
Для авторов, я мог бы создать каждый автор JSON документ с помощью ключа объекта, как это:
авторов :: ID
Где ID это значение я храню в специальном объекте инкрементора, что я буду под названием авторы :: инкрементора. Подумайте об этом объекте как о ключевой паре значений, в которой содержится только целое число, которое является верхней границей массива. Couchbase SDKs включают специальную функцию для увеличения только такого целочисленного объекта. При этом мое приложение может быстро скомпоновать этот объектный ключ. Если я хочу пойти после 5-го автора, я читаю ключ объекта для «authors :: 5». Если мне нужно получить 10, я делаю параллельную функцию BulkGet и получаю авторов :: 1 через авторов :: 10. Если я хочу получить всех авторов, я получаю объект incrementer и получаю это целое число, а затем до параллельного массива get. Таким образом, я могу получить их в порядке или в любом порядке, в котором я чувствую себя, и я обращаюсь к ним с помощью объектного ключа, который очень быстро работает в Couchbase.
Все это, как я уже сказал, я мог бы использовать представление для запроса этих данных или предстоящего «SQL for Documents» в Couchbase 4.0, или я могу смешивать и сопоставлять, когда я запрашиваю и когда получаю объекты по их ключу. Доступ к ключам будет ВСЕГДА быть быстрее. Разница заключается в том, чтобы задать вопрос, а затем получить объект и просто узнать ответ и получить его немедленно.