Рубрики
Без рубрики

Начало работы с Dokklib-DB для одиночной таблицы DynamoDB

DynamoDB Single Table Dokklib-DB-это библиотека Python для шаблона одиночной таблицы DynamoDB … Tagged с помощью AWS, DynamoDB, Serverless, Python.

Dynamodb Одиночная таблица

Dokklib-db-это Библиотека Python для шаблона одиночной таблицы DynamoDB. Если вы можете предвидеть свои шаблоны запроса, DynamoDB особенно подходит для приложений без серверов, поскольку он имеет минимальные операционные накладные расходы и без сохранности подключения. (Подробнее о Dynamodb vs SQL для сервера без сервера )

С помощью шаблона единственной таблицы вы помещаете все свои данные, которые хотите выполнить реляционные запросы в одну таблицу DynamoDB. Ключом к успешной конструкции одной таблицы является возможность предвидеть шаблоны запросов, так как вы должны соответствующим образом структурировать данные. Посмотрим, как это работает на практике с Dokklib-DB!

Установите Dokklib-DB

Установите Dokklib-DB и Boto3 с PIP (вам нужен Python 3.6 или более поздней версии):

PIP Install.10.34, <2 “Dokklib-DB

Настройка таблицы

Нам нужна таблица с общим композитным первичным ключом. Мы будем называть ключ раздела PK И ключ Скандал . Общие имена ключей позволяют нам хранить разные типы объектов в одной таблице. Мы также нуждаемся в глобальном вторичном индексе, который является обратным первичного индекса (т.е. где ключ раздела – и ключ сортировки PK ) Мы будем использовать этот обратный индекс для многих-многих реляционных запросов. Вы можете прочитать больше о Настройка одиночной таблицы в документах Dokklib-DB или увидеть Завершите шаблон облачной информации здесь.

Определить сущности

Предположим, что мы хотим иметь возможность добавить наших пользователей в группы и сделать много-ко-то реляционные вопросы, чтобы получить группы пользователя или членов группы. Во -первых, мы определяем объекты пользователя и группы:

import dokklib_db as db


class User(db.EntityName):
    """User entity name.

    Key value: unique user name, eg. 'alice'.
    Example key: 'USER#alice'.

    """


class Group(db.EntityName):
    """Group entity name.

    Key value: unique group name, eg. 'my-group'.
    Example key: 'GROUP#my-group'.

    """

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

Вставить данные

Посмотрим, как мы можем добавить пользователя в группу:

table = db.Table('SingleTable')

# Construct entity keys

pk_alice = db.PartitionKey(User, 'alice')
print(str(pk_alice))
# USER#alice

sk_group_1 = db.SortKey(Group, '1')
print(str(sk_group_1))
# GROUP#1

# Add Alice to group one
table.insert(pk_alice, sk_group_1)

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

Пользователь#Алиса ГРУППА 1
Пользователь#Алиса Группа № 2
Пользователь#Боб Группа № 2

Теперь мы можем использовать основной индекс для запроса всех групп пользователя:

# Get all the groups that Alice belongs to

pk_alice = db.PartitionKey(User, 'alice')
print(str(pk_alice))
# USER#alice

group_prefix = db.PrefixSortKey(Group)
print(str(group_prefix))
# GROUP#

alice_groups = table.query_prefix(pk_alice, group_prefix)
print(alice_groups)
# [{'SK': '1'}, {'SK': '2'}]

А также обратный индекс для запроса всех членов группы:

# Get all users in group two

pk_group_2 = db.PartitionKey(Group, '2')
print(str(pk_group_2))
# GROUP#2

user_prefix = db.PrefixSortKey(User)
print(str(user_prefix))
# USER#

inverse_index = db.InversePrimaryIndex()

members = table.query_prefix(pk_group_2, user_prefix, 
    global_index=inverse_index)
print(members)
# [{'PK': 'alice'}, {'PK': 'bob'}]

Это завершает наше короткое вступление. Я призываю вас продолжать исследовать в Dokklib-db документы и предоставить запросы на обратную связь/функции на GitHub.

Оригинал: “https://dev.to/agostbiro/getting-started-with-dokklib-db-for-dynamodb-single-table-228a”