Как спроектировать хранилище для транзакций с участием нескольких таблиц в DynamodB? - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь добавить поддержку транзакций в существующее хранилище DynamodB, которое выглядит следующим образом:

public interface Storage<T>{
T put(T entity);
...
}

public abstract class AbstractDynamoStorage<T> implements Storage<T> {
@Override
public T put(T entity) {
...
}
}

public class DynamoOrderStorage extends AbstractDynamoStorage<CoreOrder> {
...
}

public class DynamoCustomerStorage extends AbstractDynamoStorage<CoreCustomer> {
...
}

Теперь я хочу добавить к этому поддержку транзакций, используя недавно запущенные транзакции DDB, чтобы можно было совершать несколько операций (put, write, update ..) в нескольких таблицах.

Вот мой подход:

interface TransactDAO{
void commitWriteTransaction(TransactWriteRequest writeReq);
}

class DynamoTransactImpl implements TransactDAO{
@Override:
commitWriteTransaction(TransactWriteRequest request){
//dynamodb.transactWriteItems();
}
}

class DynamoDBTransactWriteItem implements TransactWriteRequest{
List<DynamoTransactWriteItem<T>> transactWriteItems;
}

class DynamoTransactWritePutItem<T> implements DynamoTransactionWriteItem<T>{
String tableName;
String data;
...
}

Меня беспокоит то, что конкретные классы хранения (DynamoOrderStorage и DynamoCustomerStorage) имеют разные типы, и мой подход может не сработать здесь. Есть ли другой лучший способ добиться этого?

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