Я читал/изучал HBase и пытался создать схему. Я работаю с RDBMS, и это первый раз, когда я пытаюсь использовать nosql db. У меня простой вопрос о дизайне схемы:
Предположим, что есть три таблицы => альбом, фото, комментарий
альбом ‹= Создано пользователем
photo ‹= Содержит все фотографии, загруженные в альбом
комментарии ‹= Содержит комментарии к альбому или фотографии
Фотография должна быть получена со всеми комментариями под ней. Альбом должен быть загружен со всеми фотографиями в нем, но не с комментариями.
пользователь идентифицируется по электронной почте. Схема, которую я придумал:
tbl_user
email || info: {password : ..., name : ...}
альбом
<email>:album:<timestamp> || info {title:..., cover: photo-row-key}
Фото
<album-row-key>:<timestamp> || info {caption:..., exif: ...}
комментарий
<album-row-key or photo-row-key> || comments {
comment:<timestamp>: {user: <email>, text:...}
comment:<timestamp>: {user: <email>, text:...}
comment:<timestamp>: {user: <email>, text:...}
...
}
- Этот дизайн выглядит нормально? Я просто хочу знать модификации, которые должны/должны быть сделаны и почему.
- Должен ли ключ строки фото не предваряться ключом строки альбома (может быть, для экономии места)?
- Что касается таблицы комментариев, следует ли создать ключ строки комментария, например
<album-row-key or photo-row-key>:comment:<timestamp>
? В соответствии с приведенной выше схемой всякий раз, когда пользователь создает комментарий, мне нужно прочитать столбец комментариев, обновить его новым комментарием и обновить строку с помощью tha. Звучит нормально?
Было бы очень полезно, если бы вы могли поделиться некоторыми ссылками, в которых есть примеры схем, которые больше подходят для СУБД :)