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 11:33 | Pozvánky

Konference LinuxDays 2017 proběhne o víkendu 7. a 8. října v Praze v Dejvicích v prostorách FIT ČVUT. Konference OpenAlt 2017 proběhne o víkendu 4. a 5. listopadu na FIT VUT v Brně. Organizátoři konferencí vyhlásili CFP (LinuxDays, OpenAlt). Přihlaste svou přednášku nebo doporučte konference známým.

Ladislav Hagara | Komentářů: 0
dnes 06:00 | Nová verze

Byla vydána verze 1.3.0 odlehčeného desktopového prostředí Lumina (Wikipedie, GitHub) postaveného nad toolkitem Qt. Z novinek lze zmínit nový motiv ikon nahrazující Oxygen (material-design-[light/dark]) nebo vlastní multimediální přehrávač (lumina-mediaplayer).

Ladislav Hagara | Komentářů: 0
včera 17:33 | Bezpečnostní upozornění

Před šesti týdny byly publikovány výsledky bezpečnostního auditu zdrojových kódů OpenVPN a nalezené bezpečnostní chyby byly opraveny ve verzi OpenVPN 2.4.2. Guido Vranken minulý týden oznámil, že v OpenVPN nalezl další čtyři bezpečnostní chyby (CVE-2017-7520, CVE-2017-7521, CVE-2017-7522 a CVE-2017-7508). Nejzávažnější z nich se týká způsobu, jakým aplikace zachází s SSL certifikáty. Vzdálený útočník může pomocí speciálně

… více »
Ladislav Hagara | Komentářů: 1
včera 06:55 | Zajímavý projekt

V Edici CZ.NIC vyšla kniha Průvodce labyrintem algoritmů. Kniha je ke stažení zcela zdarma (pdf) nebo lze objednat tištěnou verzi za 339 Kč (připojení přes IPv4) nebo 289 Kč (připojení přes IPv6).

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

Byla vydána verze 2.2.0 svobodného správce hesel KeePassXC (Wikipedie). Jedná se o komunitní fork správce hesel KeePassX s řadou vylepšení.

Ladislav Hagara | Komentářů: 0
včera 06:11 | IT novinky

Vývojář Debianu Henrique de Moraes Holschuh upozorňuje v diskusním listu debian-devel na chybu v Hyper-Threadingu v procesorech Skylake a Kaby Lake od Intelu. Za určitých okolností může chyba způsobit nepředvídatelné chování systému. Doporučuje se aktualizace mikrokódu CPU nebo vypnutí Hyper-Threadingu v BIOSu nebo UEFI [reddit].

Ladislav Hagara | Komentářů: 0
24.6. 01:23 | Komunita

Phoronix spustil 2017 Linux Laptop Survey. Tento dotazník s otázkami zaměřenými na parametry ideálního notebooku s Linuxem lze vyplnit do 6. července.

Ladislav Hagara | Komentářů: 3
23.6. 22:44 | Nová verze

Po třech měsících vývoje od vydání verze 5.5.0 byla vydána verze 5.6.0 správce digitálních fotografií digiKam (digiKam Software Collection). Do digiKamu se mimo jiné vrátila HTML galerie a nástroj pro vytváření videa z fotografií. V Bugzille bylo uzavřeno více než 81 záznamů.

Ladislav Hagara | Komentářů: 1
23.6. 17:44 | Nová verze

Byla vydána verze 9.3 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab. Představení nových vlastností v příspěvku na blogu a na YouTube.

Ladislav Hagara | Komentářů: 3
23.6. 13:53 | Nová verze

Simon Long představil na blogu Raspberry Pi novou verzi 2017-06-21 linuxové distribuce Raspbian určené především pro jednodeskové miniaturní počítače Raspberry Pi. Společně s Raspbianem byl aktualizován také instalační nástroj NOOBS (New Out Of the Box Software). Z novinek lze zdůraznit IDE Thonny pro vývoj v programovacím jazyce Python a především offline verzi Scratche 2.0. Ten bylo dosud možné používat pouze online. Offline bylo možné používat pouze Scratch ve verzi 1.4. Z nového Scratchu lze ovládat také GPIO piny. Scratch 2.0 vyžaduje Flash.

Ladislav Hagara | Komentářů: 1
Chystáte se pořídit CPU AMD Ryzen?
 (6%)
 (31%)
 (1%)
 (9%)
 (44%)
 (9%)
