bbs tjueprosent nosql
TRANSCRIPT
![Page 1: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/1.jpg)
BBS tjueprosent – noSql i ny arkivløsningBjørn Nordlund og Hans-Petter Vadseth
![Page 2: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/2.jpg)
Hvorfor?
Tekst endres i Topp- og Bunntekst 10/7/2009s.2
![Page 3: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/3.jpg)
Skjemafri database
Tekst endres i Topp- og Bunntekst 10/7/2009s.3
![Page 4: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/4.jpg)
En databasetype til alle formål
Tekst endres i Topp- og Bunntekst 10/7/2009s.4
![Page 5: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/5.jpg)
Skalering
Tekst endres i Topp- og Bunntekst 10/7/2009s.5
![Page 6: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/6.jpg)
Vi har muligheten
BBS 20%
Tekst endres i Topp- og Bunntekst 10/7/2009s.6
![Page 7: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/7.jpg)
Vi ønsket oss en databaseløsning hvor vi enkelt kunne lagre det vi ville og lett finne det igjen. Vi ønsket en løsning som var enkel å sette opp, som kunne kjøre hvor som helst Vi ønsket en dynamisk løsning som kunne vokse med applikasjonen, endres og skaleres opp eller ned etter behov.
![Page 8: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/8.jpg)
Litt teori
Tekst endres i Topp- og Bunntekst 10/7/2009s.2
![Page 9: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/9.jpg)
Scale and Performance
s.9
![Page 10: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/10.jpg)
Read slaves, caching, Partitioning, Shared everything and shared nothing
Tekst endres i Topp- og Bunntekst 10/7/2009s.11
![Page 11: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/11.jpg)
Scaling vs functionality, performance and complexity
Tekst endres i Topp- og Bunntekst 10/7/2009s.22
![Page 12: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/12.jpg)
SQL vs noSQL
noSQL
Ikke noe skjema, data som hører sammen lagres sammen. Ikke normalisert, ikke integritet. Referanser mellom data. key/value, (tables, collections) Spørringer, serverside funksjoner, map reduce finnes hos noen
Indexer og profilering finnes hos noen BASESkalering er noe enklere - shared nothing
s.21
SQL
Fast skjema, normaliserte data, integritet.Primærnøkler, fremmednøkler og indexer
Transaksjoner Spørringer og joins Profiling (explain) ACIDSkalere er vanskelig - shared everything?
![Page 13: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/13.jpg)
Skjemafri database
• Databasen bryr seg ikke om hvordan dataene dine ser ut.o Fokus på å lagre og tilgjengeliggjøre det du ber om.o "skjema" ligger i applikasjonen
Enkel migrering Versjonering av skjema og applikasjon sammen
o Mister dataintegritet• Data lagres typisk som en helhet, ikke i hht til en tablellstruktur
o Mangler joins og "normalisering"• Dynamisk
o "Databaser", "tabeller" og "kolonner" opprettes ved behov• Data som skal være søkbare trenger en form for skjema
s.26
Ett naturlig steg etter å ha flyttet logikk ut av databasen?
![Page 14: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/14.jpg)
Key/value
Project VoldemortTokyo CabinetOracle BerkleyDB
Tekst endres i Topp- og Bunntekst 10/7/2009s.27
Key Valuehpv Navn:Hans-Petter,
Email:[email protected]
bjn Navn:Bjørn,Email:[email protected],Tlf:22890000Status:i pappaperm
Operasjoner:
Get (key)Put(key, value)Remove (key)
![Page 15: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/15.jpg)
Kolonnebaserte
Tekst endres i Topp- og Bunntekst 10/7/2009s.28
Key(rad) Kolonne:Value
hpv Personalia:{ navn:Hans-Petter},Kontakt:{ mail:[email protected]}
bjn Personalia:{navn:Bjørn},Kontakt:{mail:[email protected]:22890000}Hbase
CassandraHypertable
Operasjoner:
Get (key, column:identifier)Put(key, column:identifier, value)Remove (key)
Map/reduse for mer avanserte spørringer
![Page 16: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/16.jpg)
Dokumentorienterte
Tekst endres i Topp- og Bunntekst 10/7/2009s.29
Dokument{ id:hpv navn:Hans-Petter Kontaktinfo:{ mail:[email protected] }}
{ navn:Bjørn, id:bjn Kontaktinfo:{ mail:[email protected] Tlf:22890000 }}
CouchdbMongoDBLotus Notes
Operasjoner:
get(name=value)Put(json)Remove (name=value)Find(><!= …)Count()Sum()....
![Page 17: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/17.jpg)
Noen grunn til ikke å bruke dette?
![Page 18: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/18.jpg)
Er det bra nok?
Dette er umodne produkter, verktøystøtten er ikke bra nok, det er ikke sikkert nok.
=> Men det er ikke noen grunn til at de ikke kan bli bedre og like bra som RDBMS løsninger.
![Page 19: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/19.jpg)
Data varer lenger enn applikasjoner, vi må ha RDBMS => Export/import strategi! (kan testes)
![Page 20: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/20.jpg)
Vi driver med bank, vi må ha rdbms
=> Ikke alle applikasjoner i bank er like I dag brukes blant annet filer for lagring og transport Vi har allerede midlertidig inkonsistent state Vi benytter allerede key value (caching, blobs etc) Lemper allerede på constraints og normalisering for ytelse ORM Vi har allerede manuell feilhåndteringer Vi benytter allerede optimistisk låsing med versjonering
![Page 21: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/21.jpg)
Kan vi klare oss uten transaksjoner, joins og konsistens i basen?
![Page 22: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/22.jpg)
Applikasjonen
En ny arkivløsningLagre ustrukturerte og strukturerte data. Lagre binærfiler (images og annet) med metadata (dato og tags)Oppslag på unik arkivreferanse (uuid)Søk i tagsOppslag/søk på vilkårlig nøkkel/kolonneREST grensesnitt
![Page 23: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/23.jpg)
Ny kul teknologi (I skyen:)
Ruby applikasjon basert på sinatra webrammeverk og mongomapperDeployet på heroku (heroku.com)MongoDb backend levert fra mongoHQ (mongohq.com)
=> utrolig rask og enkel utvkling=> "uendelig" skalering i applaget (heroku,amazon)=> soon to be "uendelig" skalering i databaselaget (mongohq,sharding, amazon)=> Mongo gir oss mer enn de fleste noSql løsninger med et rikt query språk, indexer, profilering (explain), og mulighet til å kjøre serverside funksjoner (som for eksempel map reduce).
![Page 24: Bbs Tjueprosent Nosql](https://reader035.vdocuments.us/reader035/viewer/2022062302/58edcb511a28abd85e8b46c9/html5/thumbnails/24.jpg)
DEMOhttp://mongoarchive.heroku.com
Tekst endres i Topp- og Bunntekst 10/7/2009s.30