2013-09-14 2 views
1

Я создаю приложение, которое отображает информацию на веб-портале. У меня есть некоторое количество карточек-считывателей X в здании, и эти считыватели карт разговаривают с контроллером в том же здании. Если на устройствах считывания карт есть какая-либо возможность, они отправляют информацию контроллеру, а контроллер записывает его в базу данных.Быстрее ли использовать инструкции else/if или SQL-запрос?

Мне нужно отобразить эту информацию для чтения карт на веб-странице, как только произойдет событие проверки. , поэтому я использую perl Pcap для захвата пакетов между контроллером и базой данных, чтения полезной нагрузки, разбора его как «если nth бит - это распечатать это еще, если, напечатать это», и я повторяю то же самое, если процесс для номеров дверей, карты номера, состояние открытия/блокировки двери и т. д.

Так что мой вопрос: какой из них быстрее? Программа, которая извлекает последние данные из базы данных SQL для обновления веб-страницы или else, если итерации, которые анализируют данные, а затем записывают их в базу данных XML и скрипт подписки, запущенный для обновления веб-страницы?

+0

У меня возникает ощущение, что база данных менее эффективна, так как она должна делать много доступа к диску. Но единственный реальный способ - измерить. Специфика вашей архитектуры может быть важным фактором. – Barmar

+0

Если вы идете с помощью метода pcap, вам может понадобиться изучить библиотеку, используемую для написания декодеров tcpdump/wireshark, поэтому вам не нужно выполнять все необходимые операции if/then. – Barmar

+1

У вас есть проблема с скоростью? У вас есть какая-то минимальная метрика, которую вы должны встретить? Беспокойство о скорости без каких-либо измерений или каких-либо целей преследует слепых. Получите рабочее решение, а если это слишком медленно, беспокойтесь о его оптимизации. –

ответ

6

Единственный реальный ответ: Идите, профиль оба.

Вещи рассмотреть:

  • Извлечение данных из пакетов чувствует себя ляп. Уродливый, хакерский, склонный к поломке, неудержимый.
  • «База данных XML» - это ложь. Вместо этого используйте реальную БД.
  • Дублирование вашей информации в нескольких базах данных может быть ненужным избыточности и открывает возможность выхода из синхронизации обоих информационных репозиториев. С другой стороны, использование отдельных баз данных для отдельных целей может иметь различные преимущества.
  • Некоторые базы данных позволяют устанавливать триггеры, которые выполняются при добавлении новой записи в таблицу. Наиболее эффективным решением может быть использование триггера, который подталкивает новые события к веб-интерфейсу.
  • Другим решением будет одно задание, регулирующее БД для новых событий, которые действуют как кеш для веб-интерфейса. Это, вероятно, будет не дороже, чем запуск pcap.
Смежные вопросы