Celkem 843 hlasů
 Komentářů: 65, poslední 1.6. 19:16
    Rozcestník

    Dotaz: Doporučte ACID kompatibilní NoSQL databázi

    20.5.2012 17:19 kris
    Doporučte ACID kompatibilní NoSQL databázi
    Přečteno: 850×
    Ahoj. Hledám NoSQL databázi, která umí pracovat transakčně. Potřebuji do ní ukládat uživatelské účty. Každý uživatelský účet má schématem definované povinné atributy a nepovinné. Kromě toho musí databáze umožňovat přidávat uživateli libovolné atributy bez schématu (jen definuji datový typ a název atributu). Také budu potřebovat rychle vyhledávat a filtrovat uživatele jak podle schémových tak podle neschémových atributů. Je mi jasné, že toto se nedá implementovat v klasické sql databázi, proto se poohlížím po NoSQL řešení. Docela mě zaujala OrientDB, ale NoSQL databází je celá řada a proto bych byl rád, kdybyste mi nějakou doporučili. Nejlépe nějakou, která umí dobře komunikovat s PHP.

    Odpovědi

    20.5.2012 19:54 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    PostgreSQL s modulem hstore?
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    20.5.2012 21:01 Kit
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Na uživatelské účty se obvykle nejlépe hodí LDAP. Podle zadání by asi vyhovovalo MongoDB.

    Ovšem dlužno dodat, že nedotažená analýza už pohřbila hodně projektů. Dá se to realizovat i v SQL, přinejhorším v EAV. Je to však jen berlička, které se databázoví návrháři vyhýbají.
    21.5.2012 00:22 kris
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    No tohle není typická databáze uživatelů. LDAP je strašně omezující kvůli nutnosti existence schématu a kvůli nepodpoře transakcí. Ve standardní relační databázi je to nerealizovatelné, to jsem zkoušel. Jediné rozumné schéma je to EAV, nicméně napsat pak na to dotazy a i samotná rychlost tohoto řešení je katastrofa.
    21.5.2012 00:19 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Proč se to nedá dělat v klasické SQL databázi? Jednak jsou tu rozšíření typu hstore - jak říkal předřečník, jednak, pokud uživatelů nebude deset milionů, tak EAV struktura (user_id, property_name, property_value) naprosto dostačuje jak výkonem, tak i komfortem pro programování

    Tím neříkám, že to není vhodné dělat v NoSQL databázi: pokud nechceš žádnou jinou fíčuru SQL, tak může bý NoSQL dobrou volbou. Jen bych silně polemizoval s tím, že se to v SQL nedá dělat. Ale zrovna podpora transakcí bývá v nosql dosti omezená až žádná (co vím, tak se zpravidla omezuje na atomické operace).

    21.5.2012 00:35 kris
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    No možná by bylo úplně nejlepší řešit to 2 databázemi: relační + nosql. Nemohu být konkrétnější, ale v principu jde o to, že uživatel má pevně definovaný formát v hlavní databázi centrálního systému. Pak prostě někdo přijde a připojí k tomuto systému nějaký jiný, v tu chvíli si z něj centrální systém načte potřebné údaje a uživateli tak přibudou dynamické atributy. Po odpojení systému ty atributy zase zmizí.
    21.5.2012 04:13 kris
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Jen tak pro zajímavost - jak by se toto dalo řešit v relační databázi? Osobně bych raději použil relační databázi, protože ty narozdíl od no sql alespoň nějak ovládám. Já vím o jediném řešení v sql: dočasně vytvořit tabulku pro připojený systém a pak ji zase smazat. Je to rychlé a efektivní, ale takové docela znásilnění relačního schématu. Co si o tom myslíte? Nemyslím si, že by mi hstore typ pomohl jinak než ušetřením příp. redundance.
    21.5.2012 06:27 Kit
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Do EAV dej jen dynamické atributy. Na ostatní udělej standardní schéma.
    21.5.2012 17:06 kris
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    To se skoro nevyplatí. Dynamických atributů je asi 100, standardních 8.
    21.5.2012 17:53 Kit
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Tak si udělej pro každý atribut další tabulku, kde primárním klíčem bude cizí klíč do hlavní tabulky. Bude to rychlé a elegantní.
    21.5.2012 20:32 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Fuj :-)

    Rychlé a elegantní - obzvlášť, pokud bude chtít získat všechny atributy jednoho uživatele.

    Díky, jdu zvracet :-)

    PS: Evidentně, estetika (a elegance) je velmi subjektivní
    21.5.2012 21:15 Kit
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Tušil jsem, že tě pobavím :-)

    Těžko si dovedu představit, že by 100 atributů nebylo možné rozčlenit do skupin. Asi bych od sebe neodděloval jednotlivé položky adresy bydliště uživatele apod. Už jsem také viděl tabulku, ve které u každého druhého sloupce bylo datum jeho poslední modifikace a kdo ji provedl...

    Problém je v tom, že o té aplikaci dohromady nic nevíme. Mám představu, že je to třeba nějaká matrika se 100 atributy a každá osoba má vyplněných třeba jen 5 údajů. Ostatní zůstávají prázdné. V tu chvíli mi mé řešení připadá logické. Ano, pokud budu chtít vypsat všechny atributy jednoho uživatele, bude select asi delší, než výstup. Ovšem v případě EAV to nemusí být o mnoho lepší.

    Padlo tady EAV, hstore, hromada tabulek, NoSQL,... Najde se ještě něco?
    23.5.2012 03:35 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    :-) Co je špatného na EAV? Že databáze vysype ke každému atributu znova jméno? A? Fór je v tom, že databáze to unese (pokud ne, tak se bavíme o takovym molochu, že Tvoje řešení taktéž není vhodné). Ale psaní dotazů - teda práce programátora - bude oproti Tvému řešení triviální. Jak v Tvém řešení získáš jednoduchým selectem všechny atributy daného uživatele?

    Tím, že to rozdělíš do tabulek, tak naprosto ztratíš možnost s atributy pracovat dohromady. Kromě o nemnoho rychlejších některých dotazů tím ale nezískáš nic: z EAV struktury jsem totiž schopný naprosto triviálně emulovat dotaz jakoby nad (rozdělenou) tabulkou obsahující daný atribut. Opačně (pokud neberu jako alternativu hromadu unionů) to ale nejde.
    21.5.2012 11:58 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Jakou tabulku pro připojený systém, zdá se mi, že to řešíš trochu za roh. Chceš mít uživatele: ok, budou tam tabulka uživatelé. Každý uživatel může mít N vlastností. Ok, bude tam tabulka vlastnosti s relací N:1 k uživatelům. Každá vlastnost má dva atributy: název a hodnotu. Pokud potřebuješ rozlišovat uživatele dle aplikace, tak prostě přidej uživateli sloupec aplikace, popř. pokud má být uživatel víceaplikační, tak další tabulku s vazbou N:1 (todle řešení bych preferoval, protože i když to neplánuješ teď, tak....). Kde je problém?

    Hstore ti pomůže tím, že Ti umožní ukládat data bez schématu do jednoho pole, aniž bys ztratil výhodu indexace a rychlého vyhledávání.

    SQL a NoSQL databáze bych nekombinoval, jestli to má bejt spolehlivý, zaděláš si na problémy s jejich vzájemnou synchronizací, synchronním zálohováním atd.
    21.5.2012 17:11 kris
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    ... popř. pokud má být uživatel víceaplikační, tak další tabulku s vazbou N:1 (todle řešení bych preferoval, protože i když to neplánuješ teď, tak....).
    Tohle jsem nepochopil. Co by v téhle tabulce bylo?
    21.5.2012 20:31 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    No pokud by chtěl, aby jeden uživatel mohl být v N aplikacích a ukládat si v kterých. - Jo, asi něco takovýho potřebovat nebude. Jen jsem vymýšlel jsem, co všechno by mu mohlo vadit, aby to "nemoh" napsat v SQL databázi, když to je typický EAV pattern.
    21.5.2012 08:43 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Co si představujete pod „umí pracovat transakčně“? Respektive jaké má být použití? Možná je požadavek na ACID zbytečně silný.
    22.5.2012 02:08 kris
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Pokud něco měním v databázi ve vícero tabulkách, tak je správný jen původní a cílový stav. Nikdo jiný se mi v tom zároveň nesmí hrabat. Pokud se něco nedokončí, nesmí se dokončit nic. Na to je transakční izolace perfektní.
    22.5.2012 07:58 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Já jsem se neptal na to, co obecně jsou transakce, ale na to, k čemu je potřebuje tazatel. Pokud bude mít informace o jednom uživateli v jednom dokumentu v dokumentové databázi, tak nemusí transakce přes víc dokumentů řešit, protože operace s dokumentem je atomická, takže paralelní přístup nevadí – pokud do DB zapíšou jeden dokument dva klienti naráz, bude v DB buď jeden, nebo druhý, ale ne nějaký mix. A pokud se použije třeba verzování, zapíše se první změna a druhý zápis skončí s chybou. Proto jsem se ptal, co konkrétně potřebuje tazatel, protože to často jde řešit i bez ACID transakcí, a často snáz.
    21.5.2012 09:05 Ivan
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    SleepyCat.

    Pokud bys' pouzil SQL databazi tak se posivej na EAV.
    21.5.2012 13:16 Ivan
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Jeste bys' mohl pouzit Oracle Express(ta je zadarmo). Udelas si "tridu" t_BaseClass.
    CREATE TYPE t_baseclass as OBJECT (... nejake zakladni attributy ...)
    Pak tuto "abstraktni" (NOT FINAL) tridu ulozit do tabulky:
    CREATE TABLE base OF t_baseclass;
    Do tabulky base pak muzes ulozit vsechny potomky tridy t_baseclass, vcetne vsech jejich dodatecnych atributu.
    21.5.2012 16:41 ztmr
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Zkuste MUMPS -- at uz GT.M nebo Caché, resp. GlobalsDB. V MUMPSu se da napsat i logika, a pripadne kooperovat i pres ruzne bindingy do C/C++, Perlu, Erlangu, Node.js, PHP, ... Na prvni pohled to vypada trosku uchylne, ale je to tezce navykove a clovek se pak uz jen tezko vraci k cemukoliv relacnimu.

    Za pozornost stoji take opensource balicky od M/Gateway: http://gradvs1.mgateway.com/main/, resp. https://github.com/robtweed.

    Dalsi zdroje jsou/budou treba tady.
    22.5.2012 09:58 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Podle mne je MUMPSová idea "globálních" (tj. persistentních) proměnných jediný rozumný přístup k práci s daty. Ale programovat v M? To je úchylárna na entou.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Josef Kufner avatar 22.5.2012 18:19 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Pokud nepotřebuješ ty dynamické parametry dál zpracovávat, například podle nich hledat, můžeš je nacpat všechny seserializované třeba v JSONu do jednoho sloupce. Vím, zní to děsně, ale pokud se na takový sloupec budeš dívat jako na typ "struct {a, b, c}", tak to už je celkem hezké.

    Nevýhodou je, že se s takovým sloupcem nedá pracovat na úrovni databáze. V aplikaci to je v pohodě, např. v PHP pak stačí udělat po selectu toto:
    $item = $result->fetch();
    $item['attr'] = json_decode($item['attr']);
    
    A obdobně před updatem/insertem.

    Velkou výhodou je implementační jednoduchost. Pokud máš složitější data a potřebuješ je jen uložit/načíst, jednodušší způsob asi nenajdeš.

    Pokud nad nějakou omezenou množinou dynamických attributů potřebuješ postavit index, například kvůli řazení, ulož je (duplicitně) do pomocného sloupce.

    Pokud se to hodí, můžeš tyto dynamické parametry umístit do samostatné tabulky, kde primárním klíčem bude ID uživatele a ID aplikace. Pak bude snadné smazat data patřící dané aplikaci.

    V praxi jsem tohle použil a dopadlo to dobře.
    Hello world ! Segmentation fault (core dumped)
    23.5.2012 03:39 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    No nevím. Pokud člověk opravdu v databázi s tím nic nepotřebuje dělat, tak možná - ale pak opravdu bude lepší NoSQL (protože tam nebudou ani vazby).

    V okamžiku, kdy s tím něco bude potřeba dělat - už třeba ty indexy - tak to začne bejt opruz. A přitom to je řešení v podstatě ekvivalentní k hstore, se kterym jdou dělat všemožný vopičárny.

    Takže moc nevim, kdy bych todle řešení použil: moc si nedovedu představit, kdy má todle řešení výhodu nad NoSQL nebo hstore.
    Josef Kufner avatar 23.5.2012 11:25 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Výhodou oproti NoSQL je, že pořád ještě máš k dispozici SQL pro to okolo. Oproti hstore to umožňuje uložit i stromová data a funguje to v MySQL.
    Hello world ! Segmentation fault (core dumped)
    23.5.2012 14:55 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: Doporučte ACID kompatibilní NoSQL databázi
    Uložení stromových dat jasně. Ale v zadání žádná stromová data nebyla. Uložení stromových dat je úplně jiná úloha.

    Výhoda funguje to i v mysql je pro mne dosti pofidérní. Když to přeženu, taky nebudu psát něco 16bitově, by to běželo v DOSu (noflame, please) :-). Pokud není člověk vyloženě nucenej použít mysql (což zde evidentně není), tak to není argument: a zde je evidentně volnost v použitých prostředcích.

    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.