-
Задача, выбрать СУБД под следующие требования:
1) БД имеет в большей степени иерархический вид. 2) Необходимость использовать функции процедуры, вьюверы и несколько триггеров. 3) Постоянный рост БД, до 5 Гб. 4) Коннект до 15 рабочих станций. 5) Ожидание от БД: Быстродействия, масштабируемость не желательна, надежность, "безошибочность", backup и восстановления из него.
Читал про каждую из 4-х СУБД, так особо ограничивающих критериев в использовании каждой не нашел. Чтобы разобраться нужен думаю тонкий подход к рассмотрению каждой СУБД... Посему решил задать вопрос сюда:
Что лучше использовать ? И с чем работаете без проблем ? Плюсы/Минусы каждой по вашему собственному мнению ?...
Спасибо.
-
К [0].
Душа почему-то предрасположена больше к PostgreSQL... Хотя на многих форумах его хают...
-
> БД имеет в большей степени иерархический вид.
вид может быть любой главное - как ты будешь данные сохранять и какие запросы будут преобладать
-
Я бы MySQL точно откинул бы, IB - тоже. Postgres - посурьёзнее будет, чем FB, но и посложнее в администрировании.
-
> Правильный$Вася (26.09.08 11:20) [2] > > > БД имеет в большей степени иерархический вид. > > вид может быть любой > главное - как ты будешь данные сохранять и какие запросы > будут преобладать
Преобладать будут "сложно-вложенные" запросы.
-
> Правильный$Вася (26.09.08 11:20) [2] > > > БД имеет в большей степени иерархический вид. > > вид может быть любой > главное - как ты будешь данные сохранять и какие запросы > будут преобладать
Преобладать будут "сложно-вложенные" запросы.
-
Сории за разные ники, интернет только у меня, а форумом пользуются несколько человек, а точнее троя...
-
> Ega23 © (26.09.08 11:23) [3] > Я бы MySQL точно откинул бы, IB - тоже. > Postgres - посурьёзнее будет, чем FB, но и посложнее в администрировании. >
А чем именно сложнее ?...
-
Выбирай по имеющимся библиотекам доступа и их удобствам.
Сам сервер может быть распрекрасным и расчудесным, а средств доступа вменяемых - либо не сыщешь либо за бабки либо глюкалово.
-
> А чем именно сложнее ?...
Как объяснить, что поднять гирю на 50 кг - тяжело? А может конкретно тебе окажется, что и не тяжело вовсе... Пока сам не пощупаешь - не поймешь.
Ещё там достаточно дурацкий (с моей точки зрения) pgplsql (для функций).
-
> Преобладать будут "сложно-вложенные" запросы.
теоретически, легко заменяются на ХП
-
> Преобладать будут "сложно-вложенные" запросы.
> БД имеет в большей степени иерархический вид.
Oracle. Без вариантов. Для начала хватит халявого XE. Его ставить и админить довольно просто. Дистриб занимает примерно 250 метров. Можно качать самому или стрельнуть у друзей. !!! Ставится на винду начиная с XP или хорошо пропатченную 2000. Хотя с 2000 компов уже мало.
-
Душа почему-то предрасположена больше к PostgreSQL...
Правильная душа бегом бежит от модной экзотики к мэйнстриму.
-
> Ega23 © (26.09.08 11:31) [9] > > > А чем именно сложнее ?... > > > Как объяснить, что поднять гирю на 50 кг - тяжело? А может > конкретно тебе окажется, что и не тяжело вовсе... > Пока сам не пощупаешь - не поймешь. > > Ещё там достаточно дурацкий (с моей точки зрения) pgplsql > (для функций).
Угу., понял...
> Поросенок Винни-Пух © (26.09.08 11:27) [8] > Выбирай по имеющимся библиотекам доступа и их удобствам. > > > Сам сервер может быть распрекрасным и расчудесным, а средств > доступа вменяемых - либо не сыщешь либо за бабки либо глюкалово. >
Допустим, что работаю только с СУБД, о средствах доступа, да и о средах разработки клиентов пока не задумывались. Задача выбрать СУБД...
-
-
Допустим, что работаю только с СУБД, о средствах доступа, да и о средах разработки клиентов пока не задумывались. Задача выбрать СУБД...
Ну ну.
-
> Oracle. Без вариантов.
Прикольно. Всяк кулик свое болото хвалит. Почему так категорично? Почему не FB или не MSDE?
-
Допустим, что работаю только с СУБД, о средствах доступа, да и о средах разработки клиентов пока не задумывались. Задача выбрать СУБД...
Первазив, Бэтрив, Каше. О! Эта, как её? Вспомнил! Адабас!!!
-
Cashe - прекольная.
-
> Ещё там достаточно дурацкий (с моей точки зрения) pgplsql > (для функций).
По мне, так язык в FB наиболее удобный, приближен к дельфовому/паскалевскому синтактису. Язык во 2й версии доработали, появился dinamicSQL(там executeblock). Насчет объема данных, слышал, держит до 200Гб, если руки прямые. 15 рабочих мест - не проблема, на предыдущей работе их было раза в 3 больше, при этом грамотного админа не было, был сисадмин с функциями DBA! Установка и администрирование очень просты, по крайней мере для Classic-версии сервера. Очень удобная утилита для администрирования IBExpert.
В любом случае выбирать лучше из PostgreSQL или FB. Честно, преимущества и недостатки обоих перед друг другом не назочу, т.к. 1й не пользовался, но слышал про нее положительные отзывы.
-
> [0] Василий Жогарев © (26.09.08 11:14) > 5) Ожидание от БД: Быстродействия, масштабируемость не желательна, надежность, "безошибочность",
Ожидание от БД - это ожидания от себя (тебя) самого. Как сделаешь так и будет.
>PostgreSQL, MySQL, IB, FB 2 и 3 я бы выкинул и добавил вместо них MSSQL и Oracle. Есть бесплатные версии с возможностью роста (за деньги разумеется) до "вселенских" масштабов. Работая с ними к тому же получаешь опыт, который всегда пригодится в будущем. Из остальных я за ФБ. Бесплатен, надежен, малоадминистрируем, постоянно развивается. К тому же почти "родной" для делфи.
-
> Ega23 © (26.09.08 11:46) [18] > Cashe - прекольная.
Чем ? Дизайном ?... :o))) ;o)
-
> малоадминистрируем
эк извернулся может звучать, как критика, так и хвальба причем, и то, и другое - правда :)
-
> ANB (26.09.08 11:35) [11] > >
> Oracle. Без вариантов
идет лесом. Также без вариантов.
> Ega23 © (26.09.08 11:31) [9] > Ещё там достаточно дурацкий (с моей точки зрения) pgplsql > (для функций).
Можно попробовать EnterpriseDB. По сути тот же Постгрес, но функции могут писаться по-другому. Тем более, разработчики утверждают полную Ораклосовместимость.
-
> Можно попробовать EnterpriseDB.
Чоза грибы? Скинь на мыло ссылку, плиз...
-
> Чоза грибы? > Скинь на мыло ссылку, плиз...
И мне :o)
-
> b z (26.09.08 11:37) [14] > Тут вот кое какие сравнения (коментании, отзывы) есть: http: > //zoob.ru/2005/10/17/db_comparison/
Слушай, отличная ссылка... Спасибо.
-
С точки зрения дельфи и клиента (в смысле функциональности и прозрачности интерфейса с БД) лучше связки ADO+MS SQL не встречал. Вот только с транзакциями было сложно разобраться после ФБ
-
> MsGuns © (26.09.08 12:57) [27] > С точки зрения дельфи и клиента (в смысле функциональности > и прозрачности интерфейса с БД) лучше связки ADO+MS SQL > не встречал. Вот только с транзакциями было сложно разобраться > после ФБ
Я до сих пор не разобрался с транзакциями в связке ADO+MS SQL, ну а работает на транспортном уровне конечно отлично... А другую СУБД смотрю потому, что MS SQL $ стоит, да и "дельфин" тоже, потому в ближайшем будущем буду еще среду разработки выбирать, а работал хотя именно с этой связкой: MS SQL + ADO + Delphi, все устраивает, но $... Ппц просто...
-
выбирать сервер до выбора среды разработки это странно слегка я бы сказал
-
> MS SQL $ стоит
Из бесплатных я бы, всё-таки, Postgres взял. Точнее, сначала MSDE (или как оно теперь там называется), а потом - postgres. Но MSDE тебе по заявленным требованиям не подойдёт - там до 2 Гб базы. Плюс на процессоры ограничение. А Postgres - вполне. Да и вырос он за последние 4 года очень здорово.
-
> Поросенок Винни-Пух © (26.09.08 13:10) [29] > выбирать сервер до выбора среды разработки это странно слегка > я бы сказал
Да среда примерно уже выбранна, это Qt 4. Мечусь только между ней и Gombas...
-
> Василий Жогарев (26.09.2008 13:05:28) [28]
MS SQL это бесплатно, если нет жестких требований к размеру отдельной БД
-
> Василий Жогарев (26.09.2008 13:05:28) [28]
Кстати и насчет $ вроде бы самый дешевый сервер данного класса.
-
> Gombas
Сорри... Gambas...
-
> Anatoly Podgoretsky © (26.09.08 13:39) [33] > > Василий Жогарев (26.09.2008 13:05:28) [28] > > Кстати и насчет $ вроде бы самый дешевый сервер данного > класса.
Ну я работаю с MS SQL Server 2005, и Delphi 7. Вполне устраивает. Начальство дало распоряжение искать Free "альтернативу".
-
> Кстати и насчет $ вроде бы самый дешевый сервер данного > класса.
Postgres дешевле. :) По классу - уже сравнялись. Другое дело, что Postgres менее распространён, у него не такой support и PR, как у MS.
-
> Василий Жогарев (26.09.2008 13:40:34) [34]
На *Nix/Linux собираешься переходить или это для Виндоус онли
-
>> 1) БД имеет в большей степени иерархический вид.
postgesql имеет расширение, как раз для иерархичских данных.
-
> Anatoly Podgoretsky © (26.09.08 13:52) [37] > > Василий Жогарев (26.09.2008 13:40:34) [34] > > На *Nix/Linux собираешься переходить или это для Виндоус > онли
На Linux, если примерно неделю дела будут идти тупо, тогда с теме же чемоданами на Windows думаю разобраться проще будет...
-
Кто вообще работал с PostgreSQL/FireBird, Qt/Gambas ?
-
> Василий Жогарев © (26.09.08 14:19) [40] > Кто вообще работал с PostgreSQL/FireBird, Qt/Gambas ?
Под Linux или Windows...
-
> Василий Жогарев (26.09.2008 13:43:35) [35]
Был вопрос какой размер БД предельный, ответа вроде бы не было.
-
Ну я с postgres работаю. Не сильно плотно, но так...
-
> Ega23 (26.09.2008 13:44:36) [36]
Они не могут сравняться, они совершенно разные и по задачам. Насчет распротранения, евросоюз, многим организациям, например по окружающей среде, он им понравился и они суют его как персональную базу, в рот им гайку.
-
> в рот им гайку.
:o)))
> Anatoly Podgoretsky © (26.09.08 14:25) [42] > > Василий Жогарев (26.09.2008 13:43:35) [35] > > Был вопрос какой размер БД предельный, ответа вроде бы не > было.
Не понял хода мысли, но если вопрос ко мне тогда предельный размер 5 Гб.
-
> Ega23 © (26.09.08 12:38) [24] >
> > Чоза грибы?
До мыла далеко. enterprisedb.com
-
> Василий Жогарев (26.09.2008 14:32:45) [45]
Ты его видел? Собака создало гигантское количество каталог и папок и настройка и конфигуирование явно не для рядового пользователя. А их базы для конечного пользователя. Поддержка в виде документации есть, много есть, как и папок. В свое время матерились на Парадокс мол он чемпион по количеству файлов, зря матерились, они просто PostgreSQL не видели. На самом деле в своем классе ей альтернативы нет, много ли иерерхических СУБД?
-
> Anatoly Podgoretsky © (26.09.08 14:27) [44] > > > Ega23 (26.09.2008 13:44:36) [36] > > Они не могут сравняться, они совершенно разные и по задачам. >
Можно, пардон, озвучить задачи того и другого?
> Василий Жогарев © (26.09.08 14:19) [40] > > Кто вообще работал с PostgreSQL/FireBird, Qt/Gambas ? >
Я с Постгресом работаю.
-
> Насчет распротранения, евросоюз, многим организациям, например > по окружающей среде, он им понравился и они суют его как > персональную базу, в рот им гайку.
Ну и нормально. А многие MSDE как персональную суют. Снифига. Или апач с какого-то перепуга доставляют. А некоторые даже драйвера уровня ядра распространяют. Гады.
-
> Anatoly Podgoretsky © (26.09.08 14:38) [47]
Этот пост про какой продукт?
-
> Собака создало гигантское количество каталог и папок и настройка > и конфигуирование явно не для рядового пользователя. > А их базы для конечного пользователя.
А тебе не всё равно, в какой файловой структуре хранятся твои данные? Ты с ними что, прямым доступом работаешь?
> Поддержка в виде документации есть, много есть, как и папок.
Поддержка и другая есть. Только платная.
Не, понятно, что у каждого свои предпочтения. мне самому больше по душе MSSQL : знаю лучше -> быстрее выполню задачу -> быстрее получу деньги. Но Postgres также весьма не плох. А с учетом того, что он, походу, уже начал у хостеров MySQL потихоньку щемить - будущее у него весьма любопытное.
-
> Этот пост про какой продукт?
Про постгрес.
-
Я год на прошлой работе с FB работал
-
> Но Postgres также весьма не плох. А с учетом того, что он, > походу, уже начал у хостеров MySQL потихоньку щемить - > будущее у него весьма любопытное.
Слышал тоже о таком...
-
> megabyte © (26.09.08 14:53) [53] > Я год на прошлой работе с FB работал
Какие задачи выполнял ? И какие тяжелые запросы делал ?
-
> Я год на прошлой работе с FB работал
Да в пост-СССР кто только с ней не работал... :)
-
> Ega23 (26.09.2008 14:45:51) [51]
Это пользователю все равно, а мне нет. С хостерами понятно, раньше шел в дистрибутиве, наверно и сейчас тоже.
-
> Какие задачи выполнял ? И какие тяжелые запросы делал ?
БД предприятия с около 60, позже 100 пользователей в головном офисе, и еще 20-30 удаленных со своими репликами БД - для учета ремонта телефонов по конвеерной системе. Таблиц около 100, основная таблица при моем уходе имела около 1млн. записей. Насчет тяжелых вопросов не совсем понял: если правильно оптимизировать и грамотно проектировать структуру, то все летать будет. К сожалению тот, кто делал БД, не учел того, что предприятие будет расширятся и я лично со многими проблемами столкнулся при обработке данных(я не создавал эту систему, только данными из БД пользовался). В общем с сервером проблемы возникали только при нововедениях, как-то репликация и новые модули для работы. Ну это дело рук программера. Сам писал сложные аналитические вопросы, индексы не всегда спасали из-за неправильного проектирования. Либо я не понял о чем вы...
-
> Anatoly Podgoretsky © (26.09.08 15:01) [57] > > > Ega23 (26.09.2008 14:45:51) [51] > > Это пользователю все равно, а мне нет.
А тебе-то какая разница? :) Сказал ему куда ставиться, а там он сам себе хозяин. За пределы этого места указанного он не лезет никогда.
-
> pasha_golub (26.09.2008 15:14:59) [59]
> А тебе-то какая разница? :)
Я легкоранимый человек
-
> Я легкоранимый человек
А что ты в MSSQL (в самой структуре) используешь, кроме Binn, Log и Doc? Ты действительно в файлах напрямую копаешься? По мне - так пофигу, в каком виде (физически) моя БД на диске находится. В одной директории, или нескольких, в одном файле, или в десятке...
З.Ы. На Postgres Яндекс работает. Причём уже черт знает сколько лет. А возможности Postgres в полнотекстовом поиске меня просто душевного равновесия лишили.
-
> А возможности Postgres в полнотекстовом поиске меня просто > душевного равновесия лишили.
Угу, бешаннаи черти.
-
Возможно, я чего-то путаю (опыт с мускульными СУБД у меня крохотный), но вроде Постгрес "унаследовал" от мускула очень медленную модификацию и удаление данных, зато на выборке он, действительно, просто реактивный
-
> но вроде Постгрес "унаследовал" от мускула
Он не мог от него ничего "унаследовать". Это дальнейшее детище Стунбрейкера после Ingress
-
> MsGuns © (26.09.08 16:52) [63]
Сергей, не приведи Господь сказать тебе эту фразу в кругу "фантиков" Постгреса. Мускуль чуть ли не главный оппонент был долгое время. В виду своей бесплатности наверное. Сейчас они уже с Ораклом меряются. Кстати, по долгу службы я некоторое время провел за исходниками Постгреса и Мускуля соответственно. Мнение чиста ламера: мускул писался на коленке, такое впечатление, а постгрес грешит академичностью.
6-7 октября будет проходить некий эвент Highload++. На нем русская сообщность Постгреса и контора Постгресмен (кояя занимается саппортом за бабло, кстати) организовывают посиделки с рассказами. Я сам не особо в курсе данного мероприятия в виду географической удаленности.
-
> Я сам не особо в курсе данного мероприятия в виду географической > удаленности.
Да чё-то оно денег стоит... И программа меня не сильно впечатлила...\За счет конторы я бы сходил, а за свои кровные - ну нафиг. Тем более, что коллега с работы таки решился. Я у него потом материалы конференции экспроприирую. :)
-
> Ega23 © (27.09.08 11:40) [66]
> Я у него потом материалы конференции экспроприирую.
Материалы материалами. Общим впечатлением поделишься лучше.
-
> Материалы материалами. Общим впечатлением поделишься лучше.
Само-собой. Ты, кистате, когда в наших краях намечаешься?
-
Через месячишко где-то.
-
> pasha_golub © (27.09.08 11:37) [65]
> На нем русская сообщность Постгреса и контора Постгресмен > (кояя занимается саппортом за бабло, кстати) организовывают > посиделки с рассказами.
Хорошо хоть не Постгресм ян... Шутка. :o)
-
За ваши деньги мы устроим посиделки даже с выражениями.
-
Сейчас они уже с Ораклом меряются.
Гыыыы......
-
> Поросенок Винни-Пух (29.09.2008 9:47:12) [72]
С разных сторон стола.
-
> Гыыыы......
А зря "Гыыы", между прочим.
-
А зря "Гыыы", между прочим.
ой я вас умоляю.....
-
> ой я вас умоляю.....
Он: а) бесплатен б) опен сорс.
-
А главное последовательность уморительная. Заборов мускул, решили замахнуться на вильяма, на нашего, шекспира. В смысле не оракл.
-
Он: а) бесплатен б) опен сорс.
<Цитата>
Это реально круто. Пора бить оракл.
-
> Это реально круто. Пора бить оракл.
Ещё раз - ты зря смеёшься. На больших системах оракл действительно сложно хабороть. А вот на малых и средних - легко. А с учетом цены - ещё легче. Я не фанат постгреса, если что, просто по работе с ним столкнулся. И то, что я вижу, меня очень сильно впечатляет. Причем, лет 5 назад про него слышали только как про некую экзотическую штуку, навроде Ingress (вот кто хоть раз не то, что под него что-то писал, а вообще вживую видел) или Cashe. А сейчас все больше и больше систем начинают потихоньку на PG переводить.
-
а поддержка xml там есть? :)
-
> а поддержка xml там есть?
Есть, и довольно мощная. На мой взгляд - серьёзнее, чем в том же MSSQL.
-
> Василий Жогарев © что имеется в иду под > степени иерархический вид?
> Пора бить оракл. раз Postgres - наследник Ingres, на Вильяма замах неспроста, основатель Ingres - один из авторов Oracle 2.35, посравшийся с Ларри. Из чего делаю вывод, что 1. С головой у авторов все в порядке 2. Есть предположение, унаследована "родная", ктороая была до 8-ки, система управления экстентами, что страшнее атомной войны.
-
> Ega23 © (29.09.08 10:10) [79]
> А вот на малых и средних - легко. А с учетом цены - ещё > легче.
не легче, XE бесплатен, SE One - порядка MSSQL цена
-
Спасибо за ликбез про постгрес, надо не полениться и почитать чего-нибудь о нем, чтобы в следующий раз не сесть в лужу :) А тому деятелю - "спесилисту" в базах, который мне навешал эту туфту (в смысле. что постгрес- это навороченный "клон" мускула), при встрече накручу ухи
-
> не легче, XE бесплатен, SE One - порядка MSSQL цена
Постгрес вообще бесплатен.
-
> Поросенок Винни-Пух © (29.09.08 10:02) [77] > > А главное последовательность уморительная. > Заборов мускул, решили замахнуться на вильяма, на нашего, > шекспира. В смысле не оракл.
Не совсем так. Меряет в основном народ, а не разработчики как таковые. При том сама PostgreSQL Development Group очень осторожна в высказываниях. Занимает некий нейтралитет. А вот EnterpriseDB (enterprisedb.com) в открытую вышли на тропу войны. Супротив Оракла. А если учесть что очень много разработчиков (из PostgreSQL Development Grou) получили там рабочие места, то нетрудно провести аналогии.
-
> получили там рабочие места
Имеется ввиду EnterpriseDB
-
> pasha_golub (29.09.2008 11:37:26) [86]
> вышли на тропу войны.
Ой что будет.
-
> Ой что будет.
Дет через пять будет видно, что будет. Возможно и поборет Oracle. Возможно нет. Я бы дал процентов 15-25 вероятности, что таки займет оракловую нишу. Если не полностью, то сильно потеснит.
Во всяком случае, я пять лет назад только такое слово слышал, 3 года назад мог всего пару проектов назвать на Postgres, а сейчас их реально дофига стало.
-
а чо там с клиентскими библиотеками? кроме odbc есть что-нибудь?
-
> кроме odbc есть что-нибудь?
oledb драйвер есть. Но он, по отзывам народа кривоватый. Я, по крайей мере, не нашёл в нём, как коннект на конкретный порт настроить. На дефолтный - отлично. И в oledb-шном проблемы с блобами - чё-то они там намудрили. Вроде как его поддтягивают до приемливого уровня, но когда оно будет - непонятно.
Ну а в остальном - к Паше Голубю вопросы, он как раз этим делом занимается.
-
в общем понятно. сервер отличный, но кататься по полной нельзя.
-
> сервер отличный, но кататься по полной нельзя.
Смотря как. Они очень мощную поддержку по web делают - PHP, Perl, Ruby. Для delphi все несколько беднее выглядит. Но мне, по крайней мере, ODBC для работы пока хватает. Выйдет очередной релиз oledb-драйвера - попробую его.
А, кстати. Zeos вроде как с ним весьма кошерно работает. Но я не пробовал, мне именно ADO нужно было.
-
> Ega23 © (29.09.08 14:47) [93]
> Но я не пробовал, мне именно ADO нужно было.
А что под ADO вообще релизав нету ???
-
> А что под ADO вообще релизав нету ???
Я в [91] на олбанском писал? Или ты не читаешь?
-
> Ega23 © (29.09.08 15:03) [95]
А, ну да... Пропустил :o)
-
> Для delphi все несколько беднее выглядит.
Оно и понятно. Пока не было у нас поддержки Юникода, оно бы все равно бедно выглядело. > Поросенок Винни-Пух © (29.09.08 14:38) [92] > > в общем понятно. сервер отличный, но кататься по полной > нельзя. >
А по полной это как? Вот мне интересно Sony Online Entertainment ( http://downloads.enterprisedb.com/whitepapers/Sony_Web.pdf) они в полпедали катаются?
-
А по полной это как?
А по полной - это заюзать все что умеет замечательный сервер. Берем к примеру оракл + бде + скллинкс + sqlora32 что имеем? ретурнинг при инсерте не имеем, клобы, блобы не имеем. и так далее.
-
> А по полной - это заюзать все что умеет замечательный сервер.
Они основной упор всё-таки на web делают, насколько я вижу. Хотя лично мне для моих задач вполне odbc хватает.
-
ну еще бы там и select маша фром петя не работало бы.
только где кайф-то от такой урезанной поддержки фич сервера
-
> только где кайф-то от такой урезанной поддержки фич сервера
Там фичи совершенно в другом. SQL - он и в африке SQL, тут ничего такого не придумать. А вот то, что лёгким движением руки можно унаследоваться от таблицы - это да. Я когда это увидел - чуть оргазм не испытал. Потому как на предыдущей работе приходилось все это ручками делать. Как таблицы, так и запросы по наследникам. А тут - вообще с полтычка.
-
3.5. Inheritance
Inheritance is a concept from object-oriented databases. It opens up interesting new possibilities of database design.
Let's create two tables: A table cities and a table capitals. Naturally, capitals are also cities, so you want some way to show the capitals implicitly when you list all cities. If you're really clever you might invent some scheme like this:
CREATE TABLE capitals (
name text,
population real,
altitude int, -- (in ft)
state char(2)
);
CREATE TABLE non_capitals (
name text,
population real,
altitude int -- (in ft)
);
CREATE VIEW cities AS
SELECT name, population, altitude FROM capitals
UNION
SELECT name, population, altitude FROM non_capitals;
This works OK as far as querying goes, but it gets ugly when you need to update several rows, for one thing.
A better solution is this:
CREATE TABLE cities (
name text,
population real,
altitude int -- (in ft)
);
CREATE TABLE capitals (
state char(2)
) INHERITS (cities);
In this case, a row of capitals inherits all columns (name, population, and altitude) from its parent, cities. The type of the column name is text, a native PostgreSQL type for variable length character strings. State capitals have an extra column, state, that shows their state. In PostgreSQL, a table can inherit from zero or more other tables.
For example, the following query finds the names of all cities, including state capitals, that are located at an altitude over 500 feet:
SELECT name, altitude
FROM cities
WHERE altitude > 500;
which returns:
name | altitude
-----------+----------
Las Vegas | 2174
Mariposa | 1953
Madison | 845
(3 rows)
On the other hand, the following query finds all the cities that are not state capitals and are situated at an altitude of 500 feet or higher:
SELECT name, altitude
FROM ONLY cities
WHERE altitude > 500;
name | altitude
-----------+----------
Las Vegas | 2174
Mariposa | 1953
(2 rows)
Here the ONLY before cities indicates that the query should be run over only the cities table, and not tables below cities in the inheritance hierarchy. Many of the commands that we have already discussed — SELECT, UPDATE, and DELETE — support this ONLY notation.
Note
Although inheritance is frequently useful, it has not been integrated with unique constraints or foreign keys, which limits its usefulness. See Section 5.8, “Inheritance” for more detail.
-
А вот то, что лёгким движением руки можно унаследоваться от таблицы - это да.
честно говоря не вставило меня от этого. в оракле создаем тип с полями методами и свойствами, потом целое дерево наследников. потом таблицу на основе этого типа. тоже легким движением руки.
-
> честно говоря не вставило меня от этого. > в оракле создаем тип с полями методами и свойствами, потом > целое дерево наследников. потом таблицу на основе этого > типа. > тоже легким движением руки.
Ну не знаю, я с ораклом практически и не работал. Так, игрался чуть-чуть на досуге. Я про свои впечатления после MSSQL.
На самом деле об увеличившимся внедрении постгреса можно по sql.ru судить.
-
Легыч, и не делают они упор на web ни в коем случае.
-
> Поросенок Винни-Пух © (29.09.08 15:54) [98]
Не совсем понял, что имеется ввиду. Не имеет связка Оракл плюс эти штуки, или не имеет Постгрес?
Если второе, то неправда.
1. RETURNING: www.postgresql.org/docs/8.3/static/sql-insert.html www.postgresql.org/docs/8.3/static/sql-update.html www.postgresql.org/docs/8.3/static/sql-delete.html
2. Честно не знаю кто такие клобы, но блобов хватает. При чем в двух реализациях: bytea vs LO (oid). Это для бинарных чисто данных. Текстовые в расчет не берем. Вот тут про различия доступно: microolap.com/products/connectivity/postgresdac/help/TipsAndTricks/ByteaVsOid.htm
А Оракл LISTEN\NOTIFY умеет?
-
Сорри за вид ссылок, авторезалка не пущала
-
> Легыч, и не делают они упор на web ни в коем случае.
Знаешь, по тому, на каких языках, кроме PLPG можно функции писать - у меня немножко другое мнение сложилось... :) Да и с теми, с кем знаком и чтоб под постгрес что-то делали (кроме тебя) - в основном под perl фигачат.
-
Да, ну и самое, что меня просто убило - это возможности тончайшей настройки полнотекстового поиска. Это просто чума.
-
> Ega23 © (29.09.08 16:35) [108]
Не, так не честно. Перловка и ПХПшка вообще недавно появились. На С народ полюбляет еще к ним приблудки писать.
А народ пересаживается на Постгрес ибо у Мускула использование ихней библиотеки клиентского доступа теперь платное.
-
Если второе, то неправда.
1. RETURNING: www.postgresql.org/docs/8.3/static/sql-insert.html www.postgresql.org/docs/8.3/static/sql-update.html www.postgresql.org/docs/8.3/static/sql-delete.html
Ты не понял юмора. То, что в оракле и постгрессе есть ретурнинг, - это еще само по себе ни тепло ни холодно. Нужно еще наличие клиентских средств чтобы заюзать все это.
Мой пример из [98] был как раз про это. Фича есть, но не заюзать.
-
А Оракл LISTEN\NOTIFY умеет?
Там же целый аппсервер есть.
-
Кстати, Skype тоже сидит на Постгресе.
> Нужно еще наличие клиентских средств чтобы заюзать все это.
Не понимаю юмора. Беру в pgAdmin пишу INSERT ..., бабах и получаю резалт сет. Или имеется ввиду именно библиотека доступа, которая эту возможность даст самому программисту?
-
> pasha_golub (29.09.2008 16:46:50) [110]
У меня на RH в 1998 году были уже и Perl и PHP и при том не первые версии, так что PG явно моложе, чем они.
-
> Anatoly Podgoretsky © (29.09.08 17:01) [114]
> У меня на RH в 1998 году были уже и Perl и PHP
Я про PL/Perl & PL/php. Или они тоже были доступны в 98?
-
> У меня на RH в 1998 году были уже и Perl и PHP и при том > не первые версии, так что PG явно моложе, чем они.
Он имел ввиду, что появилась возможность писать хранимки для Postgres на Php и Perl. Там когда хранимку пишешь, нужно указывать, на каком языке она идет. Поддерживается как собственный plpgsql, так и php, Perl, puby, c/c++ и чё-то вроде ещё.
-
> plpgsql, так и php, Perl, puby, c/c++
Tcl, python и вообще все что сам напишешь.
Каждый язык для написания хранимок должен экспортировать две функции: handler & validator.
Вторая проверяет синтаксис во время выполнения CREATE PROCEDURE. Первая соответственно выполняет саму хранимку. Так что PL/Pascal не такая и невозможность.
-
Не понимаю юмора.
Ну нет так нет. Более понятно чем уже сказано я не могу.
-
> Ega23 © (29.09.08 16:20) [102]
красиво.
В оракле тоже самое можно сделать другим синтаксисом, но: поставить foreign key на поля наследника не получится (либо я что-то не догоняю, но это врядли :)
В постгресе физически это что будет? view над всеми inherited таблицами или все вместе хранится?
-
> В постгресе физически это что будет? view над всеми inherited > таблицами или все вместе хранится?
Завтра обсудим... :)
-
> Ega23 © (29.09.08 21:46) [120]
завтра обсудим технологические вопросы: а как же ёжики в ... -тся, они ж колючие :) P.S. сегодня было техническое совещание, по вопросу совещания ничего не придумали, закончилось обсуждением вышеупомянутого технологического вопроса. Решения не приняли, блин, до сих пор покоя не дает :))))
-
PostgreSQL - не обманул предположение, действительно привольная "штука"...
Вот сежу ковыряю, пока под виндой правда...
-
Пока только непонятно как хранимки на PHP писать...
-
-
Еще вопросик: Что представляет собой Tablespace ?
-
> Еще вопросик: Что представляет собой Tablespace ?
Подозреваю ,что тебе суда: 5.7. Schemas
Вообще, это дело за 2 дня отлично читается. Вместе с экспериментами.
-
На счет FireBird и Postgre, как у них обстоят дела с шифрованием данных таблиц, т.е. какие утилиты существуют и как они влияют на производительность ?
-
> [127] Василий Жогарев © (24.11.08 16:56)
Зачем тебе все это, если ты за 2 месяца не удосужился поискать инфу по интересующей тебя теме.
-
> Sergey13 © (24.11.08 16:59) [128] > > [127] Василий Жогарев © (24.11.08 16:56)Зачем тебе все > это, если ты за 2 месяца не удосужился поискать инфу по > интересующей тебя теме.
хм, инфы нарыл, разбираюсь...
-
> > БД имеет в большей степени иерархический вид. > > Oracle. Без вариантов.
Назовите мне другую СУБД, имеющую аналог connect by
-
> Назовите мне другую СУБД, имеющую аналог connect by
чоэта?
-
> > > БД имеет в большей степени иерархический вид. > > > > Oracle. Без вариантов. > > Назовите мне другую СУБД, имеющую аналог connect by
Слегка повторюсь.
connect by - ключевое слово в оракле, позволяющее делать выборки из парентовых деревьев.
-
> ANB (25.11.08 09:58) [132]
Postgres 8.4 будет иметь эту вещь. Сейчас в состоянии пре-бета.
-
> Назовите мне другую СУБД, имеющую аналог connect by
Да он давно уже не главный пуп земли, этот Оракл. Всё, что в нём появится через год-два появится у других и через месяц-два у опенсорсных.
Я сходу могу 10 фсяких фишек назвать, которых ни у кого, кроме как Postgres не встречал.
Не надо на одном зацикливаться.
-
> Postgres 8.4 будет иметь эту вещь. Сейчас в состоянии пре- > бета.
У оракла эта вещь есть начиная с 8-ки. Т.е. минимум лет 6 уже. И в 10-ке была еще улучшена.
> Я сходу могу 10 фсяких фишек назвать, которых ни у кого, > кроме как Postgres не встречал.
Назови.
-
> Назови.
1.
query1 UNION [ALL] query2
query1 INTERSECT [ALL] query2
query1 EXCEPT [ALL] query2
UNION effectively appends the result of query2 to the result of query1 (although there is no guarantee that this is the order in which the rows are actually returned). Furthermore, it eliminates duplicate rows from its result, in the same way as DISTINCT, unless UNION ALL is used.
INTERSECT returns all rows that are both in the result of query1 and in the result of query2. Duplicate rows are eliminated unless INTERSECT ALL is used.
EXCEPT returns all rows that are in the result of query1 but not in the result of query2. (This is sometimes called the difference between two queries.) Again, duplicates are eliminated unless EXCEPT ALL is used.
2. Inheritance is a concept from object-oriented databases. It opens up interesting new possibilities of database design.
Let's create two tables: A table cities and a table capitals. Naturally, capitals are also cities, so you want some way to show the capitals implicitly when you list all cities. If you're really clever you might invent some scheme like this:
CREATE TABLE capitals (
name text,
population real,
altitude int, -- (in ft)
state char(2)
);
CREATE TABLE non_capitals (
name text,
population real,
altitude int -- (in ft)
);
CREATE VIEW cities AS
SELECT name, population, altitude FROM capitals
UNION
SELECT name, population, altitude FROM non_capitals;
This works OK as far as querying goes, but it gets ugly when you need to update several rows, for one thing.
A better solution is this:
CREATE TABLE cities (
name text,
population real,
altitude int -- (in ft)
);
CREATE TABLE capitals (
state char(2)
) INHERITS (cities);
In this case, a row of capitals inherits all columns (name, population, and altitude) from its parent, cities. The type of the column name is text, a native PostgreSQL type for variable length character strings. State capitals have an extra column, state, that shows their state. In PostgreSQL, a table can inherit from zero or more other tables.
For example, the following query finds the names of all cities, including state capitals, that are located at an altitude over 500 feet:
SELECT name, altitude
FROM cities
WHERE altitude > 500;
which returns:
name | altitude
-----------+----------
Las Vegas | 2174
Mariposa | 1953
Madison | 845
(3 rows)
On the other hand, the following query finds all the cities that are not state capitals and are situated at an altitude of 500 feet or higher:
SELECT name, altitude
FROM ONLY cities
WHERE altitude > 500;
name | altitude
-----------+----------
Las Vegas | 2174
Mariposa | 1953
(2 rows)
Here the ONLY before cities indicates that the query should be run over only the cities table, and not tables below cities in the inheritance hierarchy. Many of the commands that we have already discussed — SELECT, UPDATE, and DELETE — support this ONLY notation.
Note
Although inheritance is frequently useful, it has not been integrated with unique constraints or foreign keys, which limits its usefulness. See Section 5.8, “Inheritance” for more detail.
-
> query1 UNION [ALL] query2 > query1 INTERSECT [ALL] query2 > query1 EXCEPT [ALL] query2
UNION [ALL] - есть в оракле EXCEPT = MINUS в оракле INTERSECT - не понял, чего делает
По пункту 2 - не понял, в чем фича то ? Вьюхи и мс скл и оракл создавать умеют.
-
> Ega23 © (25.11.08 16:39) [136]
1. есть, начиная в 7 версии 2. есть, хотя сделано немного по-другому, где-то очевидно лучше, где-то очевидно хуже, улучшают с каждой версией
> it has not been integrated with unique constraints or foreign > keys
с первичными ключами все хорошо, с foreign пока проблемы
> which limits its usefulness.
= не получилось реализовать, ключи - вещь добровольная, хошь ставь, хошь не ставь.
-
> Вьюхи и мс скл и оракл создавать умеют.
При чём тут вьюхи?
-
> Ega23 © (25.11.08 17:18) [139]
Ты по русски, на пальцах объясни, чего пункт 2 означает.
И где 10 фичей ? Если только 2 опубликованы ?
-
> Ты по русски, на пальцах объясни, чего пункт 2 означает.
Наследование таблиц. На уровне SQL.
> И где 10 фичей ? Если только 2 опубликованы ?
Система счисления не была озвучена. Так что 10. На самом деле сейчас не до того. Но когда это дело читал - был сильно впечатлён.
-
... а в итоге выяснится, что 70% модных фич модного сервера недоступны в доступных клиентских либах.
-
> а в итоге выяснится, что 70% модных фич модного сервера > недоступны в доступных клиентских либах.
Дело в том, что если бы Oracle поставлялся по той же LGPL или GNU или BSD лицензии, то я бы молчал в тряпочку.
-
> Поросенок Винни-Пух © (25.11.08 18:24) [142] > > ... а в итоге выяснится, что 70% модных фич модного сервера > недоступны в доступных клиентских либах.
А вот над этим есть кому поработать. :)
Какие, например, недоступны?
-
> Дело в том, что если бы Oracle поставлялся по той же LGPL > или GNU или BSD лицензии, то я бы молчал в тряпочку.
дело не в том. API клиентской части разжевано с документации, в отличие, от << ну ты сам понял, но не postgres :) >> то, что ADO-бандо все фичи не поддерживает, не проблема oracle и не проблема postgres. Популярные клиентские библиотеки поддерживают ВСЕ, т.к. API клиентской части разжевано с документации, в отличие ... :)
-
> что ADO-бандо все фичи не поддерживает
А я ей в силу необходимости пользуюсь, а не ради искусства. Была бы моя воля - я бы на пашин DAC перешёл бы.
-
> Дело в том, что если бы Oracle поставлялся по той же LGPL > или GNU или BSD лицензии, то я бы молчал в тряпочку.
И ты бы полез его дорабатывать ?
Тем более, что : 1. Встроенных возможностей столько, что даже зубры знают только половину в лучшем случае. 2. Если чего не хватает - так же куча возможностей для расширения.
Одно не могу накопать - агрегатную склейку строк, но я ее и в других серверах не видел.
> Наследование таблиц. На уровне SQL.
Прекрасно делается и без доп.фичей в SQL. Ну лишний джойн в запросе воткнуть/убрать. Так он и так будет даже в постгрессе, только неявно.
-
> И ты бы полез его дорабатывать ?
Нет. Но я это дело могу использовать в качестве мощной и бесплатной СУБД к продукту. Очень часто цена лицензий на ПО, используемое в системе (ОС, СУБД, Офис и т.п.) сопоставима (если не больше) цены на собственно твоё ПО.
-
> Очень часто цена лицензий на ПО, используемое в системе > (ОС, СУБД, Офис и т.п.) сопоставима (если не больше) цены > на собственно твоё ПО.
Оракл XE - официально халявый. Оракле 10G - минимальная лицензия около 700 долларов, с поддержкой. Ограничений нету - сам за ними следишь, если хочешь лицензионную чистоту. Покупка лицензии на оракл - проблема покупателей твоего софта. Для изучения и разработки любая версия оракла - бесплатно.
-
> ANB (26.11.08 13:01) [147]
> Одно не могу накопать - агрегатную склейку строк, но я ее > и в других серверах не видел.
Вот я этого тоже никак не могу понять. Хотя пишется влегкую. А так иногда хочется какой-нибудь вложенный SELECT вернуть как одну строку с разделителями. Хотя, например, в Постгресе можно сделать так
SELECT
...,
ARRAY(somefield FROM sometable)
FROM
... Как у нас с этим делом в Оракле?
-
> Как у нас с этим делом в Оракле?
А пока никак. Тоже ждемс. Возможно, оракл чешет репу, т.к. строки в SQL не длиннее 2000 байт могут быть. Хотя могли бы и ошибку генерить при переполнении.
-
> Как у нас с этим делом в Оракле?
не знаю как в оракле, а в mssql declare @s varchar(max);
select @s=@s + somefield + ';' from sometable
select s=left(@s, len(@s)-1)
-
> не знаю как в оракле, а в mssql > > declare @s varchar(max); > select @s=@s + somefield + ';' from sometable > select s=left(@s, len(@s)-1)
Не совсем то.
Мне надо что то вроде :
select gr_id ,sum(X) ,gr_concat(Y) from T1 group by gr_id
Склеить строку на pl/sql я и сам могу.
-
Возможно, оракл чешет репу, т.к. строки в SQL не длиннее 2000 байт могут быть
точнее 4000 в sql и 32767 в plsql
-
> [153] ANB (26.11.08 15:34)
А в Firebird всегда это бало без проблемм.
-
> точнее 4000 в sql и 32767 в plsql
4000 байт, на XE - до 2000 символов. 4000 - тоже не сильно много.
-
varchar2(4000) в поле это сколько в байтах? 4000
-
> ANB (26.11.08 16:11) [156]
> 4000 байт, на XE - до 2000 символов. 4000 - тоже не сильно > много.
Опа. Не понятен финт ушами. В Постгресе varchar без модификатора это 2Гб, в той же Delphi TStringField максимально расчитан на 8192 символа. А чего это Оракл пожадничал так?
-
> А чего это Оракл пожадничал так?
У оракла - CLOB. Правда, с ним труднее работать.
-
-
> ANB (26.11.08 17:16) [159]
> У оракла - CLOB.
У всех такое счастье есть. Так шо не показатель.
-
> SELECT > ..., > ARRAY(somefield FROM sometable) > FROM
select collect(somefield) as strarr from somewhere
завести словаре strarr и преобразовать в строку strarr - задача 3-х часов, которая выполняется один раз в жизни
-
> ANB (26.11.08 14:32) [151]
> А пока никак. Тоже ждемс.
а с pipeline-функциями не разбирался? говорят, в рязани этой фичей проблема решается. Сам не лез, не надо было просто.
-
Кстати, может кто-нибудь пояснить фишку с наследованием таблиц? где это используется?
-
> а с pipeline-функциями не разбирался? говорят, в рязани > этой фичей проблема решается. Сам не лез, не надо было просто. >
Та и обычной функцией решается. А пипелайновые функции - штука полезная, но редко. И на наших объемах часто неприменимая.
-
> Кстати, может кто-нибудь пояснить фишку с наследованием > таблиц? > где это используется?
4 года назад мы с Alkid-ом это вручную на MSSQL городили. Задача такая была. Самый простой пример - ORM с наследованием.
-
> Ega23 © (27.11.08 10:50) [166] > Самый простой пример - ORM с наследованием.
А нужда какая заставила? В чем это на практике выгодно/удобно (дорого/богато)?
-
> А нужда какая заставила? В чем это на практике выгодно/удобно > (дорого/богато)?
Ну вот представь, есть у тебя некий "конструктор", типа как Delphi. Накидал компонентов, увязал их между собой - и готов клиент в такой или в такой конфигурации. Заказчик захотел "дополнительной эксклюзивной фичи" - новый "кирпичик" делаешь и специально для него включаешь его в дистрибутив. А все эти объекты - в БД хранятся. Каждая таблица - суть класс, каждая запись - суть экземпляр класса.
-
> Ega23 © (27.11.08 11:29) [168]
С ораклом такие конструкторы тоже прекрасно работают. А как доп.фича - всю логику тоже можно засунуть на сервер. В клиенте будет только визуалка.
-
> Поросенок Винни-Пух (26.11.2008 15:57:34) [154]
А еще точнее, и желательно такой же ответ для MS SQL
-
А почему FireBird так медленно продвигается/развивается ? Вроде другие Free СУБД намного активней развиваются… И сколько как думаете “проживет” FireBird ?
-
> nicak (05.12.2008 13:39:51) [171]
Всегда найдутся люди, которым скучно.
-
> А почему FireBird так медленно продвигается/развивается?
Всё нижесказанное - моё сугубо личное мнение.
1. В СССР почему-то Паскаль был гораздо популярнее того-же C/C++. По крайней мере, в институте, где батя работает, C начал "продвигаться" не так давно. Все на Паскале писали. Опять же, когда в МИФИ учился в начале 90-х, основным языком опять же был Паскаль. Почему - не знаю.
2. С широким распространением Windows в стране, где многие пол-жизни писали на Паскале + не сильно соблюдались всякие лицензионные политики (а по сути - вообще не соблюдались), популярность Delphi как основного средства разработки была предрешена.
3. Во всех старых книжках по тому же Delphi (я самую древнюю для D3 видел-читал, хотя есть и Лишнер, там для D2, но в ней про БД ничего нет) основные примеры разбирались на том, что доступно. Можно замечательную книгу написать "Delphi + Oracle" или "Delphi + MSSQL". Только популярность её будет, ну не знаю. Сомнительная, что-ли. А из доступного был Paradox да IB, который до определённого момента усиленно Борландом продвигался.
4. Вследствие этого в тех же Дельфях появились достаточно продвинутые компоненты доступа для работы с IB-like СУБД. Соответственно, достаточно большое число долгосрочных проектов начиналось аккурат под IB и, впоследствии, FB.
5. Собственно, вот и ответ. У нас в стране есть N-ое количество продуктов под IB/FB, которые требуют поддержки/доработки. И лично у меня складывается впечатление, что такая ситуация только на территории ex-USSR. Где-нибудь во Франции про FB мало кто знает. Также в стране есть масса специалистов, которые долгое время писали под IB/FB, знают массу тонких возможностей, подводных камней, досконально знают DAC, имеют готовые фреймворки или заготовки. И таким людям - да, гораздо проще начать какой-нибудь продукт на FB, т.к. можно пропустить момент Getting Started.
6. Ну и самое главное. Время программистов-одиночек, ИМХО, прошло. Предприятию гораздо проще купить "1С-склад" за $2000 (цена - условная) и нанять приходящего программиста, который будет это дело иногда конфигурить, чем нанимать в штат программера для написания этого дела "с нуля". А где большие софтверные решения - там и СУБД серьёзные.
-
-
|