Чем больше ограничений вы накладываете на пример, тем больше вы, вероятно, сможете сделать числа похожими на те, которые вы хотели. Одна очередь с одним приложением? Если это ваше единственное требование, то у вас есть много вариантов.
Но взгляните на некоторые ограничения режима WAL. Контрольные пункты ждут читателей, чтобы закончить. Поэтому чем больше у вас читателей, тем сложнее проходить контрольную точку, и тем более разрушительной становится контрольная точка. Если размер файла WAL становится большим, производительность чтения снижается, поэтому вы не можете выполнять ленивые контрольные точки в занятой системе и сохранять производительность.
Итак, вопрос ", если вы собираетесь реализовать высокоскоростную постоянную очередь в C, сделаете ли вы это аналогично Websphere MQ и получите сообщения с разными смещениями и т. Д. В одном файле, или вы бы использовали SQLIte в режиме WAL?"не учитывает все требования или соображения. По мере масштабирования числа одновременно работающих пользователей архитектура процессов начинает затмевать различия в подходах хранения, о которых вы спрашиваете. WMQ может обрабатывать тысячи одновременно работающих считывателей и писателей с очень большими файлами журналов с довольно плоскими кривыми производительности, тогда как в документах WAL утверждается, что производительность пропорциональна размеру файла WAL, то есть кривые производительности снижаются по мере увеличения WAL.
Если бы I собирался реализовать высокоскоростную очередь в C? Если вы имеете в виду, какой продукт выбрать, я бы выбрал тот, который имел двадцать лет настройки и оптимизации с миллионами долларов на НИОКР, вложенные каждый из этих лет и который ориентирован исключительно на организацию очередей. Если под «внедрением» вы имеете в виду, как бы я это сделал, если бы писал новый движок очередей с нуля, то на меня бы сильно повлияли продукты, которые в течение долгого времени были сосредоточены на организации очередей, и попытался бы повторно использовать их решения. к нетривиальным проблемам. Базы данных и механизмы очередей не попали в соответствующие архитектуры хранения случайно. Один оптимизирован для очередей, а другой оптимизирован для семантики базы данных, и если вы расширяете область действия, чтобы включить базы данных и механизмы организации очередей, отличные от WMQ и SQLite, это в целом верно для всех категорий.
Полное раскрытие: я работал с WMQ большую часть двадцати лет, в течение которых он существует, и недавно присоединился к его команде по управлению продуктами в IBM. Я могу быть немного предвзятым, но я попытался сосредоточиться на технологии здесь, а не на коленях «мой продукт лучше, чем ваш продукт». Не стесняйтесь подписать соглашение с положительными голосами, несогласие с отрицательными голосами. Я заберу ответ, если он получит слишком много отрицательных голосов.