pgAdmin III v1.8.0 Beta 1 jeb PostgreSQL 8.3 atbalstīs enum datu tipu

Pirms diviem gadiem sāku aktīvāk interesēties par datubāzu vadības sistēmu (dbvs) PostgreSQL, jo tad parādījās pirmā normālā PostgreSQL 8.0 versija, kas bija paredzēta Windows sistēmām. To varēja mierīgi uzinstalēt uz savas darba stacijas kā jebkuru citu programmu Windows vidē, pirms tam to varēja uzlikt tikai “caur pakaļu” ar dažādu emulatoru palīdzību.

Kāpēc tieši par PostgreSQL un nevis par MySQL? Tas laikam ir reliģijas jautājums. Es esmu ļoti ietekmējies no saviem kolēģiem iepriekšējās darba vietās un man šī reliģija ir tuvāka – uzskatu to par nopietnāku dbvs, kas paredzēta sarežģītākiem risinājumiem – pieturās pie standartiem, strikti tos ievēro, gadiem ilgi piedāvā dažādas komerciālu dbvs funkcionalitāti utt. Šāda pārliecība man jau ir vismaz pēdējo septiņu gadu garumā un nedomāju, ka kādam to izdosies mainīt. Attiecīgi “fleims” šajā virzienā ir bezjēdzīgs. 🙂

Tajā pašā laikā šis blogs tiek spēcināts ar MySQL un esmu ar to apmierināts, jo katram risinājumam ir savs pielietojums. Protams, ja būtu tāda iespēja, tad es izmantotu WordPress PostgreSQL versiju, bet tas atzars kaut kā nomira un es samierinos ar to, kas ir pieejams. Bet kāpēc tik gara un liriska atkāpe, pie šīs it kā nesaistītās tēmas?

Vienkārši es neesmu tik liels fans, lai sekotu līdzi visiem jaunumiem, kas notiek PostgreSQL izstrādē, tajā pašā laikā sekoju līdzi pgAdmin attīstībai, kā arī ik pa laikam uzmetu acis uz stabilām jeb PostgreSQL versijām. pgAdmin palīdz darboties ar datubāzes datiem. Pagaidām neko labāku neesmu atradis. Nu lūk, jaunā pgAdmin III v1.8.0 Beta 1 izmaiņu sarakstā pamanīju interesantas lietas.

Pirmkārt, jau to, ka pgAdmin III v1.8.0 būs jauns attīstības zars, jo pēdējā versija bija 1.6.x. Izskatās, ka 1.7.x zara nemaz nebūs?

Otrkārt, pārskrienot pāri šim sarakstam, piefiksēju interesantu jaunumu, kas tiks ieviests jaunajā PostgreSQL 8.3.x versijā.

2007-04-03 DP  1.8.0  Add support for enums in PostgreSQL 8.3+

Es nezinu kā citiem, bet man šķiet forša lieta, ka ieviesīs arī enum datu tipu iekš PostgreSQL (enum funkcijas), jo pirms tam nācās izmantot nedaudz citu pieeju kā panākt šo pašu rezultātu. Sanāca garāks pieraksts nekā, ja izmantotu MySQL jau iebūvēto datu tipu.

Enumerated (enum) types are data types that are comprised of a static, predefined set of values with a specific order. They are equivalent to the enum types in a number of programming languages. An example of an enum type might be the days of the week, or a set of status values for a piece of data.

