Запретить запрос на получение данных из файла JSON при обновлении файла JSON

1

Мы видели много приложений, которые работают с файлом JSON, но у меня есть пример, из которого я хочу получить решение.

Покажи нам...

  1. приложение работает с json файлом, который получает запросы от миллионов пользователей и каждую вторую тысячу запросов.

  2. Файл JSON обновляется административной панелью каждую минуту или секунду или определенный временной интервал.

  3. каким будет поведение файла JSON во время получения запроса для доступа к файлу JSON и открытия для обновления от администратора в одно и то же время (я прочитал, что файл JSON будет извлечен в читаемом режиме).

  4. Пусть JSON файл пишет с использованием какого-то скрипта, и его процесс занимает треть секунды, чем то, что будет поведением, в то время как 50% -ый файл был обновлен.

    Любой файл будет предоставлен с новым письменным контентом при завершении процесса или при его частичном обновлении?

  • 0
    Вы должны читать на чтение, писать блокировки. Они предназначены для того, чтобы специально решать проблему скопления информации несколькими авторами.
  • 1
    Не используйте файлы в качестве транзакционного хранилища.
Показать ещё 1 комментарий
Теги:

2 ответа

1

Не беспокойтесь о блокировке, просто используйте rename().

Предполагая, что вы работаете в ОС, где rename() является атомарной операцией, создайте новый файл, например "/data/file/name.json.new", а затем, когда это будет завершено, переименуйте файл. В C это будет выглядеть так:

rename( "/data/file/name.json.new", "/data/file/name.json" );

Таким образом, при любом открытии процесса "/data/file/name.json" всегда будет отображаться согласованный файл данных.

  • 0
    спасибо, но что может быть на веб-серверах?
  • 0
    @MuhammadIrfan - Это будет зависеть от того, насколько вы контролируете процесс записи файлов. Ваш оригинальный вопрос не дает этой информации. Вы всегда можете написать свой собственный код на стороне сервера, чтобы сделать это, хотя это может потребовать много работы в зависимости от вашей конфигурации.
1

Практически, по тому, что вы описываете, вам нужна служба, которая применяет операции на стороне файлового сервера.

Вы должны избегать ответственности за создание, чтение, обновление и удаление (CRUD), так как у вас возникнут проблемы с сохранением таких принципов, как Atomicity, Consistency, Isolation and Durability (ACID), в то время как для вас есть системы, Системы управления базами данных. Говоря простыми словами, сценарии, подобные тому, что вы описываете, должны нести ответственность за СУБД, а не за вас.

Вам, вероятно, нужна СУБД NoSQL, ответственная за операции CRUD вашей базы данных, которые могут быть основаны на файлах в формате JSON и других формах, сохраняя ACID всегда (или почти всегда, но это, вероятно, то, что вы узнаете при поиске на Это). MongoDB - отличный пример такой системы.

Поскольку вы упомянули JSON, учтите, что это еще одна история для передачи данных, а другая - для их хранения. Я предлагаю вам использовать формат JSON для запросов и ответов, но изучать другие варианты хранения. Например, даже реляционная СУБД, использующая SQL, может быть полезна для вас, она всегда зависит от ваших потребностей. Возможно, вам просто нужно сформировать (закодировать и декодировать) данные в формате JSON везде, где они были получены или отправлены каждому клиенту.

Взгляните сюда для получения дополнительной информации.

  • 0
    Благодарю. @ Ник - это действительно улучшило мой подход к программированию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню