Pihi CouchDB-vel és RelaxDB-vel

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Pihi CouchDB-vel és RelaxDB-vel - Presentation Transcript

    1. Pihi CouchDB-vel és RelaxDB- vel 2009.08.27 NoSQL budapest.rb meetup
    2. Érdi Bálint twitter: @baaz blog: http://bucionrails.com
    3. Miről lesz szó? CAP elmélet DBMS megfontolások CouchDB alapok RelaxDB Példaprogram Kérdések
    4. CAP elmélet Consistency: mindenki ugyanazt az adatot látja Availability: mindenki hozzá tud férni az adat valamilyen verziójához Partition tolerance: az adatbázis elosztható több szerverre
    5. CAP elmélet
    6. Consistency vs. Availability Webes trendek   min. 335435139 reqs/sec skálázhatóság fontos egy nagy szerver drága, nem hibatűrő (SOP) és nem bővíthető akármeddig clustering to the rescue!
    7. Consistency vs. Availability Ha viszont clustering, akkor: hogyan biztosítjuk, hogy szinkronban legyenek? akár pár ms különbség lehet egy írás és olvasás között, ami ugyanazt a rekordot (v. dokumentumot) érinti agreement protokollok a hálózat méretével nő a probléma mérete is ha az availability fontosabb, mint a globális consistency: eventual consistency!
    8. Locking vs. MVCC (Pessimistic) Locking: egy write lockolja a rekordot, a beérkező readek várnak a beérkező kérések sorba rendezése miatt értékes idő vész el nem jól skálázható ill. clusterezhető  
    9. Locking vs. MVCC MVCC (Multi Version Concurrency Control): nincs locking minden read a dokumentum aktuális verzióját kapja meg minden write új verziót hoz létre a dokumentumból csak a legfrissebb verziójú dok. írható az ezután beérkező write-ok az új verziót látják
    10. Mi az a CouchDB? "CouchDB is a distributed, fault- tolerant and schema-free document- oriented database accessible via a RESTful HTTP/JSON API."  
    11. MVCC: hogy csinálja a CouchDB? Eventual consistency:   minden szervernek local copy-ja van inkrementális replikáció a szerverek között minden adatváltoztatáskor teljesen új verzió keletkezik, új _rev mezővel a dokumentum írása akkor sikeres, ha a kérésben megadott _rev a legfrissebb
    12. Adattárolás Minden JSON-be szerializálódik   Minden B-treeben tárolódik: adatok design dokumentumok (bennük view-k) view-k eredményei  Query key-jel v. key range-dzsel: Pontosan megfelel a B-tree belső tárolási módjának -> nagyon gyors O(log N)
    13. Sémaság vs. sémanélküliség A sematikus adatbázisok: előre kell tervezni viszonylag nehéz változtatni A valóság sokszor nem sematikus   CouchDB:  self-contained data real-world documents csak amire szükség van incremental id helyett automatikus uuid
    14. HTTP API: "built of the web" query nyelv: HTTP megfelelő HTTP igék használata: SELECT: GET CREATE, UPDATE: PUT DELETE: DELETE resource URL-ek javascript view-k GET http://127.0.0.1:5984/_all_dbs PUT http://127.0.0.1:5984/budapest_rb DELETE http://127.0.0.1:5984/budapest_rb
    15. View-k MapReduce funkció pár a DB design_documentjében tárolódik Javascript-ben írva eredménye B-treeben tárolódik
    16. Map minden dokumentumon végigmegy először ha változik egy dokumentum, frissül a view egy doksihoz {0..n} db key-value párt köp ki key szerint van rendezve a view
    17. Reduce nem kötelező aggregáló funkciót lát el inputja lehet a Map által generált sor előző Reduce által előzőleg generált sor  
    18. Egyéb query paraméterek key startkey, endkey limit group true: unique key-enként összegez (~GROUP_BY) false: egyetlen érték a Reduce funkció eredménye group_level reduce true : default false : nem futtaja a Reduce funkciót descending
    19. RelaxDB: pozi- és negatívumok + "simple Ruby interface to CouchDB": tényleg! + nem akar SQL lenni + a fontos dolgokban segít + jó tanuló eszköz - kicsit lanyha a fejlesztése - CouchDB >= 0.9 + könnyen fejlesztheted te is! ;)
    20. RelaxDB: feature-ök RelaxDB::Document property :title, :validator => :required references :from, :validation_msg => "-t nem adtad meg" has_n :items view_by :title life cycle hook-ok (before_save, after_save, etc.) néhány validáció típus
    21. Egyéb Ruby library-k CouchDB-hez CouchRest CouchPotato CouchFoo ActiveCouch CouchObject CouchApp
    22. CouchDB és Rails, sitting in a tree? Egyelőre felejtsd el a findereket a sok-sok kényelmes validátort a (form) helperek egy jó részét a kedvenc pluginedet (ó, authlogic…) Jövő: DataMapperhez van CouchDB adapter ha a Rails majd megy DM-mel...
    23. Demo app
    24. ?Kérdések?
    25. Referenciák Apache CouchDB wiki: http://wiki.apache.org/couchdb CouchDB : The definitive guide: http://books.couchdb. org/relax/ NoSQL debrief: http://blog.oskarsson.nu/2009/06/nosql- debrief.html RelaxDB: http://github.com/paulcarey/relaxdb/tree/master CouchDB joins: http://www.cmlenz. net/archives/2007/10/couchdb-joins Something blue (a példa app):  http://github. com/balinterdi/something-blue Ruby on the Couch eating potatoes (videó): http://www. engineyard.com/blog/community/scotland-on-rails/
    SlideShare Zeitgeist 2009

    + Balint ErdiBalint Erdi Nominate

    custom

    169 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 169
      • 169 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories