abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 17:44 | Nová verze

    Společnost Epic Games vydala verzi 5.4 svého proprietárního multiplatformního herního enginu Unreal Engine (Wikipedie). Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 10
    včera 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 9
    včera 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 37
    25.4. 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 14
    25.4. 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 3
    25.4. 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    25.4. 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    25.4. 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    25.4. 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (74%)
     (8%)
     (2%)
     (16%)
    Celkem 827 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    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: 900×
    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: 68 | 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: 68 | 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: 70
    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: 70
    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.