Мы видели много приложений, которые работают с файлом JSON, но у меня есть пример, из которого я хочу получить решение.
Покажи нам...
приложение работает с json файлом, который получает запросы от миллионов пользователей и каждую вторую тысячу запросов.
Файл JSON обновляется административной панелью каждую минуту или секунду или определенный временной интервал.
каким будет поведение файла JSON во время получения запроса для доступа к файлу JSON и открытия для обновления от администратора в одно и то же время (я прочитал, что файл JSON будет извлечен в читаемом режиме).
Пусть JSON файл пишет с использованием какого-то скрипта, и его процесс занимает треть секунды, чем то, что будет поведением, в то время как 50% -ый файл был обновлен.
Любой файл будет предоставлен с новым письменным контентом при завершении процесса или при его частичном обновлении?
Не беспокойтесь о блокировке, просто используйте rename()
.
Предполагая, что вы работаете в ОС, где rename()
является атомарной операцией, создайте новый файл, например "/data/file/name.json.new", а затем, когда это будет завершено, переименуйте файл. В C это будет выглядеть так:
rename( "/data/file/name.json.new", "/data/file/name.json" );
Таким образом, при любом открытии процесса "/data/file/name.json" всегда будет отображаться согласованный файл данных.
Практически, по тому, что вы описываете, вам нужна служба, которая применяет операции на стороне файлового сервера.
Вы должны избегать ответственности за создание, чтение, обновление и удаление (CRUD), так как у вас возникнут проблемы с сохранением таких принципов, как Atomicity, Consistency, Isolation and Durability (ACID), в то время как для вас есть системы, Системы управления базами данных. Говоря простыми словами, сценарии, подобные тому, что вы описываете, должны нести ответственность за СУБД, а не за вас.
Вам, вероятно, нужна СУБД NoSQL, ответственная за операции CRUD вашей базы данных, которые могут быть основаны на файлах в формате JSON и других формах, сохраняя ACID всегда (или почти всегда, но это, вероятно, то, что вы узнаете при поиске на Это). MongoDB - отличный пример такой системы.
Поскольку вы упомянули JSON, учтите, что это еще одна история для передачи данных, а другая - для их хранения. Я предлагаю вам использовать формат JSON для запросов и ответов, но изучать другие варианты хранения. Например, даже реляционная СУБД, использующая SQL, может быть полезна для вас, она всегда зависит от ваших потребностей. Возможно, вам просто нужно сформировать (закодировать и декодировать) данные в формате JSON везде, где они были получены или отправлены каждому клиенту.
Взгляните сюда для получения дополнительной информации.