Не удается получить данные (100 000+ строк) для панели инструментов - PullRequest
1 голос
/ 03 ноября 2019

Довольно новый для DynamoDb и всего AWS, это очень захватывающе, но я чувствую, что кривая обучения немного крутая. В любом случае, вот моя ситуация и моя проблема.

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

Приложение довольно новое, но мы уже достигли нескольких сотен тысяч строк в таблице и можем ожидать, что в последующие месяцы их будет миллион. Данные представляют собой простые простые данные с уникальным идентификатором, строкой и числами в других атрибутах. Никакой связи, никакой связи и т. Д. Это уже когда я почувствовал, что, возможно, DynamoDb, возможно, был не лучшим выбором, но все же, я читаю везде, что он может быть пригоден для чего угодно при правильном управлении.

Рядом с этим естьэто инструментальная панель веб-приложения, которая - спасибо API остальных с помощью nodejs lambdas - запрашивает DynamoDB для создания статистики о поисках: сколько поисков в день, список последних поисков ... проблема в том, что DynamoDb не очень подходит для запроса сотен тысячданных (ограничение 1 Мб, ограничения запросов, кредиты ...). Когда я делаю сканирование, я получаю только 3000 запросов. Я попытался выполнить цикл проверки с использованием последнего запрошенного индекса, но после нескольких тестов я не получил данные и заблокировал максимальную пропускную способность. Кажется действительно ясным, что у меня нет правильного подхода, чтобы перенести все эти поиски в мое веб-приложение. Так что теперь, что будет правильным подходом? Мои идеи следующие, но я открыт для более опытного:

  • Переключение на базу данных SQL (с помощью миграции aws?). Неужели так будет проще?

  • создание лямбд для выполнения запланированных заданий каждую ночь, чтобы каждый день составлять статистику, чтобы мне не приходилось все время запрашивать полную базу данных, а только некоторыесамых последних поисков и статистических строк? Это выполнимо? какой-нибудь учебник по node.js / lambdas, который вы можете знать по этому поводу?

  • лучшее управление индексами? Я все еще очень растерялся относительно этих.

С нетерпением жду ваших мнений.

1 Ответ

0 голосов
/ 03 ноября 2019

Добавьте еще один слой, чтобы позаботиться о полнотекстовом поиске.

Например, с Elasticsearch или Algolia или другими подобными.

Примечания:

Elasticsearch может стоить вам много, если сравнить стоимость на DynamodB

Ссылка: https://aws.amazon.com/about-aws/whats-new/2015/08/amazon-dynamodb-elasticsearch-integration/

...