17 komentāri par “pgAdmin III v1.8.0 Beta 1 jeb PostgreSQL 8.3 atbalstīs enum datu tipu

  1. gusc

    eh aizmirsu pierakstit, tagad nakas rakstit otru komentu… Ar MySQL viss butu labi, bet ljoti pietrukst SEQUENCEs. Istenibaa vai nav kautkur pieejams salidzinajums MySQL vs PostgreSQL SQL komandu atbalstam?

    Atbildēt
  2. Grrr

    Jāatzīmē, ka pastāv zināma korelācija pierakstā un “attieksmē pret dzīvi” starp šīm populārākajām open-source db un attiecīgajām komerciālajām db:

    PostgreSQL -> Oracle
    MySQL -> MSSQL

    Tipiskākais piemērs ir SEQUENCE vs AUTONUMBER, bet ir arī zināma korelācija šādu tādu funkciju nosaukumos un vispārīgā pierakstā.

    Atbildēt
  3. bubu

    Nu nezinu, kas tur caur pakaļu bija jāliek uz Windows, bet es labi atceros kā kautkādu 7.x versiju nokompilēju ar gcc (nedaudz pielabojot sourci), un viss gāja bez nekādiem emulatoriem – tīri natīvā variantā.

    Atbildēt
  4. Vilx-

    Katram savas priekšrocības. Oracle/PostgreSQL sekvences ir universālāks variants, taču MySQL/MSSQL autonumber var ielikt kā defaulto kolonnas vērtību, un turpmāk par šo kolonnu aizmirst. Iekš O/P šajā kolonnā var nejauši insertot/updeitot kaut ko citu, bet M/M ne. Visjaukākais variants, IMHO, būtu tāds, ja būtu abi. Vai, vismaz, sekvences varētu likt pie DEFAULT kolonnai.

    Ā, vēl viena forša fīča MSSQL ir “timestamp” datu tips. Tas ir counteris (individuāls katrai DB), kurš palielinās par 1 uz katru insertu/updeitu. Ja tabulā ir timestamp kolonna, tad viņas vērtība palielinās katru reizi, kad notiek kāds updeits attiecībā uz šo rindiņu. Perfekts risinājums versionēšanai. Oracle neko līdzīgu neatradu – nācās emulēt ar sekvenci. 🙁

    Atbildēt
  5. e-remit

    Vilx:
    1) automātisko ID aizpildīšanu realizē caur trigeriem, apmēram, ja ID ir NULL, aizpilda no sekvences. Tas dod iespēju aizpildīt ID gan pašam, gan automātiski. Tāpat var aizsargāt ID no modifikācijas, ja tas ir nepieciešams.
    2) par tavu timestamp – atkal trigeri…

    Atbildēt
  6. [henry]

    Par autonumber..

    PostgreSQL vienkārši uzstādam sequence’i kā default’o vērtību un par lauku aizmirstam, līdz brīdim, kad nepieciešamas sarežģītākas operācijas..


    create table t1 (
    id integer not null default nextval('t1_id_seq'),
    ...
    constraint t1_pk primary key(id)
    );

    bubu:
    Nedaudz pielabojot source = caur pakaļu 🙂

    Kaut gan IMHO savietojamība ar jau pastāvošajām virtualizācijas tehnoloģijām vairs nav tik aktuāls jautājums..

    Atbildēt
  7. Vilx-

    Nu, tad PostgreSQL ir spēris soli pareizajā virzienā! Oracle nevar sekvences likt kā defaultās vērtības.

    Par trigeriem – tas ir gan performance kritums, gan arī padara to visu pasākumu nepārskatāmāku. Man, piemēram, jau 2 projektos trigerus ir aizliegts lietot kā šķiru, ja vien tam nav Patiesi Labs Pamatojums. Taču tas, protams, ir risinājums…

    Atbildēt
  8. Grrr

    skatoties kāda db un kādi trigeri.

    cik skatījos viens no Postgres replicēšanās variantiem gāja tīri uz trigeriem un par performanci cilvēki nesūdzējās. YMMV protams.

    Atbildēt
  9. bubu

    Kur ir problēmas programmētājam pielabot sourci, lai viss strādātu, ja pie tam tā ir open-source? Galīgi nu nesaskatu risinājumu caur pakaļu. Caur pakaļu man ir piemēram nācies oracle atinstalēt/reinstalēt.

    Atbildēt
  10. elfz

    (par postgres) ņefig rakstīt vairāk, ja var rakstīt mazāk.
    “automātiskā id aizpildīšana” –
    create table nnn (id serial primary key);
    pats uztaisīs sekvenci un visu ar to saistīto.

    Par mistiskiem laukiem, kas palielinās pie apdeita – ja kas tik dīvains vajadzīgs, tad jā, trigeri. (mysql timestamp lauku taču aizpilda ar ieraksta modificēšanas laiku, nevis “palielina par 1”, ne tā?)

    Atbildēt
  11. Atbalss: PostgreSQL 8.3 » Pods.lv - Latvijas interneta pods

  12. Atbalss: Izvilkums iz Latvijas blogiem… « Datubāzu resurss latviski

Ieraksti komentāru

Tava e-pasta adrese netiks publicēta.