Таблица AWS DynamoDB для поиска видео / фото контента в порядке дат - PullRequest
0 голосов
/ 25 января 2019

Я собираюсь создать таблицу DynamoDB для моего приложения для обмена фотографиями и фотографиями в Instagram.Цель этой таблицы - подать в виде таблицы все сообщения пользователя в порядке дат.Мы все знаем сценарий использования:)

Очевидно, что GUID (для видео или фото) будет моим основным ключом.У меня будет структура, похожая на этот (частичный) JSON для первоначальной загрузки таблицы:

{
    "VideoCatalog": [
        {
            "PutRequest": {
                "Item": {
                    "Guid": "67459e53-21bb-4a7d-8f7a-18e4cd165c44",
                    "Timestamp": "20160314",
                    "ThumbnailName": "20160314-TheWind_tumb.0000000.jpg",
                    "Title": "The Wind"
                }
            }
        },
        ...
}

Возможно, это не важно, но GUID соответствует папке S3, в которой находятся различные "ресурсы" видео., включая различные форматы для потокового видео по запросу с адаптивной многобитовой скоростью.Я буду использовать AWS JavaScript SDK для доступа к таблице и т. Д.

В чем я не уверен, так это в том, хочу ли я указать timestamp в качестве ключа сортировки, чтобы помочь в возвращении результатов (в конце концов через ленивую загрузку / разбиение на страницы) в порядке дат с самым первым первым.

В чтении, которое я сделал с ключами сортировки (например, здесь ), я не уверен, предназначено ли это для нихфункция.

Как сказано в руководстве DynamoDB:

В таблице, содержащей ключ раздела и ключ сортировки, два элемента могут иметь одинаковое значение ключа раздела.

Это точно не тот случай использования для моих данных.

Есть предложения по извлечению элементов в порядке дат из таблицы DynamoDB?

1 Ответ

0 голосов
/ 27 января 2019

Если guid является вашим первичным ключом, не имеет смысла указывать дату в качестве вторичного ключа, поскольку в моем понимании вашего варианта использования может быть только один ресурс с идентификатором guid.

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

| userId (PK) |  Timestamp (sortKey) | resourceid         |
| 123         |   12343212           |  guid1             |
| 123         |   12343215           |  guid2             |
...