Stránka 1 z 75
IT pro otrlé
Napsal: 3. 1. 2010, 00:47
od Sosacek
Vite nekdo jak funguje mapreduce?
Dokud to ještě bylo příčetné, tak to bylo v rozličném.
F
Re: IT Poradna
Napsal: 3. 1. 2010, 11:26
od Almad
Sosacek píše:Vite nekdo jak funguje mapreduce?
Dobře.
(Co konkrétně na něm? Ten algoritmus je celkem solidně popsaný na wiki, ale jinak je to spíš architektura, takže bez konkrétního použití se na to těžko odpovídá. Distribuce přes Hadoop? Použití v databázích, Mongo/Couch?)
Re: IT Poradna
Napsal: 3. 1. 2010, 11:34
od Sosacek
Jako nahrada relacnich databazi? V porovnani s relacnima databazema?
Re: IT Poradna
Napsal: 3. 1. 2010, 12:21
od Almad
Sosacek píše:Jako nahrada relacnich databazi? V porovnani s relacnima databazema?
Já nerozumět jazyk tvá kmen. Map/Reduce je způsob distribuce výpočetního výkonu, ne způsob ukládání dat. Mluvíš o NoSQL? Kterém NoSQL konkrétně - dokumentových databázích? Distribuovaných key-value storech? Persistentních/nepersistentních?
Co máš za problém, který chceš vyřešit? ,)
Re: IT Poradna
Napsal: 3. 1. 2010, 12:30
od Sosacek
Hele, mi nekdo rikal, ze mapreduce je uplne ve vsem horsi nez sql a ze to vymysleli uz pred hroznemoc lety ale ze se to neujalo a proto je to hrozne spatne.
Jsem presvedcenej, ze je to debil. Hledam duvody proc.
Re: IT Poradna
Napsal: 3. 1. 2010, 12:39
od Almad
Sosacek píše:Hele, mi nekdo rikal, ze mapreduce je uplne ve vsem horsi nez sql a ze to vymysleli uz pred hroznemoc lety ale ze se to neujalo a proto je to hrozne spatne.
Jsem presvedcenej, ze je to debil. Hledam duvody proc.
Jo tak. Potom bych se ho zeptal, jak je vyřešená distribuce SQL dotazů v distribuovaném, neshardovaném datovém úložišti. Mám pocit, že tam někde SQL končí a mr začíná ,)
Samozřejmě nemluvě o tom datovym úložišti pod tim. Zeptej se ho jak rozšiřuje schéma tera- až peta- bajtovýho datovýho úložiště bez ztráty dostupnosti. Něco jako alter table add column nad terabajtovou tabulkou, nad kterou máš tisíce req/s (z toho stovky zápisů) a nemůžeš si dovolit ty klienty odříznout.
A pak ať porovná cenu (protože s rdbms afaik nejsou clustery zadarmo, s hadoop jo).
Re: IT Poradna
Napsal: 3. 1. 2010, 12:42
od Sosacek
Almad píše:neshardovaném datovém úložišti
He?
Jinak, hadoop je ta apachi implementace, co?
Jak se pouzivaji dokumentov databaze? Umim si predstavit jak to snadno pouzivat jako sitovou a perzistentni hashtabulku (ostatne memcached ruluje), ale jak se v tom vyhledava?
Re: IT Poradna
Napsal: 3. 1. 2010, 12:59
od Almad
Sosacek píše:Almad píše:neshardovaném datovém úložišti
He?
No tak jeden ze standardních způsobů škálování je sharding, tj. že rozdělíš data do různých úložišť podle nějakého parametru (třeba podle lokace...prostě uživatele z Evropy a Ameriky rozdělíš do dvou datacenter. Nebo třeba že tweety budes shardovat podle uživatelských účtů.) a slíbíš si, že je nebudeš kombinovat (shardwalking). V okamžiku kdy si to nemůžeš dovolit, tak máš to datacentrum jedno a nejsi rád.
Sosacek píše:Jinak, hadoop je ta apachi implementace, co?
Yup
Sosacek píše:Jak se pouzivaji dokumentov databaze? Umim si predstavit jak to snadno pouzivat jako sitovou a perzistentni hashtabulku (ostatne memcached ruluje), ale jak se v tom vyhledava?
Bacha, síťová persistentní hashtabulka jsou key-value datastores. V těch se hledá dobře, když znáš klíč, na to jsou dělaný (aby byly kurva rychlý). See třeba
http://gist.github.com/86714
Dokumentový databáze jsou trochu jako objektový nebo XML databáze, akorátže fungujou. Ukládaj strukturovaný data, ale jako standard se chytá JSON. Vyhledávání jak v čem, třeba v MongoDB triviálně, protože to podporuje ad-hoc dotazy. Jinde musíš používat ty MR funkce (CouchDB třeba), see
http://wiki.apache.org/couchdb/Introduc ... chDB_views
Obecně je to stavěný na to že máš denormalizovaný data a rychlej pohyb v nich. Já teda teď intenzivně používám to Mongo a pro můj účel (ukládání metainformací o buildech z CI) naprostá spokojenost, předevšim asynchronní zápis je přesně to co sem potřeboval a data co dostávám jsou beztak JSON, takže rozklad do relačních struktur je zbytečnej krok navíc.
EDIT: Přestávám prokastrinovat a vracim se k práci ,) Jestli se v tom chceš vrtat, tak klíčová slova jsou NoSQL, redis, hadoop, project voldemort, couchdb, mongodb, hypertable. Každopádně pointa neni nahradit RDBMS, ale být k nim komplementární, vyřešit problémy které mají v určitých oblastech, respektive kde nestačej a/nebo na to potřebuješ kurva drahý enterprise cluster řešení. Takže něco jako skorodatovésklady, high availability, lazy schema update/upgrace nebo přímo schemaless, master-master nebo spíš distribuované node-based replikace, a build-in sharding. Obecně se taky obchází nebo rovnou sere na ACID, klíčové slovo je "eventually consistent".
Re: IT Poradna
Napsal: 3. 1. 2010, 13:06
od Sosacek
No, ja myslel ze ti to na klic vrati dokument.
Jak vypada takovej dotaz? Jak snadno se s tim (prez http v jsonu?) komunikuje v "normalnich" jazycich?
EDIT: za ten json diky bohu. xml je dost tragicka zalezitost, a json se da jakz takz parsovat a tak. Ale takovy ASN1
Re: IT Poradna
Napsal: 3. 1. 2010, 13:18
od Almad
Sosacek píše:No, ja myslel ze ti to na klic vrati dokument.
Jo.
Sosacek píše:Jak vypada takovej dotaz? Jak snadno se s tim (prez http v jsonu?) komunikuje v "normalnich" jazycich?
Easy, bindingy jsou pro všechno. To mongo je třeba úplná trivka, zrovna pod rukama mám
Kód: Vybrat vše
db = get_database_connection()
info = db.repository.find().sort([("commiter_date", DESCENDING),])
changesets = []
for changeset in info:
changeset['results'] = [build['result'] for build in db.builds.find({"changeset" : changeset['hash']})]
changesets.append(changeset)
případně
Kód: Vybrat vše
build.db_build = {
'builder' : builder.getName(),
'slaves' : [name for name in builder.slavenames],
'number' : build.getNumber(),
'time_start' : datetime.fromtimestamp(build.getTimes()[0]),
'time_end' : None,
'steps' : [],
'result' : 'unknown',
'changeset' : changeset
}
self.database.builds.insert(build.db_build)
Jinak viz edit výše, jdu pracovat ,)
Re: IT Poradna
Napsal: 3. 1. 2010, 15:37
od Sosacek
Jaka prokastrace? Me tu osvicujes, osvetlujes a tak.
Takze kdyz mam uplne megajednoduchou databazi kdy mam clanky, uzivatele muzou ke clankum pridavat komentare, jak bude vypadat struktura te databaze?
Umim si predstavit, ze se dobre vyuzije to, ze ruzny druhy clanku (clanek s odkazem, clanek s videem, atd) se daji spojit do jednoho typu, protoze proste necham nebo nenecham danej atribut. Umim si predstavit, ze rozdeleni do kategorii udelam tak, ze kazdej clanek ma vlastnost kategorie a vozbrazeni kategorie znamena ze vyhazim clanky ktere do ni nepatri.
Hm. Jak udelam komentare? Kdyz mam radove desitky tisic clanku, desitky tisic komentaru a ten web chce treba dva tisice lidi soucasne? Dat komentari vlastnost "patrim_k" v zasade odpovida relacnimu pouziti, ale neni nejakej lepsi zpusob?
Re: IT Poradna
Napsal: 3. 1. 2010, 19:10
od Almad
Sosacek píše:Hm. Jak udelam komentare? Kdyz mam radove desitky tisic clanku, desitky tisic komentaru a ten web chce treba dva tisice lidi soucasne? Dat komentari vlastnost "patrim_k" v zasade odpovida relacnimu pouziti, ale neni nejakej lepsi zpusob?
Zalezi na tom jak k tem datum pristupujes. Ale obecne co me napada z hlavy, kdyz mas jako zaklad
Kód: Vybrat vše
clanek = {"text" : dlouhejtext"}
komentar = {"author" : "Jmeno", "text" : "u suck!"}
tak muzes teda "relacne"
Kód: Vybrat vše
komentar = {"patrim_k" : Reference(clanek)}
nebo inverzne, ale porad "relacne"
Kód: Vybrat vše
clanek = {"komentare" : [Reference(komentar)]}
ale osobne bych se zeptal - potrebujes komentar jako samostatnou entitu, nebo ho nejcastejc ukazujes u clanku? Potom bych natvrdo udelal
Kód: Vybrat vše
clanek = {
"text" : dlouhejtext"
"komentare" : [
{"author" : "Jmeno", "text" : "u suck!"},
{"author" : "Jsem lepsi!", "text" : "PRVNI!!!!!1111!!!"}
]
}
Komentar kdyztak naadresujes pres index a/nebo timestampu, imo v pohode staci.
EDIT: Ty moznoti jsou jinak celkem shrnuty na
http://www.mongodb.org/display/DOCS/Schema+Design
Re: IT Poradna
Napsal: 3. 1. 2010, 20:35
od Sosacek
Nooo, ale pokud to budu delat tim tretim zpusobem (jak by se mi asi libilo) tak musim vzdycky vzit clanek a vsechny komentare a preulozit, ne? Aspon couchdb se tak tvarila. Coz je otrava, protoze kopiruju sem tam v pameti kdyz delam jenom append. Kdyz jsou tech komentaru stovky ...
Horsi to je, pokud chci u clanku evidovat pocet precteni, hm. Nebo ne?
Re: IT Poradna
Napsal: 3. 1. 2010, 21:32
od Almad
Sosacek píše:Nooo, ale pokud to budu delat tim tretim zpusobem (jak by se mi asi libilo) tak musim vzdycky vzit clanek a vsechny komentare a preulozit, ne? Aspon couchdb se tak tvarila.
Couch po pravdě nevim. Mongo má $push, takže můžeš přidávat unique do listu a krom toho máš update(), který updatuje jenom dané itemy.
Sosacek píše:Horsi to je, pokud chci u clanku evidovat pocet precteni, hm. Nebo ne?
Ne, protože použiješ $inc. Navíc by to mělo být rychlejší než u rdbms, protože zápis hodíš asynchronně.
Re: IT Poradna
Napsal: 4. 1. 2010, 12:19
od Pieta
O čem se to tu vlastně bavíte?