Подход couchDB предлагает выдавать надлежащие классы материала на этапе отображения и суммировать его в сокращении. Таким образом, вы можете отобразить все комментарии и выдать 1
для данного пользователя, а затем распечатать только те.Однако для создания постоянных представлений всех отслеживаемых данных в couchDB потребуется много дискового пространства.Кстати, у них также есть эта вики-страница об отношениях: http://wiki.apache.org/couchdb/EntityRelationship.
Riak, с другой стороны, имеет инструмент для построения отношений.Это ссылка.Вы можете ввести адрес связанного (здесь комментарий) документа в корневой документ (здесь пользовательский документ).У этого есть один трюк.Если он распространяется, он может быть изменен одновременно во многих местах.Это вызовет конфликты и, как следствие, огромное векторное дерево часов: / .. не так плохо, не так хорошо.
У Риака есть еще один «механизм».Он имеет двухслойное пространство имен ключей, так называемое ведро и ключ.Так, для примера студента, если у нас есть клубы A, B и C и студент StudentX, StudentY, вы можете придерживаться следующего соглашения:
{ Key = {ClubA, StudentX}, Value = true },
{ Key = {ClubB, StudentX}, Value = true },
{ Key = {ClubA, StudentY}, Value = true }
и читать отношения просто списком ключей в данных сегментах.Что в этом плохого?Это чертовски медленно.Перечисление ведер никогда не было приоритетом для riak.Все лучше и лучше.Кстати.вы не тратите память, потому что этот пример {true}
может быть связан с одним полным профилем StudentX или Y (здесь конфликты невозможны).
Как вы видите, NoSQL! = NoSQL.Вам нужно взглянуть на конкретную реализацию и протестировать ее для себя.
Упоминается до того, как хранилища столбцов выглядят хорошо подходящими для отношений ... но все зависит от ваших потребностей A и C и P;) Если вам это не нужноА и у вас меньше байтов Peta, просто оставьте его, продолжайте с MySql или Postgres.
удачи