Мне нужна система, которая записывает последовательно, очень быстро в синхронизированную постоянную очередь и очень быстро читает из нее. Очередь может увеличиваться и увеличиваться до сотен миллионов, возможно, миллиардов записей в определенные дни, а затем может потребоваться несколько дней, чтобы завершить ее, что хорошо.
Я думаю о чем-то вроде этого:
Получение нескольких запросов, содержащих цифры 0-4 (порядок не имеет значения)
Queue[10]: [ 0 1 2 3 4 _ _ _ _ _ ]
Очередь также записывается в файл (f0) одновременно с отправкой в очередь. Причина в том, что в случае сбоев я не теряю данные.
Пока я читаю по порядку (0, 1, 2), публикуется больше номеров:
Queue[10]: [ _ _ _ 3 4 5 6 7 _ _ ]
На данный момент мой файл f0 содержит (0-7), и я также сохранил последнюю прочитанную позицию.
Если я продолжаю писать, и текущая очередь заполняется, следующие 10 записей будут идти непосредственно в файл f1. Следующие 10 перейдут в f2 и так далее. Когда чтение завершит чтение, все записи из очереди f1 будут загружены в очередь, и чтение продолжится. F0 будет удален. Когда мои чтения догонят записи, текущий файл будет считан в очередь и продолжится с этого момента.
Возможно, я смогу обеспечить лучшую реализацию, используя основной / вторичный буфер.
Однако я бы предпочел использовать существующую библиотеку, если есть такая, которая делает то, что мне нужно.
Любая помощь будет принята с благодарностью.
Sebi