abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 12:30 | IT novinky

Nadace Raspberry Pi představila (YouTube) Raspberry Pi Zero W. Jedná se o vylepšenou verzi miniaturního počítače Raspberry Pi Zero s Wi-Fi a Bluetooth. Koupit jej lze za 10 dolarů. V prodeji je také oficiální krabička.

Ladislav Hagara | Komentářů: 3
dnes 00:55 | Komunita

Pocket (dříve Read It Later) (Wikipedie) je oblíbená služba umožňující uložit si článek z webu na později. V červnu 2015 s vydáním Firefoxu 38.0.5 se do té doby doplněk Pocket stal integrovanou součásti Firefoxu, a to i přes odpor celé řady uživatelů tohoto webového prohlížeče. Mozilla po měsících ustoupila a z integrované součásti se stal opět doplněk. Včera bylo oznámeno, že Mozilla službu Pocket kupila (Mozilla Blog, Pocket Blog).

Ladislav Hagara | Komentářů: 13
včera 23:55 | Pozvánky

Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1. 3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!

… více »
xkucf03 | Komentářů: 0
včera 18:30 | Komunita

Jednodeskový počítač Raspberry Pi slaví již 5 let. Prodej byl spuštěn 29. února 2012. O víkendu proběhne v Cambridgi velká narozeninová party. Na YouTube bylo při této příležitosti zveřejněno video představující zajímavé projekty postavené na Raspberry Pi.

Ladislav Hagara | Komentářů: 2
včera 18:30 | Nová verze

Byla vydána verze 2017.1.1 svobodného multiplatformního leteckého simulátoru FlightGear. Kódový název a výchozí letiště této verze je Bergen. Přehled novinek v Changelogu.

Ladislav Hagara | Komentářů: 0
včera 10:50 | Zajímavý software

Mozilla.cz informuje o dvou nových experimentálních funkcích v programu Firefox Test Pilot (zprávička). Snooze Tabs slouží k odkládání panelů na později. Pokud vám někdo pošle odkaz, ale vy nemáte čas si stránku hned přečíst, můžete si naplánovat otevření panelu na později. Stačí kliknout na tlačítko a vybrat, kdy chcete panel otevřít. Firefox panel schová a ve vybraný čas znovu otevře. Pulse umožňuje ohodnotit, jak dobře stránka funguje, např. jak rychle se ve Firefoxu načetla. Podle nasbíraných hodnocení pak bude Mozilla prohlížeč ladit.

Ladislav Hagara | Komentářů: 8
včera 02:00 | IT novinky

V Barceloně probíhá veletrh Mobile World Congress 2017. Nokia na něm například představila (360° video na YouTube) novou Nokii 3310 (YouTube). BlackBerry představilo BlackBerry KEYone (YouTube) s QWERTY klávesnicí. LG představilo LG G6 (YouTube). Huawei HUAWEI P10 a P10 Plus. Samsung představil tablet Galaxy Tab S3.

Ladislav Hagara | Komentářů: 3
26.2. 14:00 | Nová verze

Komunita kolem Linuxu From Scratch (LFS) vydala Linux Linux From Scratch 8.0 a Linux From Scratch 8.0 se systemd. Nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů přichází především s Glibc 2.25 a GCC 6.3.0. Současně bylo oznámeno vydání verze 8.0 knih Beyond Linux From Scratch (BLFS) a Beyond Linux From Scratch se systemd.

Ladislav Hagara | Komentářů: 0
26.2. 11:11 | Nová verze

Byla vydána verze 0.10.0 webového prohlížeče qutebrowser (Wikipedie). Přehled novinek v příspěvku na blogu. Vývojáři qutebrowseru kladou důraz na ovladatelnost pomocí klávesnice a minimální GUI. Inspirovali se prohlížečem dwb a rozšířeními pro Firefox Vimperator a Pentadactyl. Prohlížeč qutebrowser je naprogramován v Pythonu a využívá PyQt5. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GNU GPL 3.

Ladislav Hagara | Komentářů: 35
25.2. 16:22 | Nová verze

Po pěti měsících od vydání Waylandu a Westonu 1.12.0 oznámil Bryce Harrington (Samsung) vydání Waylandu 1.13.0 a Westonu 2.0.0.

