=?iso-8859-2?Q?PostgreSQL_-_jak_ustawi=E6_sortowanie=3F?=
Marek - 06-05-2006 00:07
=?iso-8859-2?Q?PostgreSQL_-_jak_ustawi=E6_sortowanie=3F?=
Witam,
Mam pewien kłopot techniczny. Na serwerze posadzona jest baza danych PostgreSQL 8.0.7 i może zostać uruchomiona również najnowsza jej wersja. Część aplikacji WWW będzie pracowała w ISO 8859-2 a część w UTF-8. Dla obu tych kodowań będą zakładane różne bazy w tym samym Postgresie. Powiedzcie mi jak należy skonfigurować bazę danych (o ile jest to w ogóle wykonalne) w sensie systemu jaki i poszczególnych baz tak aby osiągnąć następujące cele:
1. Jeżeli aplikacja pracuje w ISO to zakładam bazę createdb z opcją sortowania LATIN-2. Sortowanie polskie "SELECT ... ORDER BY" ma działać poprawnie. 2. Jeżeli aplikacja pracuje w UTF-8 to zakładam bazę createdb z opcją sortowania UNICODE. Sortowanie polskie "SELECT ... ORDER BY" ma działać poprawnie. 3. Jeżeli aplikacja pracuje w UTF-8 to zakładam bazę createdb z opcją sortowania UNICODE. Sortowanie w innych europejskich językach (z uwzględnieniem rosyjskiego) "SELECT ... ORDER BY" ma działać poprawnie.
Trzecia opcja nie jest kluczowa lecz dwie pierwsze owszem. Powiedzcie mi proszę co powinno być wykonane krok po kroku aby to wszystko funkcjonowało? Jakie parametry initdb powinny być zastosowane aby na jednym programie PostgreSQL można było poprawnie sortować w przypadkach 1 i 2 i jeśli się da to również 3? Czy da się to zrobić na jednym Postgresie? Jeśli nie to istnieje możliwość uruchomienia na innym porcie drugiego Postgresa. Administrator powiedział mi, że nie rozwiąże to sprawy gdyż Postgres podobno czerpie swoje ustawienia również ze zmiennych systemowych więc cały system serwera musiałby mieć inne kodowanie dla każdej z tych baz co z konsekwencji uniemożliwia uruchomienie obu Postgresów na jednej maszynie. Tyle się dowiedziałem.
-- Pozdrawiam, Marek
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 06-05-2006 00:07
Marek wrote: > Witam, > > Mam pewien kłopot techniczny. Na serwerze posadzona jest baza danych > PostgreSQL 8.0.7 i może zostać uruchomiona również najnowsza jej wersja. > Część aplikacji WWW będzie pracowała w ISO 8859-2 a część w UTF-8. Dla > obu tych kodowań będą zakładane różne bazy w tym samym Postgresie. > Powiedzcie mi jak należy skonfigurować bazę danych (o ile jest to w > ogóle wykonalne) w sensie systemu jaki i poszczególnych baz tak aby > osiągnąć następujące cele: > > 1. Jeżeli aplikacja pracuje w ISO to zakładam bazę createdb z opcją > sortowania LATIN-2. Sortowanie polskie "SELECT ... ORDER BY" ma działać > poprawnie.
Baza w tym przypadku również może być UTF-8. Wystarczy tylko powiedzieć postgresowi, jakie kodowanie ma klient (biblioteka pglib w większości przypadków zrobi to automatycznie, pewne kłopoty miałem pod windowsem).
> 2. Jeżeli aplikacja pracuje w UTF-8 to zakładam bazę createdb z opcją > sortowania UNICODE. Sortowanie polskie "SELECT ... ORDER BY" ma działać > poprawnie. > 3. Jeżeli aplikacja pracuje w UTF-8 to zakładam bazę createdb z opcją > sortowania UNICODE. Sortowanie w innych europejskich językach (z > uwzględnieniem rosyjskiego) "SELECT ... ORDER BY" ma działać poprawnie. > > Trzecia opcja nie jest kluczowa lecz dwie pierwsze owszem. Powiedzcie mi > proszę co powinno być wykonane krok po kroku aby to wszystko > funkcjonowało? Jakie parametry initdb powinny być zastosowane aby na > jednym programie PostgreSQL można było poprawnie sortować w przypadkach > 1 i 2 i jeśli się da to również 3? Czy da się to zrobić na jednym > Postgresie? Jeśli nie to istnieje możliwość uruchomienia na innym porcie > drugiego Postgresa. Administrator powiedział mi, że nie rozwiąże to > sprawy gdyż Postgres podobno czerpie swoje ustawienia również ze > zmiennych systemowych więc cały system serwera musiałby mieć inne > kodowanie dla każdej z tych baz co z konsekwencji uniemożliwia > uruchomienie obu Postgresów na jednej maszynie. Tyle się dowiedziałem.
Admin sporo wie, ale nie wszystko. :) Liczą się ustawienia locale w czasie inicjowania klastra. Do tego przecież środowisko można odpowiednio ustawić przed odpaleniem każdego postgresa (np. w skrypcie uruchamiającym postgresa).
Na temat sortowania w innych językach sie nie wypowiem bo problemu nie zgłębiałem. Tu najlepiej byłoby poczekać na wypowiedź Adama. :)
-- P.M.
Marek - 06-05-2006 00:07
=?iso-8859-2?Q?Re:_PostgreSQL_-_jak_ustawi=E6_sortowanie=3F?=
> Baza w tym przypadku również może być UTF-8. Wystarczy tylko powiedzieć > postgresowi, jakie kodowanie ma klient (biblioteka pglib w większości > przypadków zrobi to automatycznie, pewne kłopoty miałem pod windowsem).
Czy chodzi tu o kodowanie znaków czy sposób sortowania rekordów? Wydaje mi się, że "powiedzenie" Postgesowi odnośnie kodowania klienta określa tylko reprezentację znaków w bazie a nie sposób ich sortowania.
> Admin sporo wie, ale nie wszystko. :) > Liczą się ustawienia locale w czasie inicjowania klastra. Do tego > przecież środowisko można odpowiednio ustawić przed odpaleniem każdego > postgresa (np. w skrypcie uruchamiającym postgresa).
Konkludując: nie można odpalić jednego Postgresa sortującego dobrze zarówno dla utworzonych w nim baz w trybie Latin 2 jaki i UTF-8? Innymi słowy jeśli ustawimy w initdb locale na UTF to bazy wykreowane jako Latin 2 nie będą dobrze sortowały się i odwrotnie: jeżeli Postgres był dostosowany w initdb do Latin 2 to nie ma sensu inicjowania w nim baz UTF bo "order by" wyłozy się na polskich znakach?
Może nie wyrażam się jasno bo nie znam się na zagadnieniach serwerowych dlatego zrobiłem przykład obrazujący moje intencje. Plik jest do pobrania stąd: http://www.design-cms.com/test.zip
Są tam 2 katalogi: latin i utf. W każdym z nich jest skrypt do zainicjowania testowej tabeli i wypełnienia jej znakami w kodowaniu jak nazwa katalogu. W każdym z katalogów jest też index.php odczytujący z bazy te dane i pokazujący je w porządku alfabetycznym w przeglądarce. W obu przypadkach oczekuję porządku alfabetycznego. Czy to się da zrobić na jednym postgresie ale w różnych bazach?
> Na temat sortowania w innych językach sie nie wypowiem bo problemu nie > zgłębiałem. Tu najlepiej byłoby poczekać na wypowiedź Adama. :)
Więc czekamy na Wielkiego Adama :-)
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
=?UTF-8?Q?=5Bmysql=5D_jak_pobra=C4=87_warto=C5=9B=C4=87_ AUTO=5F?==?UTF-8?Q?INCREMENT=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plfantazia.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|