bbs tjueprosent nosql

24
BBS tjueprosent – noSql i ny arkivløsning Bjørn Nordlund og Hans-Petter Vadseth

Upload: bjorn-nordlund

Post on 12-Apr-2017

1.645 views

Category:

Entertainment & Humor


0 download

TRANSCRIPT

Page 1: Bbs Tjueprosent Nosql

BBS tjueprosent – noSql i ny arkivløsningBjørn Nordlund og Hans-Petter Vadseth

Page 2: Bbs Tjueprosent Nosql

Hvorfor?

Tekst endres i Topp- og Bunntekst 10/7/2009s.2

Page 3: Bbs Tjueprosent Nosql

Skjemafri database

Tekst endres i Topp- og Bunntekst 10/7/2009s.3

Page 4: Bbs Tjueprosent Nosql

En databasetype til alle formål

Tekst endres i Topp- og Bunntekst 10/7/2009s.4

Page 5: Bbs Tjueprosent Nosql

Skalering

Tekst endres i Topp- og Bunntekst 10/7/2009s.5

Page 6: Bbs Tjueprosent Nosql

Vi har muligheten

BBS 20%

Tekst endres i Topp- og Bunntekst 10/7/2009s.6

Page 7: Bbs Tjueprosent Nosql

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

Litt teori

Tekst endres i Topp- og Bunntekst 10/7/2009s.2

Page 9: Bbs Tjueprosent Nosql

Scale and Performance

s.9

Page 10: Bbs Tjueprosent Nosql

Read slaves, caching, Partitioning, Shared everything and shared nothing

Tekst endres i Topp- og Bunntekst 10/7/2009s.11

Page 11: Bbs Tjueprosent Nosql

Scaling vs functionality, performance and complexity

Tekst endres i Topp- og Bunntekst 10/7/2009s.22

Page 12: Bbs Tjueprosent Nosql

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

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

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

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

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

Noen grunn til ikke å bruke dette?

 

Page 18: Bbs Tjueprosent Nosql

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

 

Data varer lenger enn applikasjoner, vi må ha RDBMS => Export/import strategi! (kan testes)

Page 20: Bbs Tjueprosent Nosql

 

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

 

Kan vi klare oss uten transaksjoner, joins og konsistens i basen?

Page 22: Bbs Tjueprosent Nosql

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

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

DEMOhttp://mongoarchive.heroku.com

Tekst endres i Topp- og Bunntekst 10/7/2009s.30