Небольшие / эффективные опции базы данных PHP

0

Субъективный вопрос, я знаю, но я рассчитываю исходящие клики для очень определенной части веб-сайта, и мне просто нужно сохранить количество исходящих кликов на ссылку и в день. Я знаю, что я мог бы использовать MySQL для этого, но мне интересно, есть ли что-то меньшее/более эффективное для этого приложения.

Я управляю своим собственным сервером на slicehost, работающем под управлением Ubuntu 9.10 с Apache/2.2.12, и могу что-то установить, однако есть ли что-то маленькое и легко заносится для небольших приложений вроде этого?

Возможно, что-то, что пишет ему собственный файл на сайте.

Разъяснение: этот вопрос касается эффективности кода, необходимого для простой настройки таких мелочей. Я не имею и не ожидаю проблем с производительностью. Мне любопытно, что другие люди используют для подобных вещей. Может быть, это MySQL - я здесь, чтобы учиться.

  • 0
    SQLite пишет в свой собственный файл на сайте. Вы можете использовать какое-то решение для кэширования в памяти, например memcached, для отложенной записи в БД, и тогда вы хорошо справитесь даже с резкими скачками трафика.
  • 0
    В настоящее время я играю с SQLite. Идея memcached - отличная комбинация, чтобы не перегружать вещи. Я дам вам знать, как все закончится. Спасибо.
Теги:
database

5 ответов

2
Лучший ответ

Вы можете делать меньше. Вы можете сделать более эффективным. Вы не собираетесь получать оба в одном пакете.

  • SQLite меньше и содержится в одном файле. Он также значительно медленнее, чем MySQL.
  • Firebird аналогично содержится в одном файле. Я считаю, что это также не соответствует MySQL.
  • Oracle стоит дорого и даже не удаленно "маленький". Это может быть очень эффективным.
  • PostgreSQL - это вариант, но опять же не маленький. Он также обрабатывается по-разному, чем MySQL, и, как известно, он более сложный для администрирования.

На самом деле, я с Питером Бейли. Весь этот вопрос пахнет предварительной оптимизацией. У вас действительно есть проблема с производительностью, которая оправдывает использование дополнительной базы данных?

  • 0
    Вы правы: у меня нет проблем с производительностью сайта, и, как предположил Питер Бэйли, мне не нужно беспокоиться о размере и эффективности в данный момент. Я пояснил в своем вопросе выше, что мне интересно, если для небольших приложений, подобных этому, существует лучшая (как в случае более быстрой настройки / кодирования) база данных. Или это может быть просто моя неэффективность как программиста в MySQL, которая заставляет меня задавать этот вопрос. Спасибо вам за ваши предложения.
  • 0
    Спасибо за перечисление вариантов с объяснениями, это было полезно и, по крайней мере, должно помочь мне опробовать новую базу данных.
2

Вы можете использовать SQLite, но, честно говоря, весь этот вопрос воняет до оптимизации.

  • 1
    это не предварительная оптимизация, это дизайн приложения.
  • 0
    Я склонен согласиться, это пахнет предварительной оптимизации.
Показать ещё 6 комментариев
1

Вы можете использовать Memcached в качестве кеша в памяти для вашего счетчика.

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->add('counter', 0); // no-op if key already exists
$m->increment('counter');

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

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$count = (int) $m->get('counter');
$m->set('counter', 0);

$pdo->exec("UPDATE mytable SET counter = counter + {$count}");
  • 0
    Это здорово! Спасибо...
0

Просто используйте текстовый файл. fopen/fwrite/fclose

0

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

Конечно, вы также можете воспользоваться этой возможностью, чтобы изучить новую технологию баз данных. Если это произойдет, то узнайте, что сделало бы вас более ценными для вашего нынешнего или будущего работодателя (ов) (т.е. Они могли бы смотреть на другую технологию для нового продукта, который вы можете стать внутренним гуру), какие новые базы данных "вверх и вперед" и т.д.

Ещё вопросы

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