Конференция "Прочее" » PostgreSQL, MySQL, IB, FB
 
  • Поросенок Винни-Пух © (29.09.08 16:04) [100]
    ну еще бы там и select маша фром петя не работало бы.

    только где кайф-то от такой урезанной поддержки фич сервера
  • Ega23 © (29.09.08 16:13) [101]

    > только где кайф-то от такой урезанной поддержки фич сервера


    Там фичи совершенно в другом. SQL - он и в африке SQL, тут ничего такого не придумать.
    А вот то, что лёгким движением руки можно унаследоваться от таблицы - это да. Я когда это увидел - чуть оргазм не испытал. Потому как на предыдущей работе приходилось все это ручками делать. Как таблицы, так и запросы по наследникам. А тут - вообще с полтычка.
  • Ega23 © (29.09.08 16:20) [102]

    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.

  • Поросенок Винни-Пух © (29.09.08 16:24) [103]
    А вот то, что лёгким движением руки можно унаследоваться от таблицы - это да.

    честно говоря не вставило меня от этого.
    в оракле создаем тип с полями методами и свойствами, потом целое дерево наследников. потом таблицу на основе этого типа.
    тоже легким движением руки.
  • Ega23 © (29.09.08 16:30) [104]

    > честно говоря не вставило меня от этого.
    > в оракле создаем тип с полями методами и свойствами, потом
    > целое дерево наследников. потом таблицу на основе этого
    > типа.
    > тоже легким движением руки.


    Ну не знаю, я с ораклом практически и не работал. Так, игрался чуть-чуть на досуге.
    Я про свои впечатления после MSSQL.

    На самом деле об увеличившимся внедрении постгреса можно по sql.ru судить.
  • pasha_golub © (29.09.08 16:32) [105]
    Легыч, и не делают они упор на web ни в коем случае.
  • pasha_golub © (29.09.08 16:34) [106]

    > Поросенок Винни-Пух ©   (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 умеет?
  • pasha_golub © (29.09.08 16:34) [107]
    Сорри за вид ссылок, авторезалка не пущала
  • Ega23 © (29.09.08 16:35) [108]

    > Легыч, и не делают они упор на web ни в коем случае.


    Знаешь, по тому, на каких языках, кроме PLPG можно функции писать - у меня немножко другое мнение сложилось...  :)
    Да и с теми, с кем знаком и чтоб под постгрес что-то делали (кроме тебя) - в основном под perl фигачат.
  • Ega23 © (29.09.08 16:36) [109]
    Да, ну и самое, что меня просто убило - это возможности тончайшей настройки полнотекстового поиска. Это просто чума.
  • pasha_golub © (29.09.08 16:46) [110]

    > Ega23 ©   (29.09.08 16:35) [108]

    Не, так не честно. Перловка и ПХПшка вообще недавно появились. На С народ полюбляет еще к ним приблудки писать.

    А народ пересаживается на Постгрес ибо у Мускула использование ихней библиотеки клиентского доступа теперь платное.
  • Поросенок Винни-Пух © (29.09.08 16:49) [111]
    Если второе, то неправда.

    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] был как раз про это. Фича есть, но не заюзать.
  • Поросенок Винни-Пух © (29.09.08 16:52) [112]
    А Оракл LISTEN\NOTIFY умеет?

    Там же целый аппсервер есть.
  • pasha_golub © (29.09.08 16:59) [113]
    Кстати, Skype тоже сидит на Постгресе.


    > Нужно еще наличие клиентских средств чтобы заюзать все это.

    Не понимаю юмора. Беру в pgAdmin пишу INSERT ..., бабах и получаю резалт сет.
    Или имеется ввиду именно библиотека доступа, которая эту возможность даст самому программисту?
  • Anatoly Podgoretsky © (29.09.08 17:01) [114]
    > pasha_golub  (29.09.2008 16:46:50)  [110]

    У меня на RH в 1998 году были уже и Perl и PHP и при том не первые версии, так что PG явно моложе, чем они.
  • pasha_golub © (29.09.08 17:04) [115]

    > Anatoly Podgoretsky ©   (29.09.08 17:01) [114]


    > У меня на RH в 1998 году были уже и Perl и PHP

    Я про PL/Perl & PL/php. Или они тоже были доступны в 98?
  • Ega23 © (29.09.08 17:05) [116]

    > У меня на RH в 1998 году были уже и Perl и PHP и при том
    > не первые версии, так что PG явно моложе, чем они.


    Он имел ввиду, что появилась возможность писать хранимки для Postgres на Php и Perl.
    Там когда хранимку пишешь, нужно указывать, на каком языке она идет. Поддерживается как собственный plpgsql, так и php, Perl, puby, c/c++ и чё-то вроде ещё.
  • pasha_golub © (29.09.08 17:08) [117]

    > plpgsql, так и php, Perl, puby, c/c++

    Tcl, python и вообще все что сам напишешь.

    Каждый язык для написания хранимок должен экспортировать две функции: handler & validator.

    Вторая проверяет синтаксис во время выполнения CREATE PROCEDURE. Первая соответственно выполняет саму хранимку. Так что PL/Pascal не такая и невозможность.
  • Поросенок Винни-Пух © (29.09.08 17:23) [118]
    Не понимаю юмора.

    Ну нет так нет.
    Более понятно чем уже сказано я не могу.
  • Petr V. Abramov © (29.09.08 20:52) [119]

    > Ega23 ©   (29.09.08 16:20) [102]

    красиво.

    В оракле тоже самое можно сделать другим  синтаксисом, но: поставить foreign key на поля наследника не получится (либо я что-то не догоняю, но это врядли :)

    В постгресе физически это что будет? view над всеми inherited таблицами или все вместе хранится?
 
Конференция "Прочее" » PostgreSQL, MySQL, IB, FB
Есть новые Нет новых   [134447   +40][b:0.001][p:0.003]