Ladislav Hagara | Komentářů: 10
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 734 hlasů
 Komentářů: 69, poslední dnes 01:02
    Rozcestník

    Dotaz: Jak dát indexy nebo jak navrhnout, aby to šlapalo

    19.5.2016 22:09 MP
    Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Přečteno: 2126×
    Mám následující tabulku, kde jsou burzovní data:

    create table admiralmarkets.empty_table_1m( symbol varchar(10) not null, datetime timestamp without time zone not null , open double precision, high double precision, low double precision, close double precision, tick_volume integer, spread integer, real_volume integer );

    Unikátní je kombinace symbol + datetime ("datetime" mám jako název pole, snad to nevadí...?)

    Jak to postavit aby se dobře dělaly selekty typu select * from admiralmarkets.empty_table_1m where datetime between .... and symbo in ('AA', 'BB' 'CC');


    Řešení dotazu:


    Odpovědi

    Řešení 1× (Filip Jirsák)
    20.5.2016 00:00 EtDirloth | skóre: 3
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    • Spravil by som dvojstlpcovy UNIQUE INDEX bud na (symbol, "datetime") alebo ("datetime", symbol) - poradie by som volil podla velkosti time spanu v selecte a tiez variability symbolov v tabulke. EXPLAIN konkretnej query na konkretnych datach napovie.
    • Vykonanie dotazu by mozno zrychlilo vyclenenie symbolov do inej tabulky, napr. (smallint primary key, varchar(10) not null) a previazanie cez cudzi kluc.
    • Neviem o aku DB ide, ale ak je to PostgreSQL, tak namiesto double precision by som pouzil numeric.
    20.5.2016 14:46 OldFrog {Ondra Nemecek} | skóre: 25 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Vykonanie dotazu by mozno zrychlilo vyclenenie symbolov do inej tabulky, napr. (smallint primary key, varchar(10) not null) a previazanie cez cudzi kluc
    Jak to?
    -- OldFrog
    20.5.2016 15:06 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Protože SMALLINT se indexuje lépe, než VARCHAR(10).
    20.5.2016 15:09 EtDirloth | skóre: 3
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    priklady pre pgsql (stale nepozname cielovu DB):
  • smallint je fixed-size a ma len 2 bajty (a dovoluje pass-by-value), teda je efektivnejsi pri spracovani a indexovani, jednoducho nema overhead, ktorym "trpi" varlena;
  • smallint je mensi, takze sa zmensi velkost riadku a teda sa ich viac zmesti na stranku, takze sa zmensuje IO;
  • 23.5.2016 18:12 OldFrog {Ondra Nemecek} | skóre: 25 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Protože SMALLINT se indexuje lépe, než VARCHAR(10).
    ---
    priklady pre pgsql (stale nepozname cielovu DB):
  • smallint je fixed-size a ma len 2 bajty (a dovoluje pass-by-value), teda je efektivnejsi pri spracovani a indexovani, jednoducho nema overhead, ktorym "trpi" varlena;
  • smallint je mensi, takze sa zmensi velkost riadku a teda sa ich viac zmesti na stranku, takze sa zmensuje IO;
  • Ano, asi se lépe indexuje, ale vyhledávání je pak už stejně rychlé, ne?
    -- OldFrog
    Josef Kufner avatar 23.5.2016 18:45 Josef Kufner | skóre: 66
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Stejně jako se lépe indexuje, tak se i lépe porovnává, když se prochází index. I když tam už to nebude tolik znát, jako při sestavování indexu.
    Hello world ! Segmentation fault (core dumped)
    23.5.2016 23:13 OldFrog {Ondra Nemecek} | skóre: 25 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Teoreticky ano, ale pochybuju že by to byl významný rozdíl.
    -- OldFrog
    Josef Kufner avatar 24.5.2016 00:13 Josef Kufner | skóre: 66
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Na pár tisících řádcích to možná bude měřitelné. U milionů to znát už bude.
    Hello world ! Segmentation fault (core dumped)
    20.5.2016 08:31 Xerces
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Můžu se zeptat proč tam je primary key ta kombinace času a symbolu? To jako že nemůže existovat více záznamů se shodným symbolem v jeden čas? Opravdu? Není to zbytečné omezení? Já bych zvážil vytvoření umělého klíče, místo multiklíče nad existujícími sloupci a jednotlivé sloupce indexoval zvlášť. Chybí informace o použité db, to je dost podstatné pro případné návrhy optimalizací. :-)
    23.5.2016 22:44 MP
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Ano, nemůže, teda lépe řečeno nesmí nastat situace, aby pro jeden symbol existoval více jak jeden záznam se stejným časem. Kombinace čas+symbol musí být unikátní.
    24.5.2016 00:33 dustin | skóre: 61 | blog: dustin
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Jak je to "nesmí" ošetřeno? Samozřejmě pokud bude primární klíč obojí, pak si to hlídá sama db (ale aplikace musí počítat s chybou query (což by stejně měla, ale...)
    24.5.2016 08:26 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Většinou není čas jako součást primárního klíče nepříliš vhodný (mockrát už jsem viděl timestamp vytvoření záznamu nesmyslně použitý jako primární klíč místo generovaného číselného identifikátoru), ale existují situace, kdy to smysl dává, protože je timestamp přirozeným identifikátorem. Např. pokud budu zpracovávat hodnoty z meteorologických stanic snímané třeba každou hodinu, je přirozené jako primární klíč použít kombinaci id stanice, id měřené veličiny a čas měření.
    24.5.2016 09:27 dustin | skóre: 61 | blog: dustin
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Jasně, pokud mám opravdu zajištěnou jedinečnost kombinace, pak nic proti timestampu v primárním klíči. Ale taky by to zde mohlo být jen "malá šance, že se potkají", proto se ptám.
    24.5.2016 10:54 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    V takovém případě by ale měla být u toho datového typu uvedena přesnost. Protože je potřeba přesnost nastavit stejně, jakou mají ta vstupní data (když mi budou meteorologické stanice poskytovat data s přesností na desetinu sekundy, bude chyba, pokud to budu v databázi ukládat s přesností na sekundy nebo i s přesností na milisekundy – akorát v tom druhém případě ty chyby budou nejspíš záhadnější). Spoléhat na to, že výchozí hodnota přesnosti v databázi je zrovna stejná, jako u vstupních dat, je cesta do pekel.
    24.5.2016 11:16 EtDirloth | skóre: 3
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Mam problem pochopit, co sa riesi v tomto vlakne. Z povodnej otazky sa mi data javia ako time-series. Na granularite ani presnosti takemu klucu nezalezi. Ak dojde ku kolizii hodnot, potom prvy vyhrava. Zatial to nevidim ako "cestu do pekel", ale mozno na peknom pekelnom priklade by to bolo zjavnejsie.

    Stlpec "datetime" by sice islo abstrahovat do formy dalsej tabulky so zoznamom timestampov a cudzieho kluca, ale pokial by som nebol tlaceny potrebou optimalizacie (vid #5) na hranice moznosti, tak by som to povazoval za zbytocny over-engineering.
    24.5.2016 17:27 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    MP tvrdí, že kombinace čas+symbol musí být unikátní. Představte si následující data:
    Čas                       Symbol 
    2016-05-24 17:15:59.030   A
    2016-05-24 17:15:59.035   A
    2016-05-24 17:15:59.123   A
    
    To mohou být tři unikátní záznamy, mohou to být tři „duplicitní“ záznamy, nebo dva duplicitní záznamy a jeden unikátní. Záleží na tom, s jakou přesností čas rozlišujete.

    Když MP tvrdí, že ta kombinace musí být unikátní, chápu to tak, že to tak je z povahy okolního světa, že ta data prostě takto unikátně vznikají. Pak ale potřebuje vědět, jakou přesnost mají ta reálná data, a stejnou přesnost pak nastavit i v databázi.

    Také to ale může znamenat, že na vstupu mohou být duplicitní záznamy, a splnění podmínky „musí být unikátní“ se musí zařídit až při vkládání dat do databáze (třeba způsobem, že první nebo poslední vyhrává).
    Zatial to nevidim ako "cestu do pekel", ale mozno na peknom pekelnom priklade by to bolo zjavnejsie.
    Když budete mít na vstupu údaje s přesností na desetinu sekundy, a sloupec bude s přesností na sekundy, můžete na vstupu získat duplicitní údaje. Do databáze je nezapíšete a o data přijdete.

    Když budete mít na vstupu data s přesností na sekundy a ukládat je budete s přesností na milisekundy, a budete potřebovat třeba 5 minut starý záznam, vezmete aktuální čas, odečtete od něj 5 minut a výsledný údaj budete hledat v databázi. A nenajdete nic, protože hledaná čas bude mít na místě milisekund nejspíš nějaké nenulové číslo, jenže v databázi budou samé nuly.
    24.5.2016 17:32 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Když budete mít na vstupu data s přesností na sekundy a ukládat je budete s přesností na milisekundy, a budete potřebovat třeba 5 minut starý záznam, vezmete aktuální čas, odečtete od něj 5 minut a výsledný údaj budete hledat v databázi. A nenajdete nic, protože hledaná čas bude mít na místě milisekund nejspíš nějaké nenulové číslo, jenže v databázi budou samé nuly.

    Nebo s tím budu počítat a vezmu poslední záznam před daným časem, poslední záznam po něm nebo interpolaci. Nebo ta tabulka může být jen mezistupněm pro generování kumulovaných dat. Nejde naslepo tvrdit, že něco je špatně, pokud nevíte, k čemu ta data slouží a jak se s nimi pracuje.

    24.5.2016 18:01 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Pokud s tím budu počítat, dělám to vědomě a není to případ „spoléhám na to, že výchozí hodnota přesnosti je zrovna ta, kterou potřebuji“, o kterém jsme tvrdil, že je špatně.

    Když někde vidím timestamp without time zone not null a u toho komentář, že to musí být unikátní, rovnou se ptám, při jaké přesnosti to má být unikátní. Je možné, že to autor ví, ale pak je vhodné to doplnit i do té definice, čímž se těm otázkám předejde.
    22.5.2016 06:27 MP
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Ano, je to postgress. Díky za odpovědi. Index na datetime a symbol jsem tam dal. Ještě by mě zajímalo jak zrychlit načítání. Použil jsem pomocnou tabulku bez indexů kam to načtu a pak to přesypu do cílové tabulky se stejnou strukturou, ale i tak je to pomalé.
    22.5.2016 08:35 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Čemu říkáte „načítání“? Co znamená „pomalé“? Popište, o co se snažíte,a co se vám na tom nezdá.
    15.6.2016 11:39 Tonda
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Ahoj, U nas se to dela trosku jinak nez to co navrhujete. Strasne zalezi na tom co mate za data a hlavne kolik toho je

    Nas system uklada za nejakych 16 hodin neco kolem 250mil. radek do database a to je docela dost takze jsem museli hodne optimilizovat

    1) myslim ze index na datetime and symbol je nanic, pokud pouzivate insert vzdy se vam po transakci bude prepocitavat index to bude asi duvod proc rikate ze to mate pomale, zkuste copy from stdin 2) pouzivejte partitions my mame partitions per day. takze pokud potrebuju pracovat s jednim dnem pracuju s mene daty. udelejte si views abyste pracoval s co nejmene daty 3) mysql, oracle, sybase, db2 ani informix nam nedali dost rychlosi ulozit co potrebujem v realnem case, Je mi trapne priznat ale MSSQL to zvladlo - kdyz jsme to ukazali Microsoftu neverili nam ;-). Ted pouzivame vertica, KDB a zkousime pgsql - zatim dobry ale nemame tam 100% nasich data takze jeste nevime presne 4) napiste is jiny load a zapoment na index pres dva sloupce, ano na DB urovni je to jak to ma byt ale budete tim trpet, loader tohler vyresi, size za cenu toho ze bude muset vedet o vsech symbolech na den co loadujete ale to se da chytre vyrseit. 5) data co popisujete nevypadaji tak strasne, mate tam vlastne jen symbol,den,open and close price a par dalsich blbosti to by se melo veji do nejakych 2 milionu radek za den 6) 100% musite rozumet vasim datum jinak oprimalizaci neudelate

    Pokud mate tick data - coz je mozne jen nam to nerikate, zalezi na tom kolik toho je, je trba prizpusobit strukturu database . A asi nejlepe nepouzivat SQL ale neco jako vertica nebo KDB, my do toho cpemene zatim neco kolem 0.7TB/den a ani o tom nevime.

    je potreba zkouset

    4.7.2016 08:43 mongodb
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Ja len zo zaujimavosti sa chcem spytat, ze preco pre ukladanie takychto dat nevolite radsej nosql databazu, ktora je na to stavana? To robite tak komplikovane selecty ze potrebujete sql syntax a pre nosql to napisat neviete, alebo aky je dovod?
    25.7.2016 21:04 MP
    Rozbalit Rozbalit vše Re: Jak dát indexy nebo jak navrhnout, aby to šlapalo
    Díky za odpovědi. No, zkusil jsem partitioning, ale buď jsem ho udělal blbě nebo.. zkrátka to nepomohlo. Holt nejsem DB expert.. tak jsem zvolil nejjednodušší řešení: Valím to do souborů a ančítám z nich zpět.. .. Ty soubory mám na SSD, takže rychlost OK. Možná je taky chyba že ten Postgres běžel pod windows.. no.. Když budu uvažovat o DB, tak si to raděj nechám někým napsat.. A ticková data to nejsou.. jen minutová, s výhledem že budou vteřinová.. Podle mě ticková data moc na SQL databáhi nejsou vhodná..

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.