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í
×
    včera 17:00 | IT novinky

    Podvodné reklamy na sociálních internetových platformách, jako je Facebook, Instagram nebo X, vytvořily loni v Česku jejich provozovatelům příjmy 139 milionů eur, tedy zhruba 3,4 miliardy korun. Proti roku 2022 je to nárůst o 51 procent. Vyplývá to z analýzy Juniper Research pro společnost Revolut. Podle výzkumu je v Česku zhruba jedna ze sedmi zobrazených reklam podvodná. Je to o 14,5 procenta více, než je evropský průměr, kde je podvodná každá desátá reklama.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Nová verze

    Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.6 (Mastodon). Přehled novinek i s videi a se snímky obrazovek v oficiálním oznámení. Podrobný přehled v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    včera 03:22 | Nová verze

    Czkawka a Krokiet, grafické aplikace pro hledání duplicitních a zbytečných souborů, byly vydány ve verzi 11.0. Podrobný přehled novinek v příspěvku na Medium. Od verze 7.0 je vedle frontendu Czkawka postaveného nad frameworkem GTK 4 vyvíjen nový frontend Krokiet postavený nad frameworkem Slint. Frontend Czkawka je už pouze v udržovacím módu. Novinky jsou implementovány ve frontendu Krokiet.

    Ladislav Hagara | Komentářů: 14
    včera 02:00 | Zajímavý článek

    Jiří Eischmann na svém blogu publikoval článek Úvod do MeshCore: "Doteď mě radioamatérské vysílání úplně míjelo. Když jsem se ale dozvěděl, že existují komunity, které svépomocí budují bezdrátové sítě, které jsou nezávislé na Internetu a do značné míry taky elektrické síti a přes které můžete komunikovat s lidmi i na druhé straně republiky, zaujalo mě to. Když o tom přede mnou pořád básnili kolegové v práci, rozhodl jsem se, že to zkusím taky.

    … více »
    Ladislav Hagara | Komentářů: 3
    16.2. 22:55 | Nová verze

    Byla vydána verze 0.5.20 open source správce počítačových her na Linuxu Lutris (Wikipedie). Přehled novinek v oznámení na GitHubu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    16.2. 12:44 | IT novinky

    Peter Steinberger, autor open source AI asistenta OpenClaw, nastupuje do OpenAI. OpenClaw bude převeden pod nadaci a zůstane otevřený a nezávislý.

    Ladislav Hagara | Komentářů: 0
    16.2. 03:11 | Zajímavý článek

    Společnost Backblaze zveřejnila statistiky spolehlivosti pevných disků používaných ve svých datových centrech za rok 2025. Ke konci roku 2025 vlastnila 349 462 pevných disků. Průměrná AFR (Annualized Failure Rate), tj. pravděpodobnost, že disk během roku selže, byla 1,36 %. V roce 2024 to bylo 1,57 %. V roce 2023 to bylo 1,70 %. V roce 2022 to bylo 1,37 %.

    Ladislav Hagara | Komentářů: 13
    15.2. 21:55 | Zajímavý software

    Nástroj sql-tap je proxy mezi aplikací a databází, které zachytává všechny SQL dotazy a zobrazuje je v terminálovém rozhraní. Zde lze téměř v reálném čase zkoumat dotazy, sledovat transakce a spouštět SQL příkaz EXPLAIN. Podporované databázové systémy jsou pouze PostgreSQL a MySQL. Zdrojový kód je dostupný na GitHubu, pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 0
    15.2. 13:55 | Nová verze

    Byla vydána nová verze 9.2 textového editoru Vim (Vi IMproved). Přináší vylepšené doplňování, podporu schránky ve Waylandu, podporu XDG Base Directory (konfigurace v $HOME/.config/vim), vylepšené Vim9 skriptování nebo lepší zvýrazňování změn. Vim zůstává charityware. Nadále vybízí k podpoře dětí v Ugandě. Z důvodu úmrtí autora Vimu Brama Moolenaara a ukončení činnosti jím založené charitativní organizace ICCF Holland projekt Vim navázal spolupráci s charitativní organizaci Kuwasha.

    Ladislav Hagara | Komentářů: 4
    14.2. 12:33 | Zajímavý projekt

    Byl představen editor MonoSketch, webová aplikace pro tvorbu diagramů, technických nákresů, flowchartů a různých dalších vizualizací, to vše jenom z ASCII znaků. Všechny operace běží pouze v prohlížeči uživatele a neprobíhá tedy žádné nahrávání dat na server. Zdrojový kód aplikace (drtivá většina Kotlin, žádné C#) je dostupný na GitHubu pod licencí Apache 2.0.

    NUKE GAZA! 🎆 | Komentářů: 5
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (27%)
     (3%)
     (4%)
     (2%)
     (12%)
     (27%)
    Celkem 891 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: Jakou databázi...

    11.1.2011 23:56 jojol
    Jakou databázi...
    Přečteno: 861×
    Předem se omlouvá za potencionálně trapný dotaz...

    Mám hodnoty například: 1025614 1365992 1625430 2113601 2136500 seřazené vzestupně

    Celkem těch hodnot je zhruba 3 000 000.

    Mno a když zadám například 140020 chci aby mi to vrátilo nejbližší vyšší položku a nejbližší nižší položku tedy 1365992 a 1625430.

    Dokázal by mi někdo naznačit jak by se toto řešilo? Jaká databáze/jaký druh databáze by byl pro to vhodný?

    Odpovědi

    12.1.2011 02:01 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Skoro jakákoliv... Na jedné straně můžeš použít něco sofistikovaného, na druhé něco trapně jednoducného. Záleží, co od toho čekáš.

    Můžeš třeba čísla uložit do textového souboru, jedno číslo na řádek. Pětiřádkový program v Pythonu nebo i v bashi či awku ti pak bude umět najít nejbližší vyšší/nižší položku. Kdyby bylo zaručeno, že hledané číslo tam bude, stačilo by jen grep -C 1 :-)

    Tenhle jednoduchý přístup má ale nevýhody - vyhledávání není nejrychlejší (kdybys potřeboval třeba tisíc vyhledání za sekundu nebo tak nějak). Můžeš ty čísla pak třeba uložit do SQL databáze. Navíc k SQL databázi se dá (pokud to není sqlite) přistupovat po síti.

    Taky se dá udělat nějaké speciální řešení - třeba ukládat ty čísla za sebou do souboru v binární podobě (seřazená, což ale už jak říkáš jsou), zase, implementace samotného vyhledávání v takovém souboru v C++ je opět na pět řádků. To by bylo nejspíš nejefektivnější. Ale už to tu nechci dále komplikovat :)

    Napiš, jak by sis představoval používání té databáze, ať víme aspoň, jestli to má být stále běžící démon, nebo jednorázová konzolová utilitka, jak to má být rychlé...
    12.1.2011 09:04 FooBar
    Rozbalit Rozbalit vše Re: Jakou databázi...
    "jak by se toto resilo" -- tohle je pripad pro trivialni B-tree, realne nechces nic jinyho. Typickej zastupce pro tohle je BDB, s tim, ze ti sam o sobe neposkytne sitovy rozhrani. Nicmene je to principialne daleko lepsi, nez to cpat do relacni databaze, pac tohle proste nejsou data vhodny do relacni databaze, obtezovat se s overheadem parsovani SQLka, atd. atd.

    Messa nahore nadhodil ideu vyhledavat ty hodnoty pres binarni vyhledavani, coz by sice slo, ale tim ze je to nad pomalym diskem, tak to neni tak docela winning strategy (proto ostatne B-tree vznikl). Dalo by se to zlepsit agresivnim aplikacnim cachovanim, ale v ten moment musis resit cache coherency kdyz by ti k tem datum pristupovalo vic instanci... neni to proste az tak trivialni;) Moje doporuceni: BerkeleyDB nad B-Tree, pokud nemas nejaky dodatecny pozadavky ktery jsi opomenul zminit.
    12.1.2011 09:31 l4m4
    Rozbalit Rozbalit vše Re: Jakou databázi...
    ale tim ze je to nad pomalym diskem
    Možná jsem něco přehlédl, ale dnes snad není problém mít 3M položek v paměti?
    12.1.2011 09:36 FooBar
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Nene, to rozhodne neni, ale vychazel jsem z toho, ze nerekl skoro nic o tom, jak k tem datum planuje pristupovat. Bude existujici data menit? Mazat? Bude mit konkurencni pristup k datum? Ze to budou data serializovane do pajpy a nasledne z nich bude (zrejme) jen vyhledavat zminil az nasledne v komentari...
    12.1.2011 09:39 FooBar
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Jeste dodam, ze minimalne na unixovejch OS bude (pocitam-li ze uklada 32b inty) tech 12MB velmi pravdepodobne kompletne nacachovany a I/O v ten moment taky nebude takovej bottleneck (a problem s koherenci dat mezi diskem a pameti se presouva pomerne pohodlne na vrstvu ktera je na to daleko lip vybavena).
    Heron avatar 12.1.2011 09:15 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Dotaz není ani tak trapný, jako zajímavý :-) Jak již napsali předřečníci, na toto se hodí prakticky cokoliv (můžeš si třeba napsat binární vyhledávání v C jako úlohu na víkend; osobně bych to také viděl na BerkleyDB). Co ta čísla znamenají a opravdu budou žít sama o sobě (ve smyslu, bude tam vztah ještě s jinými daty)? Napadá mě použití například v průmyslu jako nalezení nejbližší hodnoty z typové řady, ale toho nebude takový počet.
    12.1.2011 09:16 jojol
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Čísla se stejnou šířkou tedy od 1000000 do 9000000.

    Čísla budou řazená vzestupně, ale mezi položkami bude různý rozdíl, tedy někdy 1000000 1000001 10000002, jindy klidně 1001000 1020000 1029000.

    Vlastně popravdě rečeno ty čísla budou čas ve formátu YYYYMMDDHHMMSS.

    Měl by to být démon, data která se budou zapisovat do databáze bude číst z pojmenované roury. Čas potřebný k vyhledání nebližší polozky by měl být v řádu milisekund.
    12.1.2011 09:28 l4m4
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Je-li strom v paměti, je vlastní vyhledání nanejvýš v řádu mikrosekund.
    12.1.2011 11:09 jojol
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Nene, to rozhodne neni, ale vychazel jsem z toho, ze nerekl skoro nic o tom, jak k tem datum planuje pristupovat. Bude existujici data menit? Mazat? Bude mit konkurencni pristup k datum? Ze to budou data serializovane do pajpy a nasledne z nich bude (zrejme) jen vyhledavat zminil az nasledne v komentari...
    ano následně jen vyhledávat nebo mazat...
    Je-li strom v paměti, je vlastní vyhledání nanejvýš v řádu mikrosekund.
    Data budou na disku, v paměti by zabíraly hodně místa...

    Je tu nějaká databáze, která přímo zvládá data vyhledávat tak jak potřebuji, nebo se to bude muset řešit nějak složitěji?
    okbob avatar 12.1.2011 11:31 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Všechny db, které znají klauzuli LIMIT to zvládají
    SELECT * FROM tab WHERE cislo > konstanta LIMIT 1;
    SELECT * FROM tab WHERE cislo < konstanta LIMIT 1;
    
    12.1.2011 14:04 kuka
    Rozbalit Rozbalit vše Re: Jakou databázi...
    To nenajde nejblizsi mensi cislo ale nejake "nahodne" mensi cislo.
    Tarmaq avatar 12.1.2011 16:28 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: Jakou databázi...
    ne pokud tam bude pridano ORDER BY konstanta
    Don't panic!
    12.1.2011 16:41 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Jakou databázi...
    A pokud se vymění pár písmenek a některé prohodí vypíše to: „pojďme na 1 malé pivo“. :)
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Tarmaq avatar 12.1.2011 17:48 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: Jakou databázi...
    :D tak pojdme, ale tohle stejne nikdy u jednoho maleho piva neskonci ;]
    jinak niz jsem napsal cele reseni
    Don't panic!
    okbob avatar 12.1.2011 18:20 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Pravda chybí tam ORDER BY, sorry
    Heron avatar 12.1.2011 11:36 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Ach jo. Před chvílí jste psal, že máte pouze čísla, potom se z toho stala časová značka a teď se to najednou nevleze do paměti.

    Takže, pokud chcete vyhledávat nejbližší časovou značku provázanou s dalšími údaji, dejte to do relační DB, nad sloupcem časové značky si udělejte index (což je ten B-Strom, který nakonec bude v paměti) a dotazy na to budou velmi rychlé.
    12.1.2011 11:44 FooBar
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Dost bych doporucil, abys prestal davat pozadavky a vlastnosti systemu iterativne a dal to vsechno najednou, jinak budes dostavat reseni na problem kterej vlastne nemas a lidi budes jen srat.

    Tri miliony celych cisel v rozsahu "1000000 do 9000000", kdyz z toho udelam 32b int, je 12MB. To je nic. Ale ocividne v tom rozsahu nebudou, kdyz rikas, ze "Vlastně popravdě rečeno ty čísla budou čas ve formátu YYYYMMDDHHMMSS." Pak rikas, ze se to nevejde do pameti. V puvodni otazce rikas, ze chces jen vyhledavat polozky, pak rikas, ze chces i mazat.

    Co teda sakra chces?
    12.1.2011 12:22 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Jakou databázi...
    +1
    Tarmaq avatar 12.1.2011 16:39 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: Jakou databázi...
    CREATE TABLE foo (
      id NUMBER(16) PRIMARY KEY
    );
    
    INSERT INTO foo VALUES (1025614);
    INSERT INTO foo VALUES (1365992);
    INSERT INTO foo VALUES (1625430);
    INSERT INTO foo VALUES (2113601);
    INSERT INTO foo VALUES (2136500);
    
    
    SELECT id FROM foo WHERE id > 1400200 AND ROWNUM = 1 ORDER BY id ASC;
    SELECT id FROM foo WHERE id < 1400200 AND ROWNUM = 1 ORDER BY id DESC;
    
    Tohle funguje na oraclu, na jinych dbms misto toho bude neco jako LIMIT 1 na konci..
    Don't panic!
    12.1.2011 19:22 jekub
    Rozbalit Rozbalit vše Re: Jakou databázi...
    tohle funguje na oraclu

    ani omylem. nejprve se provede where (id > 1400200 and rownum = 1) a az potom order. cili libovolny radek pro id > 1400200.

    kdyz uz, tak
    select id from(
       select id from foo where id > 1400200 order by id
    ) where rownum=1
    
    13.1.2011 10:32 kuka
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Nefunguje, viz uz prispevek vyse. Pokud by bylo opravdu potreba jen to id, bude z hlediska vykonu podstatne lepsi pouzit min(id)/max(id) misto order by.
    Tarmaq avatar 13.1.2011 11:53 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: Jakou databázi...
    takze tohle by mohlo byt univerzalni reseni ve vsech db:
    SELECT MIN(id) FROM foo WHERE id > 1400200;
    SELECT MAX(id) FROM foo WHERE id < 1400200;
    
    Don't panic!
    13.1.2011 00:05 VM
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Pole v paměti (pro 32bit čísla zabere 12MB), několikařádkový program v C to půlením intervalu najde v mikrosekundách. Použít databázi je zde kanón na vrabce, navíc by to fungovalo o několik řádů pomaleji.
    14.1.2011 02:24 jojol
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Dost bych doporucil, abys prestal davat pozadavky a vlastnosti systemu iterativne a dal to vsechno najednou, jinak budes dostavat reseni na problem kterej vlastne nemas a lidi budes jen srat.
    Ok chci udělat webovou aplikaci pro přehrávání obrázků pořízený programem motion.

    Motion obsahuje softwarovou detekci pohybu, takže nebude obrázky ukládat například každou sekundu, ale náhodně.

    Plánuji, že se obrázky budou ukládat do adresářový struktury ve formátu YYMMDD/HHMMSS.jpg

    Při každém uloženém obrázku motion pustí příkaz "echo 'YYMMDDHHMMSS NAZEV_KAMERY' > named_pype"

    No a nějaká aplikace bude z té pojmenované roury číst, a informace o obrázcích ukládat do nějakého vhodného úložiště.

    Jo a po zaplnění disku obrázky hodlám staré obrázky mazat, počítám se zhruba 30 dením záznamem - 3600*24*30 = 2592000.

    Ve webové aplikaci budu chtít přehrát obrázky od určitého data, tedy bude muset k tomu datu najít nejbližší uložený snímek, dále snímek co je hnedka po něm...

    Hodlám to spáchat v jazyce Erlang. Chci to napsat proto, abych tak nějak naučil v Erlangu programovat - tedy jakási cvičná/výuková aplikace.
    14.1.2011 09:21 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Jakou databázi...
    Za sebe doporučuji jednoznačně libovolnou DB (MySQL plně dostačuje) a udělat tabulky:

    camera
    cameraid_pk int autoincrement primary
    name varchar(64)
    description text/textblob/
    placement varchar(255)
    
    picture
    pictureid_pk bigint autoincrement primary
    cameraif_pk_fk int index (foreign key cameraid_pk)
    datetaken DATATIME index
    filename varchar(1024)
    
    picture2 (lepší)
    pictureid_pk bigint autoincrement primary
    cameraif_pk_fk int index (foreign key cameraid_pk)
    datetaken DATA index
    
    jinak dělení na YYMMDD a HHMMSS je nedostatečné bo tam musí být identifikátor camery:
    YYMMDD/HHMMSS_CAMERAID
    CAMERAID/YYMMDD/HHMMSS
    YYYY/MM/DD/CAMERAID_HHMMSS
    
    (přičemž CAMERAID jsou vždy 4 znaky/čísla - třeba)
    To vše za předpokladu, že lze vytvořit max 1 snímek/sec, jinak by tam musely být buď milisecundy, nebo nějaké pořadové číslo a v db by přibyl sloupec addnumber int.

    picture2 je lepší v tom, že má pevnou šířku záznamu a cestu získáváte pomocí:
    ('+' chápejte jako spojování řetězců a fci TIME že vrací opravdu HHMMSS)
    YEAR(datetaken) + '/' + LPAD('0',2,MONTH(datetaken)) + '/' + LPAD('0',2,DAY) + '/' + TIME(HHMMSS) + '_' + LPAD('0',4,cameraif_pk_fk).

    pak bych přidal tabulku:

    checkpoint
    cameraid_pk int autoincrement primary
    name varchar(64)
    cameraif_pk_fk int index (foreign key cameraid_pk)
    description text/textblob/
    

    ve které si sloučíte, kamery na jeden objekt (je-li to třeba)
    a cesta by mohla být, i když nemusí, přijde na to, jestli má být přímý přístup přehledný nějakým stylem:
    CHECKOPOINT/CAMERAID/YYYY/MM/DD/HHMMSS
    Výběr nad databází nejbližší vyšší/nižší a pod. je jednoduchá záležitost a tak jak jsem to popsal tak na MySQL i se stovkami milióny záznamů velmi rychlá záležitost.

    PS: To, že id-čka nemusí být zlobivé inkrementy, je jasné a záleží jak to chcete.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

    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.