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 16:55 | Nová verze

Byla vydána verze 1.0 klienta F-Droid určeného pro instalaci aplikací do Androidu ze softwarového repozitáře F-Droid (Wikipedie), alternativy k Google Play, nabízející pouze svobodný a otevřený software. Podrobnosti v přehledu změn [Hacker News].

Ladislav Hagara | Komentářů: 5
dnes 00:55 | Nová verze

Po téměř 13 měsících vývoje od verze 0.11.0 byla vydána verze 0.12.0 hardwarově nenáročného desktopového prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklého sloučením projektů Razor-qt a LXDE. Přehled novinek v příspěvku na blogu.

Ladislav Hagara | Komentářů: 9
včera 12:33 | Zajímavý software

Článek ne Medium představuje nejnovější stabilní verzi 2.0 svobodné decentralizované mikroblogovací platformy a sociální sítě podobné Twitteru Mastodon (Wikipedie). Detailní přehled novinek na GitHubu [Hacker News].

Ladislav Hagara | Komentářů: 0
včera 06:00 | Komunita

V Praze na půdě Elektrotechnické fakulty ČVUT dnes probíhá RT-Summit 2017 – setkání vývojářů linuxového jádra a uživatelů jeho real-time verze označované jako preempt-rt. Přednášky lze sledovat online na YouTube.

Ladislav Hagara | Komentářů: 0
20.10. 14:33 | Zajímavý projekt

Blender Animation Studio zveřejnilo první epizodu z připravovaného animovaného seriálu The Daily Dweebs o domácím mazlíčkovi jménem Dixey. Ke zhlédnutí také ve 3D s rozlišením 8K.

Ladislav Hagara | Komentářů: 0
20.10. 12:34 | Komunita

Aktualizovanou počítačovou hru Warhammer 40,000: Dawn of War III v ceně 39,99 eur běžící také na Linuxu lze o víkendu na Steamu hrát zdarma a případně ještě v pondělí koupit s 50% slevou. Do soboty 19:00 lze na Humble Bundle získat zdarma Steam klíč k počítačové hře Sid Meier's Civilization® III v ceně 4,99 eur běžící také ve Wine.

Ladislav Hagara | Komentářů: 0
20.10. 00:22 | Nasazení Linuxu

Společnost Samsung oznámila, že skrze dokovací stanici DeX a aplikaci Linux on Galaxy bude možno na Samsung Galaxy S8 a S8+ a Galaxy Note 8 provozovat Linux. Distribuce nebyly blíže upřesněny.

Phantom Alien | Komentářů: 19
19.10. 23:55 | Komunita

Společnost Purism na svém blogu oznámila, že její notebooky Librem jsou nově dodávány se zrušeným (neutralized and disabled) Intel Management Engine (ME). Aktualizací corebootu na již prodaných noteboocích lze Management Engine také zrušit. Více v podrobném článku.

Ladislav Hagara | Komentářů: 2
19.10. 21:44 | Nová verze

Organizace Apache Software Foundation (ASF) na svém blogu slaví páté výročí kancelářského balíku Apache OpenOffice jako jejího Top-Level projektu. Při této příležitosti byl vydán Apache OpenOffice 4.1.4 (AOO 4.1.4). Podrobnosti v poznámkách k vydání. Dlouhé čekání na novou verzi tak skončilo.

Ladislav Hagara | Komentářů: 7
19.10. 19:22 | Pozvánky

Již příští týden - 26. a 27. října se v Praze v hotelu Olšanka odehraje OpenWRT Summit. Na webu konference naleznete program a možnost zakoupení lístků - ty stojí 55 dolarů. Čtvrtek bude přednáškový a v pátek se budou odehrávat převážně workshopy a meetingy.

Miška | Komentářů: 1
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (9%)
 (0%)
 (0%)
 (1%)
 (76%)
 (13%)
Celkem 204 hlasů
 Komentářů: 8, poslední dnes 23: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: 2237×
    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

    20.5.2016 00:00 EtDirloth | skóre: 4
    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: 28 | 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: 67 | 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: 4
    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: 28 | 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: 67
    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: 28 | 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: 67
    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: 67 | 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: 4
    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: 67 | 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: 67 | 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: 67 | 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.