Запись в общий текстовый файл или таблицу БД из веб-службы?

#ajax #web-services #json

#ajax #веб-сервисы #json

Вопрос:

Я разрабатываю веб-службу, которая будет вызываться (с использованием JSON) со стороны клиента каждый раз, когда изменяется выбор выпадающего списка. Цель состоит в том, чтобы регистрировать каждое «промежуточное» изменение (на стороне клиента) с помощью события «OnSelectedIndexChanged» и перед отправкой формы на сервер.

Каждое новое выбранное значение будет записываться в общий текстовый файл, вызывающий соответствующий веб-метод через Ajax / JSON.

Было бы лучше записать эти изменения в текстовый файл (необходимо реализовать политику блокировки / разблокировки для обеспечения эксклюзивного доступа) или, скорее, определить таблицу БД и сохранить изменения там?

Каждый день в веб-приложении будет от 10 до 20 активных пользователей, которые потенциально могут изменять выпадающие списки, и обычно сначала выбирается правильное значение, следовательно, обычно регистрируется не более одной «промежуточной» записи.

Спасибо.

Ответ №1:

Не используйте файловую систему. Это медленно. Используйте mongodb через node.js веб-сервер.

http://howtonode.org/express-mongodb

Удачи!

Комментарии:

1. Спасибо Homer6. Мое приложение уже использует MS SQL Server в качестве базы данных и asp.NET для кода. Я буду использовать Jquery Ajax / JSON для отслеживания изменений на стороне клиента (перед отправкой) и для каждого изменения вызывать веб-метод (разработанный C #) для записи этой информации. Я беспокоился о том, чтобы ввести слишком много подключений к БД, поскольку каждый раз, когда пользователь изменяет выпадающий список, выполнялась новая ВСТАВКА.

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

3. На самом деле приложение будет выполняться только на одном сервере, поэтому каждый доступ будет осуществляться к одному и тому же текстовому файлу, содержащемуся на сервере, где находятся БД и код. Мои сомнения больше связаны с точки зрения производительности: было бы лучше уменьшить количество взаимодействий с БД или операций ввода-вывода.

4. Ну, если БД блокирует и записывает на диск, то в любом случае это будет так же медленно, как доступ к диску. Я бы все равно выбрал DB. Запросы будут, по крайней мере, выполняться из памяти, даже если они выполняются по сети.

Ответ №2:

Это звучит точно так же, как если бы вы хотели использовать базу данных, поскольку там уже реализован ACID.

Если вы хотите получить настоящую головную боль (и проблему программирования!), пытаясь отладить перекрывающиеся записи, нехватку ресурсов и взаимоблокировки, во что бы то ни стало используйте общий текстовый файл!