Как мне создать таблицу DynamodB для данного набора реляционных таблиц - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть набор из 3 реляционных таблиц.Я хочу преобразовать их в одну таблицу в DynamodB.Каждая таблица содержит данные для разных типов.У каждой таблицы есть Id, tranDate в качестве ключа.Для данного Id, tranDate и tranType существует несколько строк.

Мой шаблон доступа - это получение данных для данного Id и TranDate - что даст мне данные для всех tranTypes.

Строки в каждой таблице находятся в пределах 400 КБ для данного Id, tranDate, но если я добавлю строки для данного Id и tranDate в 3 таблицах, он превысит 400 КБ.

Definitions
Table1
Id, tranDate,tranType,col1,col2,col3,col4
Table2
Id, tranDate,tranType,col1,col2,col3,col4,col5
Table3
Id, tranDate,tranType,col1,col2 

Table1 (Sample Data)
1, 2018-12-01,'DETAIL',12,13,14,'A'
1, 2018-12-01,'DETAIL',15,23,11,'B'
1, 2018-12-01,'DETAIL',17,33,24,'C'
1, 2018-12-01,'DETAIL',19,43,14,'D'
2, 2018-12-01,'DETAIL',11,13,14,'A1'
2, 2018-12-01,'DETAIL',12,23,11,'B1' 
1, 2018-11-01,'DETAIL',42,13,14,'X'
1, 2018-11-01,'DETAIL',45,23,11,'Y'
1, 2018-11-01,'DETAIL',47,33,24,'Z'

Table2 (Sample Data)
1, 2018-12-01,'SUMMARY',12,13,14,'A','S'
1, 2018-12-01,'SUMMARY',15,23,11,'B','B1'
2, 2018-12-01,'SUMMARY',17,33,24,'C','D1'
2, 2018-12-01,'SUMMARY',22,43,14,'D','D2'
2, 2018-12-01,'SUMMARY',33,13,14,'A1' ,'D3'

Table3 (Sample Data)
1, 2018-12-01,'GEO',11,'MI'
1, 2018-12-01,'GEO',12,'NY'
1, 2018-12-01,'GEO',11,'AL'
2, 2018-12-01,'GEO',14,'DE'
2, 2018-12-01,'GEO',15,'PA'

Учитывая Id = 1, tranDate = '2018-12-01' - ожидаемые результаты

1, 2018-12-01,'DETAIL',12,13,14,'A'
1, 2018-12-01,'DETAIL',15,23,11,'B'
1, 2018-12-01,'DETAIL',17,33,24,'C'
1, 2018-12-01,'DETAIL',19,43,14,'D' 

1, 2018-12-01,'SUMMARY',12,13,14,'A','S'
1, 2018-12-01,'SUMMARY',15,23,11,'B','B1' 

1, 2018-12-01,'GEO',11,'MI'
1, 2018-12-01,'GEO',12,'NY'
1, 2018-12-01,'GEO',11,'AL'  

1 Ответ

0 голосов
/ 13 февраля 2019

Исходя из вашего описания, одним из возможных вариантов будет использование конкатенации id + date в качестве ключа раздела и использование типа транзакции в качестве ключа сортировки, возможно, комбинируя ключ сортировки с одним из других идентификаторов.

Итак, ваша таблица может выглядеть следующим образом:

 PK             |  TranType         |       data        
----------------+-------------------+------------------------------------------
"1:2018-12-01"  |  "DETAIL"         | ["12,13,14,A", "15,23,11,B",...]
"1:2018-12-01"  |  "SUMMARY"        | ["12,13,14,A,S", "15,23,11,B,B1"]
"1:2018-12-01"  |  "GEO"            | ["11,MI", "12,NY", "11,AL"]
"2:2018-12-01"  |  "DETAIL"         | [...] 
"2:2018-12-01"  |  "SUMMARY"        | [...] 
"2:2018-12-01"  |  "GEO"            | [...] 

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

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

Пример, предполагающий, что col1 уникален для деталей и сводки, может выглядеть так:

 PK             |  TTID             | states      | c2 | c3 | c4  | c5 |     
----------------+-------------------+-------------+----+----+-----+----+--
"1:2018-12-01"  |  "DETAIL:12"      |             | 13 | 14 | 'A' 
"1:2018-12-01"  |  "DETAIL:15"      |             | 23 | 11 | 'B' 
"1:2018-12-01"  |  "DETAIL:17"      |             | 33 | 24 | 'C' 
"1:2018-12-01"  |  "DETAIL:19"      |             | 43 | 14 | 'D' 
"1:2018-12-01"  |  "SUMMARY:12"     |             | 13 | 14 | 'A' | 'S'
"1:2018-12-01"  |  "SUMMARY:15"     |             | 23 | 11 | 'B' | 'B1'
"1:2018-12-01"  |  "GEO:11"         | ["MI","AL"] |
"1:2018-12-01"  |  "GEO:12"         | ["NY"]      |
"2:2018-12-01"  |  "DETAIL:11"      |             | 13 |14  | A1 
"2:2018-12-01"  |  "DETAIL:.."      |             |    ...  
"2:2018-12-01"  |  "SUMMARY:17"     |             |    ...  
"2:2018-12-01"  |  "SUMMARY:.."     |             |    ... 
"2:2018-12-01"  |  "GEO:.."         |  ...        |

На этот вопрос нет единственного ответа.Разработайте схему на основе имеющихся у вас данных и способа доступа к ним.

...