использование одновременных хэш-карт в банковском приложении, вызывающее проблемы с синхронизацией - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь разработать банковское приложение, которое поддерживает 3 функции:

  1. Добавление кредита
  2. Создание дебета
  3. Проверка баланса

Я выбрал

  • 1 ConcurrentHashMap в качестве моей структуры данных, чтобы представить сущность, которая содержит баланс клиента
  • 1 ConcurrentHashMap, который имеет все кредиты
  • 1 ConcurrentHashMap, у которого есть все дебеты.

Одним из требований перед добавлением кредита является проверка того, не существует ли еще идентификатор транзакции, с которой производится кредит.Существуют.

В моем ConcurrentHashMap, который имеет все кредиты, у меня есть ключ в качестве customerId, creditType и валюты.Но для вышеуказанного требования мне нужно будет просмотреть карту всех типов кредитов, чтобы проверить, не использовался ли этот идентификатор транзакции клиентом.Есть ли лучший способ справиться с этим?Могу ли я иметь ключ для hashMap, который содержит, скажем, 3 атрибута, один из которых является необязательным?Если это не указано, тогда какое-либо значение для этого атрибута должно подойти?

Или ConcurrentHashMap неправильная структура данных для использования в этом случае?

Редактировать 1

с использованием одного ConcurrentHashMap для отслеживания всего, кроме того, что вызывает три разных поиска (3 разных ключа);используя идентификатор клиента, тип валюты в качестве ключей (кортеж)

Это нормально с точки зрения производительности?как еще вы решите банковскую проблему, подобную этой?

...