Date: Wed, 26 Jun 2002 08:59:22 +0000 (UTC)
From: Victor Wagner <vitus@communiware.ru>
Subject: Требуются мнения
Serge Droutchin <sir@iserv.volga.ru> wrote:
SD> Обчий Q!
SD> И вопрос тоже общий.
SD> Мне некогда подробно и самому разбираться сразу в двух пакетах
SD> баз данных: MySQL и Postgresql.
SD> Я собираюсь держать там :) административную информацию
SD> о сетях, компьютерах, пользователях, статистику работы,
SD> статистику инета и т.п. Часть информации скорее всего
SD> будет визуализироваться через ВЕБ.
SD> Помогите сделать правильный выбор или просто перечислите резоны.
SD> Тока, умоляю, без войн :)
Резоны:
В пользу mySQL
- маленький и быстрый при ограниченном числе клиентов
(в случае web-интерфейса клиентом является каждая запущенная
копия backend-сервера или каждый работающий CGI-скрипт)
В пользу PostgreSQL
- Более полно поддерживает язык SQL. Если ты возьмешь книгу Мартина
Граббера "Введение в SQL", и будешь по ней пытаться составить запросы,
достающие из базы нужную тебе информацию, то в PostgreSQL отработает
любой, а в mySQL шаг вправо/шаг влево - расстрел. Поддерживается очень
ограниченное подмножество SQL, достаточное для многих случаев, но для
столь же многих недостаточное.
- Нормальные транзакции. Поскольку у тебя статистика, вероятно
будет собираться realtime, в базу ее будут писать какие-то скрипты.
Причем скорее всего скрипту придется запихнуть информацию в несколько
таблиц. В mySQL в процессе этой операции либо ты заблокируешь
все эти таблицы, и не сможешь посмотреть что-либо через web-интерфейс,
пока не закончится вся операция, либо будешь работать без транзакций,
и увидишь неконсистентную информацию.
В postgresql пока один клиент лопатит базу в рамках транзакции он видит
все что успел натворить, а все остальные видят базу в том виде, как
она была перед началом транзакции, пока клиент не скажет commit.
Критично то, что они ее при этом ВИДЯТ.
- Поддержка целостности данных.
В PostgreSQL реализованы понятия внешнего ключа (в это поле можно
всталять только значения из данного поля данной таблицы-справочника)
есть триггеры (запуск определенных операций по факту изменения или
добавления записи в таблицу, независимо от того, каким клиентом ты ее
добавляешь) и хранимые процедуры.
Поэтому если ты не поленишься прочитать какую-нибудь книжку,
посвященную разработке баз данных, все почерпнутые оттуда знания
окажутся применимы, и разработать надежное приложение, данные в
котором ни при каких обстоятельствах не станут неконсистентными,
будет намного проще.
Да, естественно, рассматриваются последние стабильные версии
PostgreSQL 7.2.1 и MySQL не помню какой.
--
http://www.communiware.ruhttp://www.ice.ru/~vitus