Какие ключи нужно сделать при хранении новостных данных в динамо-базе? - PullRequest
0 голосов
/ 26 сентября 2019

Мне нужны некоторые рекомендации относительно того, как хранить записи новостей в Dynamo DB

{
    "news": [{
        "id": "nws_7KnqNr",
        "title": "Dow Jones Futures: From Apple To Zscaler, This Is The New Stock Market Trend",
        "publication_date": "2019-09-11T10:46:24.000Z",
        "url": "https://finance.yahoo.com/m/c5f84bed-ce61-3938-9af1-953d15dbcf65/dow-jones-futures%3A-from-apple.html?.tsrc=rss",
        "summary": "Dow Jones futures: From low Apple TV+ pricing to Roku's sell-off and Ally Financial's breakout, value is in. Already-reeling Zscaler plunged on guidance. RH fell too."
    }],
    "company": {
        "id": "com_NX6GzO",
        "ticker": "AAPL",
        "name": "Apple Inc",
        "lei": "HWUPKR0MPOU8FGXBT394",
        "cik": "0000320193"
    },
    "next_page": "MjAxOS0wOS0xMSAxMDo0NjoyNCBVVEN8NTM1NDYzNg=="
}

Это образец JSON

Новости извлекаются из некоторого API и должны храниться в Dynamo DB

Какие ключи необходимо сделать для эффективного поиска?Новости можно получать как по компании.

1 Ответ

1 голос
/ 26 сентября 2019
News
----------
id (hash key)
title
publication_date
url 
summary
company_id (index - hash key)

Должен сделать свое дело.Таким образом, каждый элемент массива «новости» будет идти здесь, с идентификатором компании.Если вы хотите получать по новостному идентификатору, вы можете сделать это эффективно, а также по идентификатору компании (из-за индекса).

Будут проблемы с индексом, если есть несколько крупных компаний, у которых будет большинство новостей(Например, Apple), и у вас много данных.

Чтобы исправить это, используйте

company_by_month_id (index - hash key)

, который является составным ключом.

Обновление:

company_name (index - hash key + timestamp as sort key)
ticker (index - hash key + timestamp as sort key)
timestamp (this is generated)

Запрос двух индексов, созданных для получения самых последних новостей на основе названия компании или тикера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...