Я думаю, что, если мы предварительно загружаем данные клиентов (номер счета, нетбаланс) заранее, и всякий раз, когда транзакция обрабатывается, запись txn записывается в ОЗУ в структуре данных FIFO и обновляет также данные клиентов в ОЗУ, а затем после определенный период запись будет записана в базу данных на диске, чтобы предотвратить потерю данных из ОЗУ из-за волатильности.
Таким образом, время в операциях ввода-вывода должно быть сэкономлено и меньше времени на поиск данных клиентов для цели (более быстрая транзакция).
Я слышал о базе данных в памяти, но я не знаю, совпадает ли моя идея с этой вещью. Кроме того, есть ли идея лучше, чем я думаю?
На мой взгляд, есть несколько аспектов, о которых нужно подумать / изучить, чтобы сделать шаг вперед. Предварительная загрузка и обработка данных обычно выполняется быстрее, чем привязка к схемам доступа к страницам диска / базы данных. Однако вы моментально теряете долговечность. Поэтому в разных ситуациях действуют три подхода:
диско-синхронный (старый добрый путь к базе данных, после каждой транзакции данные гарантированно остаются в постоянном хранилище)
в памяти (хорошо, пока система работает и работает, быстрее на порядок, риск потери данных транзакций из-за ошибок)
задерживается (в основном в памяти, но время от времени данные записываются на диск)
Стоит отметить, что задержка напрямую поддерживается в Linux через файлы с отображением в памяти, которые, с одной стороны, часто бывают быстрее обычной памяти (если только вы не читаете и не обращаетесь к слишком многим страницам), а с другой стороны автоматически синхронизируются с диском. (но не мгновенно).
Как вы отметили, C ++, возможно, это самый простой способ реализовать вашу идею.
Тем не менее, обратите внимание, что при допущении сбоев (аппаратное обеспечение, перезагрузка и т. Д.) У вас вообще не будет транзакций, потому что нетривиально точно сказать, когда данные действительно записываются.
Примечание: иногда эта проблема решается путем записи (надежно) в файл журнала (последовательный доступ, следовательно, быстрее, чем непосредственно в файлы данных). Поиск слова «Сжатие» в контексте баз данных. Это операция объединения журнала с обычно используемыми структурами данных на диске, которая происходит время от времени (когда журнал становится слишком большим).
К последнему аспекту вопроса: да, базы данных в памяти работают в основной памяти. Тем не менее, в зависимости от гарантий (ACID?), Которые они дают, некоторые операции по-прежнему связаны с жестким диском или NVRAM.
Других решений пока нет …