Extensions

Jak se chovat, pokud chci přidat/zjistit jestli běží nějakou extension?

  1. nainstalujeme vhodný balíček, příklady níže
    apt-get install postgresql-contrib-9.3 postgresql-plpython-9.3
  2. zrestartujeme databázi
  3. najdeme si extension za pomocí příkazu
    SELECT * FROM pg_available_extensions;
  4. vytvoříme nad databází za pomocí sql příkazu
    CREATE EXTENSION "název";
  5. pokud chceme zjistit seznam dostupných extensions nad databází tak sql
    SELECT * FROM pg_extension
2015/04/22 15:53 · kourim

Fulltext vyhledávání

Popis jak nastavit české fulltextové vyhledávání v postgresql za pomocí českého ispell slovníku.

  1. vytvoříme sloupeček, ve kterém se bude hledat
    ALTER TABLE items ADD COLUMN search_text TSVECTOR DEFAULT NULL;
  2. do /usr/share/postgresql/9.3/tsearch_data je potřeba nahrát slovníky český ispell
  3. je potřeba vytvořit slovník
    CREATE TEXT SEARCH DICTIONARY czech_ispell (
        TEMPLATE = ispell,
        DictFile = czech,
        AffFile = czech,
        StopWords = czech
    );
  4. nyní je potřeba vytvořit konfiguraci (tady se dá dost hrat, dole lze definovat spousta slovníků)
    CREATE TEXT SEARCH CONFIGURATION public.czech ( COPY = pg_catalog.english );
    ALTER TEXT SEARCH CONFIGURATION czech
        ALTER MAPPING FOR asciiword, asciihword, hword_asciipart,
                          word, hword, hword_part
        WITH czech_ispell, simple;
    ALTER TEXT SEARCH CONFIGURATION czech DROP MAPPING FOR email, url, url_path, sfloat, float;
  5. vytvoření indexu
    UPDATE items SET search_text = to_tsvector('czech', title || ' ' || (attributes->>'identification')::text);
    CREATE INDEX search_text_gin ON items USING GIN(search_text);
  6. vytvoříme si trigger, který bude pravidelně index udržovat
    CREATE FUNCTION avector_update() RETURNS TRIGGER AS $$
    BEGIN
        IF TG_OP = 'INSERT' THEN
            NEW.search_text = to_tsvector('czech', NEW.title || ' ' || (NEW.attributes->>'identification')::text);
        END IF;
        IF TG_OP = 'UPDATE' THEN
            NEW.search_text = to_tsvector('czech', NEW.title || ' ' || (NEW.attributes->>'identification')::text);
        END IF;
        RETURN NEW;
    END
    $$ LANGUAGE 'plpgsql';
    CREATE TRIGGER ts_search_text BEFORE INSERT OR UPDATE ON items FOR EACH ROW EXECUTE PROCEDURE avector_update();
  7. nyní je možné volat hledání s jazykem czech
    SELECT * FROM items where search_text @@ to_tsquery('czech', 'keyword');

→ Číst dále...

2015/04/22 14:26 · kourim

Instalace

Instalace postgresql na debianu.

  1. Nainstaluji databázi z balíčku.
    apt-get install postgresql
  2. Pokud potřebuji novější verzi než je v balíčku debianu, tak je potřeba nejprve přidat repozitář s novou verzí. Vytvoříme soubor s textem
    vim /etc/apt/sources.list.d/pgdg.list
    deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main
    Dále pak přidáme klíč k repozitáři
    wget https://www.postgresql.org/media/keys/ACCC4CF8.asc
    apt-key add ACCC4CF8.asc
    Pak už jen aktualizujeme repozitář a instalujeme konkrétní verzi
    apt-get update
    apt-get install postgresql-9.3
  3. Dále nastavíme heslo pro uživatele postgres, kterého nám instalace vytvořila. NIKDY nevytvářet heslo pro uživatele postgres v debianu!
    su -l root
    su - postgres
    psql
    V konzoli postgresql použijeme příkaz
    \password postgres
  4. pokud se chci připojovat do databáze na vytvořeného uživatele skrze heslo, je potřeba změnit nastavení
    vim /etc/postgresql/9.3/main/pg_hba.conf
    
    local   all   all   md5
  5. Nastavení vzdáleného přístupu
    1. je potřeba v konfiguračním souboru /etc/postgresql/9.3/main/postgresql.conf odkomentovat parametr listen_addresses a přidat tam adresu serveru, kde je postgresql nainstalován
      listen_addresses = 'localhost, 192.168.1.200'
    2. v souboru /etc/postgresql/9.3/main/pg_hba.conf přidát řádky pro SERVER_IP a MANAGEMENT_IP
      host    all         all         192.168.1.200/24          md5
      host    all         all         192.168.1.51/24          md5
      pokud chci přihlášení bez hesla tak se md5 vymění za trust
    3. pokud je zapnutý firewall, je potřeba povolit připojení skrz konkrétní ip adresu
      iptables -A INPUT -p tcp -m tcp -s 10.8.4.10 --dport 5432 -j ACCEPT
  6. Pokud chceme mít přístup do postgresql přímo z roota, tak se přihlásíme pres postgres uživatele do databáze a zavoláme tyto příkazy
    CREATE ROLE root superuser;
    CREATE USER root;
    GRANT ROOT TO root;
    ALTER ROLE root WITH LOGIN;
2015/04/22 11:46 · kourim

Vyhnanci

2015/04/05 16:18 · kourim

Ztracená lebka

2015/03/30 10:56 · kourim

<< Novější zápisky | Starší zápisky >>

  • start.txt
  • Poslední úprava: 2015/09/01 14:41
  • autor: kourim