際際滷

際際滷Share a Scribd company logo
RavenDbMikael stberg, inloop.se
Vad 辰r RavenDb?
Vad 辰r en dokumentdatabas?
Vad 辰r ett dokument?
Ravendb@swedenprogressive
Ravendb@swedenprogressive
Ravendb@swedenprogressive
Vad 辰r en dokumentdatabas?
Vad 辰r RavenDb?
Raven arkitekturClientHTTPBackground workersRaven Http ServerIndexingReducingTasksHTTP ServerDocumentStoreIndexStoreESENT / Raven.Munin
Demo
IndexDynamiska / Temp / AutoMap/ReduceLive ProjectionsLucene.NET
Transaktioner油SingelBatchMultioperation (System.Transactions)Cross shard
Deployment & DriftInstallationerConsole app
Windows Service
IIS / Azure
Embedded / OEMTools Smuggler
 Backup
 Raven Studio
 PluginsVad mer?ShardingReplikeringR辰ttigheterPatchningVersioningExpirationSet based operations
Mer informationravendb.netayende.com/bloggroups.google.com/group/ravendbgithub.com/ravendb
RavenDb?
酷姻奪乙看姻?
Ad

Recommended

Unite keynote all - mike's edit (don't edit!)
Unite keynote all - mike's edit (don't edit!)
Atlassian
Polyglot Plugin Programming
Polyglot Plugin Programming
Atlassian
Atlassian unite pix
Atlassian unite pix
Atlassian
How HipChat Powers the HipChat Team - Atlassian Summit 2012
How HipChat Powers the HipChat Team - Atlassian Summit 2012
Atlassian
Atlassian Overview
Atlassian Overview
Atlassian
Guerilla marketing your service desk
Guerilla marketing your service desk
Atlassian
2024 Trend Updates: What Really Works In SEO & Content Marketing
2024 Trend Updates: What Really Works In SEO & Content Marketing
Search Engine Journal
Storytelling For The Web: Integrate Storytelling in your Design Process
Storytelling For The Web: Integrate Storytelling in your Design Process
Chiara Aliotta
Artificial Intelligence, Data and Competition SCHREPEL June 2024 OECD dis...
Artificial Intelligence, Data and Competition SCHREPEL June 2024 OECD dis...
OECD Directorate for Financial and Enterprise Affairs
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
SocialHRCamp
2024 State of Marketing Report by Hubspot
2024 State of Marketing Report by Hubspot
Marius Sescu
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
Skeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
Introduction to Data Science
Introduction to Data Science
Christy Abraham Joy
Time Management & Productivity - Best Practices
Time Management & Productivity - Best Practices
Vit Horky

More Related Content

Featured (20)

Artificial Intelligence, Data and Competition SCHREPEL June 2024 OECD dis...
Artificial Intelligence, Data and Competition SCHREPEL June 2024 OECD dis...
OECD Directorate for Financial and Enterprise Affairs
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
SocialHRCamp
2024 State of Marketing Report by Hubspot
2024 State of Marketing Report by Hubspot
Marius Sescu
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
Skeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
Introduction to Data Science
Introduction to Data Science
Christy Abraham Joy
Time Management & Productivity - Best Practices
Time Management & Productivity - Best Practices
Vit Horky
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
SocialHRCamp
2024 State of Marketing Report by Hubspot
2024 State of Marketing Report by Hubspot
Marius Sescu
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
Time Management & Productivity - Best Practices
Time Management & Productivity - Best Practices
Vit Horky

