From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Yuri Ryazantsev To: mandrake-russian@altlinux.ru Subject: Re: [mdk-re] MySQL vs PostgreSQL Message-ID: <20010926140807.A7494@mail.unix.ru> References: <2867069821.20010926133036@e-foto.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.2.5i In-Reply-To: <2867069821.20010926133036@e-foto.ru>; from max_conf@e-foto.ru on Wed, Sep 26, 2001 at 01:30:36PM +0400 Sender: mandrake-russian-admin@altlinux.ru Errors-To: mandrake-russian-admin@altlinux.ru X-BeenThere: mandrake-russian@altlinux.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: mandrake-russian@altlinux.ru List-Help: List-Post: List-Subscribe: , List-Id: Linux-Mandrake RE / ALT Linux discussion list List-Unsubscribe: , List-Archive: Date: Wed Sep 26 14:02:13 2001 X-Original-Date: Wed, 26 Sep 2001 14:08:07 +0400 Archived-At: List-Archive: List-Post: On Wed, Sep 26, 2001 at 01:30:36PM +0400, Maxim wrote: > Как люди думают, что перспективнее. > > MySQL > + Простота использования, быстрота. Наиболее распространен. > - По сути реализован чистый SQL без многих полезных наработок. Например > нет хранимых процедур или функций. Большое распространение среди простых > систем. > > PostgreSQL > + большое количество дополнительных возможностей. Поддержка > объектно-ориентированных баз данных. Более пригоден для создания серьезных > баз данных. > - Быстродействие меньше чем у MySQL. Менее распространен чем MySQL. В связи > с чем имеет меньше поддержки. > > Может, кто пользовал и то и другое, скажет свое мнение по сабжам? Я по воле случая использовал и то и другое. Если кратко, то универсального средства нет. Все зависит от задач которые стоят перед тобой. Развернуто: Примеры использования - MySQL - у нас используется на всех наших серверах: http://www.megashop.ru http://www.bolero.ru http://www.24x7.ru http://www.allshops.ru http://www.wstore.ru и т.д. Реально они работают с нагрузками 5-50 requests/sec PostgreSQL - не наш сервер, но заслуживает внимания http://www.rambler.ru Поэтому, все что я скажу дальше - мой личный опыт и на основании его мое личное мнение (не претендую на истинность и никому не навязываю). Если уровень сложности задачи по отношению к БД небольшой, нет требований транзакций, количество коннектов в секунду не очень - то идеальный выбор MySQL. Плюсы: легко ставится, администрится, настраивается. Быстрый начальный коннект к базе. Не требует сколько нибудь специального освоения - включил и уже начал писать свою записную книжку на WWW сервер. При этом не снижает общей производительности системы. Минусы: Отсутствуют транзакции (в полном смысле понимания СУБД) - и как следствие этого - нет нормальных систем хранимых процедур, триггеров, экспорта базы. Если без первых еще обойтись можно, то последнее меня приводит в неудобное состояние. Кратко - на нагруженном сервере, не останавливая сервер, сделать корректный экспорт базы в общем случае невозможно. Если из всего этого Вы уже во что-то уперлись - PostgreSQL. На самом деле его не с мускулом надо сравнивать, а с Interbase, Sybase, Oracle (кстати именно эти базы и маркетинговая цель Great Bridge). Минусы: конечно это не Oracle, но он и весит меньше и ресурсов потребляет меньше. Администрирование и настройка требует большего чтения документации, однако (IMHO) довольно последовательной и логичной. Меньшее быстродействие чем у мускулана редких коннектах, однако под нагрузкой ведет себя более стабильно и предсказуемо. Может в силу большей применимости мускула, у постгреса меньшее количество всяких адаптеров в различных языках (особенно эта ситуация видна в python'е). Плюсы: ну это даже трудно перечислить :-). Реальная транзакция (rollback и commit). Триггера, хранимые процедуры, и т.д. Но самое, чем он привлек мое внимание и что я не нашел в других базах - это возможность определять свои типы данных и их обработку - причем на разных языках (SQL, C, ...). Как пример - определяются типы ipaddr и netaddr (IP адреса и адреса сети с масками). И далее одним SQL оператором ты вытряхиваешь из таблицы хостов все, входящие в данную сеть. Причем, если такие вещи требуют спец. обработки и критично их быстродействие - пиши на C, скомпиляй и прицепи как .so модуль (реализовано на ремблере в поиске). Ну а если более развернуто, то это уже тема для длинного разговора. А так (еще раз повторюсь) все зависит от задачи, которую тебе необходимо решать. Копать траншею длиной 100 км лопатой - занятие для мазохистов, а загнать экскаватор в свой огород для выкапивания лунки для морковки - .... with best wishes, Yuri.