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 13:44 | Nová verze

    Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.8. Novinky zahrnují lepší podporu vzdálené plochy, sdílení a nahrávání obrazovky a řadu drobností napříč uživatelským rozhraním (úplný seznam změn, shrnutí ve wiki).

    ʚĭɞ 🍉 | Komentářů: 11
    dnes 10:55 | IT novinky

    Apple představil 7palcový displej Apple HomeView s podporou Apple Intelligence a Siri AI pro ovládání chytré domácnosti, novou řadu vybavení chytré domácnosti Apple Home Collection, další generaci HomePodu mini a novou Apple TV 4K. Apple HomeView není v Evropské unii v prodeji, jelikož umělá inteligence Siri v rámci systému iOS v EU momentálně není k dispozici. Apple spolupracuje s EU a snaží se najít cestu, jak situaci vyřešit.

    Ladislav Hagara | Komentářů: 2
    dnes 03:55 | Komunita

    KDE slaví 30 let. Přesně před 30 lety, 14. října 1996, poslal Matthias Ettrich do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu KDE. Důležité milníky jsou zobrazeny na časové ose.

    Ladislav Hagara | Komentářů: 3
    dnes 03:22 | Nová verze

    Byl vydán Mozilla Firefox 158.0. Stejně jako Chrome 155 s podporou JPEG XL (test). Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 158 bude brzy k dispozici také na Flathubu a Snapcraftu.

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

    Svobodný kancelářský balík ONLYOFFICE (Wikipedie) byl vydán ve verzi 10.0. Jak online Docs, tak i offline Desktop Editors. Přehled novinek také na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | IT novinky

    Mozilla představuje Firefox Enterprise určený jako podnikový prohlížeč pro organizace s přísnými požadavky na bezpečnost, správu a dodržování předpisů. S profesionální podporou. Dostupný je zatím ve Francii, Německu, Rakousku a Švýcarsku.

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

    Kybernetický útok zasáhl nejméně 150 supermarketů Intermarché a několik prodejen řetězců Leclerc a Coopérative U. Chladicí jednotky napadených obchodních domů byly nastaveny na nepřetržité odmrazování a teplota v nich mnohdy vystouala až nad 50°C. Škody napáchané na chlazeném a mraženém zboží budou patrně dosahovat miliónů eur.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 4
    včera 04:00 | Komunita

    Stát Kalifornie zažaloval výrobce 3D tiskových filamentů Polymaker. Vrchní soud San Diego County tvrdí, že firma propagací svých výrobků mezi příznivci 3D tištěných zbraní podporovala výrobu takzvaných 'ghost guns' (DIY zbraní) a že její PLA filament pro 3D tiskárny lze za těchto okolností považovat za součást určenou k výrobě střelné zbraně. Žaloba požaduje mimo jiné finanční sankce a soudní zákaz činnosti, Polymaker se hájí tím, že filament je běžný a sám o sobě legální produkt. Celý text žaloby (PDF na Google Drive).

    ❗Červivý Hřib krade❗ | Komentářů: 28
    včera 03:33 | Nová verze

    V červnu byla představena aplikace Myna pro převod řeči na text v prostředí desktopu Ubuntu. Včera byla Myna zpřístupněna širší komunitě Ubuntu formou technologické ukázky dostupné v Ubuntu 24.04 LTS, Ubuntu 26.04 LTS a Ubuntu 26.10 s GNOME na Waylandu.

    Ladislav Hagara | Komentářů: 0
    12.10. 21:11 | Komunita

    Ubuntu 27.04 bude Tenacious T-Rex.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2844 hlasů
     Komentářů: 32, poslední 11.10. 17:02
    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: 1271×
    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: 67 | 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: 67 | 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ákno • Nahoru

    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.