2011-12-25 3 views
0

Я разрабатываю небольшое приложение на PHP, которое должно хранить небольшое количество данных, но с частыми обновлениями. В основном он будет неограниченно собирать информацию о нашей инфраструктуре виртуализации, и иногда она будет создавать обзор. И я не уверен, какую модель хранения/технологию использовать.Эффективное хранение нескольких данных с частыми обновлениями в PHP

В коллекторной нити будет проверено примерно 20 хостов со 100 виртуальными машинами и необходимо хранить их где-то так часто, как необходимо (возможно, даже каждые 5 секунд). Это будет приложение PHP-cli. Иногда там будет запрос на веб-странице, что нужно объединить все эти данные и производить список хост, виртуальные машины, и т.д. ...

Я рассмотрел следующие варианты:

  • PHP Сеансы

+ очень проста в использовании (я просто указать сеанс в один общий файл)

+ Atomic операции

- запирание Session (PHP будет управлять сеансом ищет, но если нужен скрипту для записи в сессию он будет блокировать все остальное)

  • Собственной реализация «сессий» - данные хранятся в файлах

+ Я могу справиться с запиранием проблема сама, вероятно, разделить данные в несколько файлов

- Лот работы/тестирование с возможно лишь немного преимуществ

  • Mysql/SQLite/PostgreSQL

+ Robust решение

- Я могу работать в запирающего проблему или мне нужно будет сделать ряд блокировки и т.д. ...

- Не уверен, что, если база данных не займет много места на диске из-за частых обновлений

+1

@Radak Какая база данных вы используете.Если это MySQL, вы можете использовать [memory storage] (http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html) – Pradeep

+0

В основном это решение для меня. Я могу иметь MySQL, PostgreSQL или SQLite (я мог бы использовать что-то другое, но тогда мне нужно было бы поддерживать его самостоятельно). Я загляну в это хранилище и дам вам знать. –

+0

Это выглядит определенно перспективным. Определенно стоит попробовать. Если вы хотите, вы можете опубликовать его как ответ, чтобы я мог отметить его как ответ. –

ответ

0

Вы можете попробовать использовать MySQL memory storage engine для этих таблиц. ,

Плюсы:

  1. Поскольку данные хранятся в памяти, так что это будет намного быстрее
  2. Таким образом, вы можете напрямую использовать многие функции базы данных (например, выбрать данные, где, сортировка), которые вы будете необходимо выполнить для замены базы данных.

Минусы:

  1. Вы не можете иметь BLOB или TEXT столбцы. (но если данные небольшие, вы можете преобразовать их в VARCHAR)
  2. Все данные будут потеряны при перезагрузке сервера MYSQL, поэтому вам придется предварительно отправить данные из этой таблицы.