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:11 | Komunita

Byly zveřejněny videozáznamy přednášek z Fedora 26 Release Party konané 10. srpna v Praze.

Ladislav Hagara | Komentářů: 0
včera 15:33 | Komunita

Přesně před čtyřiadvaceti lety, 16. srpna 1993, oznámil Ian Murdock vydání "Debian Linux Release".

Ladislav Hagara | Komentářů: 3
včera 06:00 | Bezpečnostní upozornění

Ve virtualizačním softwaru Xen bylo nalezeno a opraveno 5 bezpečnostních chyb XSA-226 až XSA-230. Nejzávažnější z nich XSA-227 (CVE-2017-12137) umožňuje eskalaci privilegií a ovládnutí celého systému, tj. správce hostovaného systému se může stát správcem hostitelského systému.

Ladislav Hagara | Komentářů: 1
15.8. 22:00 | Zajímavý projekt

V roce 2013 proběhla na Kickstarteru úspěšná kampaň na podporu otevřeného Dobře temperovaného klavíru (Well-Tempered Clavier). Stejný tým s Kimiko Išizaka spustil před týdnem na Kickstarteru kampaň Libre Art of the Fugue na podporu svobodného Umění fugy.

Ladislav Hagara | Komentářů: 2
15.8. 13:55 | Pozvánky

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 143. brněnský sraz, který proběhne v pátek 18. srpna od 18:00 hodin ve sportovním areálu a restauraci BeachPub Sokolák u Brněnské přehrady aneb v hantecu u Prýglu.

Ladislav Hagara | Komentářů: 0
15.8. 10:55 | Nová verze

Byla vydána (pdf) verze 3 průběžně aktualizované (rolling release) linuxové distribuce Solus (Wikipedie). Ke stažení je v edicích Budgie, GNOME a MATE. Z novinek lze zmínit například podporu snapů. Solus 3 obsahuje Firefox 55.0.1, LibreOffice 5.4.0.3, Rhythmbox 3.4.1 nebo Thunderbird 52.2.1. Edice Budgie a GNOME přichází s GNOME MPV 0.12. Edice MATE s VLC 2.2.6.

Ladislav Hagara | Komentářů: 6
14.8. 21:44 | Nová verze

Po více než roce vývoje od vydání verze 1.0 Microsoft oznámil vydání verze 2.0 platformy .NET Core (GitHub). Přehled novinek v poznámkách k vydání a ve videu na Channel 9.

Ladislav Hagara | Komentářů: 0
14.8. 21:11 | Pozvánky

Před dvaceti lety, 15. srpna 1997, poslal Miguel de Icaza do diskusního listu GTK+ email, který je považován za zahájení projektu GNOME. Linux Desktop Meetup pořádá oslavu ve středu 16. srpna od 19:00 v brněnském Charlie's square.

Ladislav Hagara | Komentářů: 18
14.8. 11:55 | IT novinky
Na šampionátu The International 2017 byl představen bot, který poráží profesionální hráče počítačové hry Dota 2. Bot zatím umí jenom zápasy 1v1. Vývojáři pracují na podpoře 5v5. Jedná se o společný projekt organizace OpenAI a společnosti Valve. Více na stránkách OpenAI a na YouTube. Dle Elona Muska je elektronický sport mnohem komplexnější než šachy nebo go [Hacker News].
Ladislav Hagara | Komentářů: 14
14.8. 05:55 | Nová verze

Byla vydána verze 20.0 a krátce na to opravná verze 20.0.1 svobodného softwaru OBS Studio (Open Broadcaster Software, Wikipedie) určeného pro streamování a nahrávání obrazovky počítače. Přehled novinek i s náhledy a animovanými gify v příspěvku na blogu.

Ladislav Hagara | Komentářů: 0
Těžíte nějakou kryptoměnu?
 (4%)
 (2%)
 (17%)
 (77%)
Celkem 339 hlasů
 Komentářů: 21, poslední 13.8. 09:57
    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.