1

Я заинтересован в разработке простого дискуссионного форума, на котором пользователи могут публиковать поток, комментировать поток и отвечать на конкретный комментарий.Схема схемы для таблицы Dynamo Db или Equivalent Nosql Db для дискуссионного форума

Я нахожу это очень трудно придумать модель схемы/баз данных для реализации комментария и ответа функциональности

схемы для пользователей и темы

{ 
     name  : "Krishnakanth", 
     username : "krish", (-) 
     password : "rbswew424", 
     age  : 21, 
     hometown : "abc", 

    } 
     *Threads* 
    { 
     name   : "someName", 
     threadId  : "someID",(-) 
     username  : "someName, 
     timeOfCreation : "time in some standard format" (--) 
    } 
  • (-) => Ключ раздела *
  • (-) => Ключ сортировки *
  • любезная помощь при разработке схемы для реализации функциональность комментариев и ответов *

, если вы находитесь на фоне не Dynamo db, просто разместите формат JSON для комментариев и функций ответа ..!

Заранее спасибо.

ответ

1

Я пришел с 2-мя различными подходами оба имеют свои плюсы и соз,

1) Схемы без StringSet

threadMaster(threadId-hash, timestamp, otherAttributes) 
threadDetails(threadId- hash, replyId-range, timestamp, otherAttributes) 

Данные в этой схеме будет выглядеть следующим образом:

threadMaster: 
t1, 31-11-2016:10:30 
t2, 31-11-2016:09:34 
t3, 31-11-2016:11:30 

threadDetails: 
t1, r1, 31-11-2016:10:33 
t1, r2, 31-11-2016:11:09 
t1, r3, 31-11-2016:13:20 
r1, r1, 31-11-2016:10:38 ** 
r1, r2, 31-11-2016:10:44 ** 

В приведенной выше схеме theadMaster проведет мастер threadId, который будет передан в таблицу подробностей, чтобы получить ll ответ для этого конкретного threadId.

** В ответе на свой ответ есть ответ, который будет поддерживаться в подробной таблице, вы можете добавить еще один атрибут в таблицу подробностей с истинным/ложным значением, которое покажет, что если этот комментарий ответил или нет, чтобы избежать таблицы сканирования ,

Проблема с приведенной выше схемой заключается в том, что если один из потоков имеет миллионы ответов, тогда будет влияние на производительность.

2) С StringSet

threadMaster(threadId-hash, replyId(Set of Ids), timestamp, otherAttributes) 
threadDetails(replyId- hash, timestamp, otherAttributes) 

Данные в этой схеме будет выглядеть следующим образом:

threadMaster: 
t1, [r1,r2,r3..rn], 31-10-2016:10:18 
t2, [r11,r12,r13..r1n], 11-11-2016:20:00 
t3, [r21,r22,r33..r2n], 21-11-2016:00:30 
r4, [r99,r98] ** 

threadDetails: 
r1 31-11-2016:10:30 
r2 31-11-2016:11:20 
r99 01-11-2016:11:20 

В вышеуказанной схеме, вы овладеете таблица будет иметь информацию о потоке и его ответы.

** Когда есть ответ на ваш комментарий, вы сделаете еще одну запись в master как поток.

Проблема с приведенной выше схемой заключается в том, что комментарий добавления/удаления будет утомительным, и каждый ответ вы должны обновить главный поток.

Вы можете использовать атрибут timestamp на уровне приложения для сортировки комментариев соответствующим образом.

Надеюсь, что поможет