Portál AbcLinuxu, 20. dubna 2024 02:23


Dotaz: PostgreSQL namespace - podpora pro jazykove mutace

7.9.2009 04:28 Johny
PostgreSQL namespace - podpora pro jazykove mutace
Přečteno: 358×
Odpovědět | Admin
Zdravim, mam takovy problem/napad.... mam databazi ve ktere jsou ulozeny preklady pro urcite tabulky, je to udelane nasledujicim zpusobem (zjednodusene):
t_content_flow
  - id_content_flow (integer)
a k tomu je prekladova tabulka
l_content_flow
  - id_content_flow (integer)
  - id_lang (char2) // FK do tabulky s kodama jazyku
  - cf_name // preklad pro ten t_content_flow
standartne udelam join a pridam do toho podminku pro aktualne nastavenej jazyk v aplikaci.... ale neslo by nejak vyuzit rovnou nejakeho namespace aby me napriklad view vracelo primo aktualni preklad abych se o to nemusel pote starat?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.9.2009 07:42 Zdenek Kotala
Rozbalit Rozbalit vše Re: PostgreSQL namespace - podpora pro jazykove mutace
Odpovědět | | Sbalit | Link | Blokovat | Admin

No teoreticky, by kazdy jazyk mohl mit vlastni schema s tabulkou preklad a pak menit search path. ale osobne mne to prijde dost nebezpecne, asi jako hrat si se sirkama v pracharne. Co Vam vadi na tom where? Muzete treba zkusit partitioning po jazycich, to by melo vliv na rychlost, pokud Vam jde o to.

7.9.2009 22:58 Johny
Rozbalit Rozbalit vše Re: PostgreSQL namespace - podpora pro jazykove mutace
Nene, zatim mi o rychlost nejde, je to spis o pohodlnosti, ze bych nemusel vsude resit ten where.... ale problem to neni, byl to jenom takovej spis napad :) stejne mam nad tim postavene takove trochu priohnute ORM
8.9.2009 07:44 Hlípa | skóre: 13
Rozbalit Rozbalit vše Re: PostgreSQL namespace - podpora pro jazykove mutace

Jestli jde o pohodlnost, tak tam nechte ten WHERE. Ostatni varianty se mohou zdat jako pohodlnejsi, ale ve finale to prinese spis problemy.

8.9.2009 11:34 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: PostgreSQL namespace - podpora pro jazykove mutace
pre pohodlnosť? To by som:
a) urobil funkciu get_text (refid, language)
b) vytvoril si cache v programe
default avatar 22.9.2009 19:58 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: PostgreSQL namespace - podpora pro jazykove mutace
Odpovědět | | Sbalit | Link | Blokovat | Admin

Já to na PostgreSQL řešil. Dokonce zde v poradně jsem popisoval způsob, jak jsem toho dosáhnul. Tak se podívej. Třeba ti to pomůže…

22.9.2009 21:51 Johny
Rozbalit Rozbalit vše Re: PostgreSQL namespace - podpora pro jazykove mutace
Jeee diky ti moc, presne tohle jsem shanel :) Jeste, nemas tuseni jak je to pak s optimalizaci treba ve view? Jestli si to postgresql zacachuje jako v klasickem view?
default avatar 23.9.2009 09:56 default | skóre: 22 | Madrid
Rozbalit Rozbalit vše Re: PostgreSQL namespace - podpora pro jazykove mutace

Tohle je spíš otázka na pana Stěhuleho. :-) Podle mě PostgreSQL optimalizuje až na úrovni dotazů — tvůj dotaz doplní o definici VIEW:

CREATE OR REPLACE VIEW my_super_view AS
SELECT
    x || y AS something
FROM
    my_table_1 t1 INNER JOIN my_table_2 t2 ON (t1.col1 = t2.col2);

SELECT
    v.something
FROM
    my_super_view v
WHERE
    v.something LIKE 'x%';

dotaz, kterým se až vlastní optimizér začne zabývat, bude:

SELECT
    v.something
FROM
    (SELECT
        x || y AS something
    FROM
        my_table_1 t1 INNER JOIN my_table_2 t2 ON (t1.col1 = t2.col2)) v
WHERE
    v.something LIKE 'x%';

A určitě si ten dotaz ještě přepíše. :-D

Ale třeba se mýlím.

okbob avatar 24.9.2009 10:34 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: PostgreSQL namespace - podpora pro jazykove mutace

+/- takhle to nějak je. Navíc se provede flatening - kdy se poddotazy (pokud to lze) převádí přímo do hlavního dotazu. Optimalizuje se až výsledek.

flattening:

  1. puvodni dotaz, SELECT * FROM pohled WHERE a = b
  2. substituce SELECT * FROM (SELECT a, b FROM tab) x WHERE x.a = x.b
  3. flattening SELECT a, b FROM tab WHERE a = b;

 

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.