Editor's Notes

  • #2: Inledning om datalagring och bakgrunden till NoSQL - 2 minDatalagring har l辰nge varit synonymt med Relationsdatabaser.Det har varit s奪 sedanEdgar Codd publicerade sin artikel om relationsmodeller 1970. Men relationsdatabaser 辰r bra. Extremt bra. SQL Server 辰r ett exempel p奪 en fantastisk relationsdatabas och den g奪r att anv辰nda till n辰stan vad som helst. Men den kanske inte 辰r utm辰rkt f旦r alla uppgifter. Den 辰r ju relationell medan de flesta av oss arbetar med objektorientering. Och vi har p奪 s奪 m奪nga s辰tt f旦rs旦kt f奪 ner v奪ra objektorienterade modeller i dessa relationsmodeller. Det 辰r verkligen dags att titta p奪 ett alternativ.Den h辰r presentationen handlar om RavenDb, som 辰r ett alternativ.
  • #3: RavenDb 辰r en dokumentdatabas.
  • #4: Innan vi svarar p奪 det b旦r vi reda ut vad ett dokument 辰r.
  • #5: Vad 辰r dokument f旦r en dokumentdatabas?Ett dokument 辰r data som 辰r representerad i XML, Json eller n奪got annat strukturerat format. RavenDb anv辰nder Json.Dokument 辰r oberoende och 辰r schemal旦sa.Dokument 辰r inte platta. Ett dokument kan representera en hel objekt-hierarki.
  • #6: Det h辰r 辰r mycket enkelt exempel p奪 ett dokument.Dokument 辰r oberoende och schemafria, vilket betyder att jag kan l辰gga till ett dokument som har en egenskap mer 辰n det befintliga dokumentet samtidigt som jag fortfarande kan behandla dem tillsammans i operationer i databasen.Dessa tv奪 objekt 辰r serialiserade in i RavenDb fr奪n helt vanliga C# Pocos. Inga attribut eller basklasser kr辰vs.Dessutom kommer det att g奪 att l辰sa ut det f旦rsta dokumentet in i den nya klassens struktur utan problem.
  • #7: Ett lite mer komplext exempel som ocks奪 visar p奪 att man kan spara objektshierarkier i dokumenten. Men 辰ven om dokumenten 辰r schemafria, betyder inte det att man inte ska l辰gga ner lite tid p奪 att fundera p奪 sin datastruktur.
  • #8: User-dokument 辰r platt, medan Photo-dokumentet har en lista med tags som i en relationsv辰rlds skulle kr辰va en extra tabell. Photo-dokumentet har ocks奪 en relation till User-dokumentet. RavenDb till奪ter att man lagrar hierarkier, men hanterar inte referenser s辰rskilt bra. Det finns ett visst st旦d f旦r joins, genom n奪got som kallas includes, men det 辰r inte alls j辰mf旦rbart med joins i den relationella v辰rlden. Dokument b旦r vara root aggregates.Dokument b旦r stanna inom en transaktionell gr辰ns.
  • #9: S奪 vad 辰r en dokumentdatabas nu n辰r vi vet vad dokument 辰r?En dokumentdatabas 辰r i grunden en Key / Value store. En key / value store till奪ter att man sparar data baserat p奪 en nyckel. F旦r att l辰sa, anger man bara nyckeln. Key / Value stores har ofta extremt bra prestanda just f旦r att man kan optimera hanteringen av nycklarna. Dessutom 辰r det v辰ldigt gynnsamt att skala key / value stores eftersom prestandan inte p奪verkas av varken m辰ngden data eller antalet noder som finns. Nackdelen 辰r att Value ofta 辰r en blob, vilket g旦r att det 辰r upp till klienten att k辰nna till vad Value egentligen 辰r. Dessutom kan man bara l辰sa genom nyckeln, vilket g旦r att klienten m奪ste hantera sekund辰ra index f旦r att kunna st辰lla mer komplicerade fr奪gor.---Den fundamentala skillnaden mellan en key / value store och en dokumentdatabas 辰r att dokumentdatabasenp奪 n奪got s辰tt kan f旦rst奪 vadValue 辰r och utf旦ra operationer p奪 den datan.F旦r en dokumentdatabas 辰r Value allts奪 sj辰lva dokumentet.Vi kan fortfarande l辰sa genom nyckeln, vilket precis som f旦r en vanlig Key / Value store 辰r en extremt billig operation. Men dokumentdatabasen har en f旦rm奪ga att l辰sa sin egen data och kan utf旦ra operationer p奪 sin data. Den kan till exempel hantera sina egna index, vilket g旦r att vi har ett mycket rikare s辰tt att st辰lla fr奪gor mot den.
  • #10: RavenDb 辰r en dokumentdatabas utvecklad i .NET, i C#Den 辰r byggd p奪 HTTP och det 辰r REST man anv辰nder.Den bygger upp sina index med hj辰lp av Lucene.NETDen har en LINQ-provider som g旦r fr奪gor v辰ldigt naturliga f旦r en van .NET-utvecklare.Den har ett i n辰rmast sj辰lvf旦rklarande klient-APIDen 辰r safe by defaultDen har utbyggnadsm旦jligheter i form av triggers och listeners.Den g奪r att k旦ra p奪 Windows.J辰mf旦r med Couch.
  • #11: RavenDb har en egen HTTP Server som implementerar det REST-interface som man anv辰nder f旦r att kommunicera med den.Den har ett antal background workers. En f旦r indexeringEn f旦r reduceEn f旦r 旦vriga tasks.Dokument och index sparas i tv奪 olika stores. Dokumenten 辰r ju som bekant json och indexen 辰r Lucene.Indexen sparas p奪 disk enligt Lucen medan dokumenten sparas i ESENT eller Raven.Munin.ESENT 辰r JET Blue som 辰r samma databas som Exchange och Active Directory anv辰nder. Raven.Munin 辰r en managed store. Allts奪 en native .NET store som 辰r helt byggd med managed kod, vilket g旦r att den rent teoretiskt g奪r att k旦ra p奪 alternativa plattformar.
  • #12: Ladda ner senaste unstable油Stable, Unstable och Commercialpacka upp c:\\ravenDra ig奪ng, cmd.exeVisa Raven Studio油http://localhost:8080Skapa ett enkelt testdok, fr奪ga efter det via http, deleteVisual Studio油- 4 minConsole app Skapa en documentStore Initialize documentStore using sessionSkapa en UserSparaVisa i studioL辰s ut med LoadUppdatera FullnameSparaVisa i studioSkapa en till UserSparaVisa i StudioL辰s ut med QueryEtt index skapas -> N辰sta steg, IndexV辰nta lite nu. Vi har inte skapat n奪got schema och vi har inte skapat n奪gra index. Hur g奪r det h辰r till egentligen?
  • #13: Generellt om index i RavenDe processas server side och bygger p奪 Lucene.NET. Index kan vara stale. De kanske inte 辰r kompletta. Den underliggande datan 辰r alltid korrekt, men indexen kan vara inkorrekta.Dynamiska / Temp / AutoSkapas n辰r de anv辰nds. Mycket bra j辰mf旦rt med RMDBS, oindexerade f辰lt, table scans.http://localhost:8080/indexes/dynamic/Usershttp://localhost:8080/indexes/dynamic/Users?query=UserName:M*http://localhost:8080/indexes/dynamic/Users?query=FullName:M*AutoEtt tempindex 辰ndras till ett autoindex efter en viss tids anv辰ndning.Map/ReduceMap/Reduce 辰r en algoritm skapad av Google f旦r att st旦dja distribuerad hantering av stora datam辰ngder utspridda p奪 m奪nga noder.Egentligen 辰r Map/Reduce alternativt s辰tt att g旦ra en GROUP BY p奪. Men distribuerat. Och med partitioner av datan.Det g奪r ut p奪 att man med en Map-funktion samlar den data man vill ta g旦ra sin gruppering p奪. I Raven inneb辰r det allts奪 att man fr奪gar efter en del av ett dokument.Man tar sedan resultatet av Map-funktionen och skickar in det i Reduce-funktionen. Reduce-funktionens uppgift 辰r att genomf旦ra grupperingen. Det viktiga 辰r att Reduce-funktionen returnerar samma sak som den tar emot och anledningen till det 辰r att man i praktiken ska kunna k旦ra Map Reduce p奪 massor av noder eller partitioner av datan. Och eftersom datan 辰r partitionerad kommer grupperingen inte lyckas eftersom en partition inte k辰nner till grupperingsnycklarna i de andra partitionerna. De kan ske f旦rst n辰r de 辰r individuellt reducerade och d辰refter sammanslagna varp奪 man k旦r Reduce-funktionen igen n辰r man har alla nycklarna.Exempel med folk:Dela in salen i tv奪 partitioner.Utse en r辰knare i varje partition.St辰ll en bin辰r fr奪ga, h旦ger eller v辰nster hand upp.Map: Ni har s辰kert en massa intressanta egenskaper, men jag vill enbart veta detta om er.Reduce: Gruppera p奪 vilken hand som 辰r uppe och r辰kna antalet av varje.Beg辰r svar av r辰knarna.Upp i notepad med resultatet. Node 1 H 2 V 3 Node 2 H 1 V 2 Reduce H 3 V 5Kodexempel:PhotoTagCountIndexLive ProjectionsDokument 辰r oberoende, vilket betyder att vi inte ska beh旦va ladda information fr奪n andra dokument f旦r att hantera dem. Vi l旦ser det normalt genom denormalisering av viss information. Men med denormalisering m奪ste vi ta ansvar f旦r att uppdatera den denormaliserade informationen, vilket kan bli lite jobbigt. F旦r att komma runt det, finns fenomenet Live Projections vilket 辰r motsvarigheten till en nested loop join i relationsv辰rden.I objektsmodellen har vi v奪ra normaliserade PhotoVotes...Lucene.NETFuzzy, Range,
  • #14: Single: N辰r man skapar ett uppdaterar ett dokument k旦rs den operation under en transaktion och skulle det bli fel n奪gonstans, rullas allt tillbaka och ingen skada kan uppst奪 p奪 Ravens interna filstruktur.Batch: Batchoperationer som sker under ett och samma anrop k旦rs under samma transaktion. Om n奪gon operation fallerar, rullas allt tillbaka.Multi operation: Operationer som exekveras i en multioperationstransaktion syns bara f旦r den p奪g奪ende transaktionen. Operationer i andra transaktioner eller operationer utan transaktioner ser inte f旦r辰ndringar f旦rr辰n transaktionen 辰r commitad. Alla dokument som modifieras av transaktionen l奪ses, vilket inneb辰r att de 辰r l辰sbara av andra transaktioner, men om n奪gon annan f旦rs旦ker modifiera dokumentet uppst奪r en konflikt.Partiella fel till奪ts ocks奪 utan att hela transaktionen rullas tillbaka. Partiella fel kan ske och korrigeras och man kan forts辰tta med ytterligare operationer och slutligen committa. Det 辰r viktigt att vet att transaktionen sp辰nner 旦ver flera HTTP-anrop och det 辰r m旦jligt genom att man anv辰nder en HTTP Header med ett unikt id.Cross shard:Med Ravens support f旦r sharding, vilket till奪ter att man delar upp data p奪 flera instanser av databasen, till奪ts ocks奪 transaktioner 旦ver dessa shards. Det bygger p奪 att man skickar samma HTTP Header till alla shards, vilket g旦r att operationer kan koordineras 旦ver flera shards samtidigt.
  • #16: ShardingReplikering / IndexreplikeringR辰ttigheter genom bundlePatchning 辰r native i APIt.Versioning genom bundleExpiration genom bundleSet based operation
  • #18: Slutpl辰dering Vad ska man anv辰nda den till? Repository pattern = alla appar Event Sourcing Persistent ViewModels, Read F旦rdelar M奪nga tunga features Extremt l奪g tr旦skel Nackdelar Litet community? Omogen?
  • #23: ven om en mycket stark po辰ng med relationsdatabaser 辰r att de inte skalar, 辰r det inte n奪got som m奪nga av oss har n奪got problem med normalt. Anledningen att relationsdatabaser inte skalar 辰r att de m奪ste h奪lla full koll p奪 sin data. Den m奪ste vara vara consistent (konsekvent, 旦verensst辰mmande, fast, j辰mn, f旦ljriktig) f旦r att h奪lla koll p奪 nycklar Consistency: Alla klienter ser samma data samtidigtAvailability: Felande noder p奪verkar inte andra noder, klienter kan alltid l辰sa och skrivaPartition Tolerance: Systemet fungerar bra 辰ven det 辰r uppdelat p奪 flera noder
  • #24: Klient APIHTTPDocumentStoreIndexStoreEsent, JET Blue, Exchange, Active DirectoryManaged, Raven.Munin