таблицы в DynamoDB, которые являются запрашиваемыми - PullRequest
3 голосов
/ 26 февраля 2012

Я пытался реализовать сценарий «пост / ответы», например, google + в DynamoDB, как частный проект. Это первый раз, когда я пытаюсь реализовать таблицу nosql и пытаюсь обдумать концепцию. Я понимаю, что связанные столбцы таблицы могут быть встроены в исходную таблицу следующим образом ...

Post { userid:1, 
       postdata: "hello",Comment[
                                  {userid: 2, postdata: "howdy", date: some-date},
                                  {userid: 3, postdata: "higuys", date: some-other-date}
                                ], 
       date: today}

Теперь, если бы это был способ кодирования аннотированной таблицы, можно легко получить по идентификатору пользователя и датировать все сообщения и комментарии для одного разговора. Но если нам нужно найти конкретный комментарий и обновить его, возможно ли это или мы должны «отсканировать» таблицу? Я читал о сканировании, в результате чего результаты нарушают ограничения пропускной способности в больших данных, и не хочу его использовать. Похоже, что запросы ограничены в операторах для сравнения и поиска. Итак, я на правильном пути в создании таблицы таким образом? Возможно, мне придется встраивать в таблицу другие данные, такие как аудио, видеодокументы и изображения, за «разговор». Любые входы приветствуются.

1 Ответ

4 голосов
/ 28 февраля 2012

В DynamoDB вся ваша сущность не может быть больше 64 КБ, поэтому вы не хотите вставлять свои комментарии непосредственно в сообщение, если только вы не знаете, что они будут очень маленькими.

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

Большой встроенный контент (даже более крупные тексты, такие как сообщения в блоге) не являютсяподходит для DynamoDB, вы, вероятно, хотите что-то вроде S3 или CloudFront для этого.

...