Permalink
Browse files

neo, styles, presentation, offline

  • Loading branch information...
1 parent 27132f7 commit 9509dfccb5ef5730ea3100c9a0736aa52e06e2ab @heim committed Nov 6, 2013
@@ -1449,3 +1449,9 @@ Storage files: (filename : modification date - size)
2013-11-05 20:58:24.994+0000 INFO [o.n.k.i.DiagnosticsManager]: Mounted Neo4j Browser at: /browser
2013-11-05 20:58:26.817+0000 INFO [o.n.k.i.DiagnosticsManager]: Server started on: http://localhost:7474/
2013-11-05 20:58:26.818+0000 INFO [o.n.k.i.DiagnosticsManager]: --- SERVER STARTED END ---
+2013-11-06 06:01:04.317+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC Monitor: Application threads blocked for an additional 27534868ms [total block time: 27534.867s]
+2013-11-06 06:01:30.935+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC Monitor: Application threads blocked for an additional 226ms [total block time: 27535.094s]
+2013-11-06 08:53:15.038+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC Monitor: Application threads blocked for an additional 1415014ms [total block time: 28950.107s]
+2013-11-06 08:58:00.062+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC Monitor: Application threads blocked for an additional 38944ms [total block time: 28989.053s]
+2013-11-06 09:13:07.094+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC Monitor: Application threads blocked for an additional 854651ms [total block time: 29843.703s]
+2013-11-06 09:18:16.036+0000 WARN [o.n.k.EmbeddedGraphDatabase]: GC Monitor: Application threads blocked for an additional 271266ms [total block time: 30114.969s]
View
Binary file not shown.
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
@@ -3,6 +3,16 @@
<head>
<title>3 Databases in approx. 33 minutes</title>
<link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
+ <style>
+ .terminal {
+ /*float: left;
+ border: #000 solid 5px;
+ font-family: "DejaVu Sans Mono", "Liberation Mono", monospace;
+ color: #f0f0f0;
+ background: #000;*/
+ font-size: 16px;
+ }
+ </style>
</head>
<body>
<textarea id="source">
@@ -16,6 +26,11 @@
Andreas Heim
BEKK Consulting
+???
+
+- Intro.
+- Hvem, hva hvor.
+
---
class: middle center
<iframe class="centered" width="560" height="315" src="//www.youtube.com/embed/FcLHlZeLzUk" frameborder="0" allowfullscreen></iframe>
@@ -29,19 +44,34 @@
* CAP
## Praksis (yeah)
-* Redis
* MongoDB
* Neo4J
+* Redis
+
+???
+
+- Vi skal snakke litt om både teori og praksis
+- Først noen akronymer som beskriver distribuerte databaser og systemer
+ - ACID, BASE, CAP
+- Så skal vi se litt nærmere på tre typer databaser
+- Disse er veleldig forskjellige, men faller alle inn under samlebetegnelsen NoSQL
+- MongoDB som er en dokumentdatabase
+- Neo4J er en grafdatabase
+- og Redis som er en hashmap på steroider.
---
class: middle center
-# Not only SQL
+# NoSQL
+--
+
+## Not Only SQL
???
- Begrepet ble først brukt av Carlo Strozzi i 1998.
-- Han hadde en Open Source Relasjonsdatabase som ikke eksponerte et standard SQL-interface.
-- Han har senere foreslått at det burde hete NoREL siden de fleste NoSQL-databaser går bort fra den relasjonelle modellen
+- Han hadde en Open Source Relasjonsdatabase som ikke eksponerte et standard SQL-interface, og beskrev denne som en NoSQL-database.
+- SQL er som dere kjenner til Structured Query Language og er en de-facto standard for å kommunisere med relasjonsdatabaser.
- Begrepet ble reintrodusert i 2009 av Eric Evans for å forsøke å kategorisere en voksende mengde ikke-relasjonelle distribuerte
datastores.
+- Carlos Strozzi har senere foreslått at det burde hete NoREL siden de fleste NoSQL-databaser går bort fra den relasjonelle modellen.
---
class: middle center
<h1><span>Spørsmål: Hva er NoSQL?</span></h1>
@@ -50,15 +80,29 @@
#Svar
## *.lightbrown[ALT SOM IKKE ER EN TRADISJONELL RELASJONSDATABASE]*
???
-- Eller... La oss ta litt teori.
+
+- I dag brukes NoSQL som et samlebegrep på *alternative* databaseteknologier.
+- Fellesbetegnelsen for disse er at de innehar en eller flere av følgende egenskaper:
+ - Meget raske
+ - Håndterer store datamengder
+ - Kan distribueres
+ - Løser *andre* problemer enn en tradisjonell relasjonsdatabase.
+
+- La oss ta litt teori.
---
class: middle center
#ACID
???
+Når man skal beskrive en database så sier man ofte om den har støtte for ACID-transaksjoner eller ikke.
+Dette brukes ofte om *tradisjonelle relasjonsdatabaser*.
+Acid er en forkortelse for
+
- Atomicity
- Consistency
- Isolation
- Durability
+
+og sier noe om hvordan databasen håndterer, eller ikke håndterer feilsituasjoner.
---
class: middle
@@ -69,32 +113,43 @@
- I en serie av databaseoperasjoner så må enten *alle* skje, eller *ingenting* skjer.
- En database som garanterer atomicity vil *motvirke* at en oppdatering til databasen kun vil gjennomføres delvis.
- Atomicity i denne forstanden kan defineres som at oppdateringen ikke kan verken deles eller forenkles.
+- En feilende transaksjon vil føre til at databasen *rulles tilbake* til sin opprinnelige tilstand.
---
class: middle
.circle.centered.yellow[CONSISTENCY]
???
- I et databasesystem så vil *Consistency* sørge for at en transaksjon vil ta databasen fra èn gyldig tilstand, til en annen gyldig tilstand.
+- Det vil si at hvis du i f.eks. en MySQL-base har satt opp at ett felt skal være unikt så vil du ikke kunne sette denne til noe som allerede eksisterer.
+
---
class: middle
.circle.centered.green[ISOLATION]
???
- Egenskapen *isolation* sørger for at alle transaksjoner skjer isolert og på samme måte som om de skulle vært kjørt i parallel.
-- Eksempel: Et eller annet eksempel.
+- Dette kan gjøres ved at databasen låser de aktuelle feltene under en transaksjon slik at andre transaksjoner ikke kan oppdatere eller lese fra samme rader i databasen.
+- Her finnes det også forskjellige nivåer av isolasjon.
+- En tommelfingerregel er at jo høyere grad av isolasjon man har, desto mindre kan databasen yte.
+- Lav isolasjon er lik høy concurrency
---
class: middle
.circle.centered.lightbrown[DURABILITY]
???
-- Durability, eller holdbarhet på norsk sørger for at dataene blir tatt vare på selv om systemet kræsjer. Typisk in-memory databaser har lav durablity, imens clustrede installasjoner har høy durability.
+- Durability, eller holdbarhet på norsk sørger for at dataene blir tatt vare på selv om systemet kræsjer.
+- Typisk in-memory databaser har lav durablity, imens clustrede installasjoner har høy durability.
- Sammenhenger også mye med hardware og operativsystem.
+- Databaser som har høy kapasitet på skriv-operasjoner må gjerne ofre litt durability siden man ofte ikke får en bekreftelse på at skriveoperasjonen har vært suksessfull
---
class: middle center
<h1><span>BASE</span></h1>
+???
+BASE er på en måte motstykket til ACID.
+- Både i ordets rette forstand, syre/base, men også i databaseverdenen.
---
class: cols three
<h1><span>BASE</span></h1>
@@ -209,7 +264,15 @@
- systemet blir konsistent etter hvert
</div>
???
-- Eksempel, skrive til en del av cluster, lese fra en annen
+# Basically available
+- Systemet kan støtte delvis feil (i en del av et cluster f.eks), uten at systemet som en *helhet* feiler.
+- La oss si vi en distribuert brukerdatabase over 5 noder vil vi i teorien ha ca. 20% av brukerne på hver node.
+- Hvis da en av nodene feiler, så vil ikke *hele* systemet feile. Man vil fortsatt kunne spørre etter de resterende 80% av brukerne
+
+# Soft State/Eventual Consistency
+- forskjellige klienter kan se forskjellige data på ett tidspunkt
+- pga synkronisering mellom noder
+- men *etter hvert* så vil dataene bli konsistente.
---
class: white middle center
@@ -389,6 +452,7 @@
- hvordan sammenstiller man data??
- git merge?
- hva med konflikter?
+
---
class: cols two
@@ -408,6 +472,7 @@
- Vi må velge enten mer konsistens eller mer tilgjengelighet
- Det går ikke å ha maksimalt med tilgjengelighet eller konistens!
+
---
class: cols two
@@ -458,7 +523,10 @@
<span class="img">
![](img/hands.png)
</span>
+???
+- På tide å gjøre litt praktisk.
+- Sjekk tid
---
class: cols three
<h1><span>Praksis</span></h1>
@@ -511,6 +579,13 @@
* eks. hvem følger hvem på twitter
* Consistent, Available, men *ikke* distribuert
+# Redis
+
+- Hashmap på steroider
+- low level api
+- limet i applikasjonen
+
+
---
name: mongo
class: middle center white
@@ -605,6 +680,25 @@
- Sosialt nettverk: Hvor mange nye medlemmer får vi pr. måned?
---
+# <span>Aggregation framework</span>
+
+## cat users.txt | sort | uniq -c | sort -nr | head -n 10
+
+
+<pre>
+db.users.aggregate(
+ {$group:
+ {_id: "username", count: {$sum: 1}}
+ },
+ {$sort: {"count": -1}},
+ {$limit: 10}
+);
+</pre>
+
+???
+
+# SWITCH UT AV PRESENTER MODE!
+---
name: mongo-term
class: cols two
# <span>MongoDB</span>
@@ -624,7 +718,7 @@
<br />
<br />
<br />
- <a href="#" class='pushed' id="resume">Resume</a>
+ <a href="#" class="resume">Resume</a>
</div>
<div class="col">
<h3><span>Aggregation</span></h3>
@@ -635,33 +729,37 @@
<span class="img">![](img/neo.png)</span>
# <span>From sweden with love</span>
-<div>
- <a href="//localhost:7474/browser/" target="_blank">localhost:7474/browser</a>
-</div>
+
---
name: graph
-class: round white
+class: round white pushed
![](img/graph.png)
???
+
hva er grafdatabaser
-Recommendations
-Business intelligence
-Social computing
-Geospatial
-Genealogy
-Time series data
-Product catalogue
-Web analytics
+- Recommendations
+- Business intelligence
+- Sosiale greier (venner, følgere, likes)
+- Geo-data
+- Slektsforskning
+- Product catalogue
+- Web analytics
- Tegn på tavla:
- GBG -tog- Oslo (tar fire timer)
- Oslo
- - By
- Amundsen - er i - Oslo
- - Andreas - liker - amundsen
+ - By
+ - Amundsen - er i - Oslo
+ - Andreas - liker - amundsen
+
+ Demo
+
+---
+class: middle white center
+<div><a href="//localhost:7474/browser/" target="_blank">localhost:7474/browser</a></div>
---
name: Redis
class: round
@@ -685,7 +783,7 @@
* har et veldig lav-nivå api
* mange forskjellige kommandoer som gjør èn ting og den tingen gjør de bra
-
+# SKRU AV PRESENTER MODE
---
name: redis-term
class: cols three white
@@ -708,10 +806,6 @@
<a href="#" class="redis-cmd">lpop protagonists</a><br />
<a href="#" class="redis-cmd">rpoplpush protagonists antagonists</a><br />
<a href="#" class="redis-cmd">lrange antagonists 0 -1</a><br />
- <br />
- <br />
- <br />
-<a href="#" class='pushed' id="resume">Resume</a>
</div>
<div class="col">
<h3><span>Set</span></h3>
@@ -734,6 +828,8 @@
<a href="#" class="redis-cmd">zincrby players 6 trevor</a><br />
<a href="#" class="redis-cmd">zrevrange players 0 -1</a><br />
<a href="#" class="redis-cmd">zrevrange players 0 -1 WITHSCORES</a><br />
+ <br />
+<a href="#" class="resume">Resume</a>
</div>
@@ -773,8 +869,8 @@
<script src="/socket.io/socket.io.js"></script>
<script src="/term.js"></script>
- <script src="http://gnab.github.io/remark/downloads/remark-0.5.9.min.js" type="text/javascript"></script>
- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
+ <script src="/lib/remark-0.5.9.min.js" type="text/javascript"></script>
+ <script src="/lib/jquery.min.js" type="text/javascript"></script>
<link rel="stylesheet/less" type="text/css" href="lib/bekk.less" />
<script src="lib/less.js" type="text/javascript"></script>
View
@@ -34,7 +34,7 @@
/* ---------------------------------- */
.bekk-logo(@factor, @position: center, @type: "") {
- background-image: url("https://github.com/kjbekkelund/remark-bekk/raw/master/lib/images/bekk@{type}.png");
+ background-image: url("/img/bekk@{type}.png");
background-repeat: no-repeat;
background-position: @position;
background-size: @logo-width*@factor @logo-height*@factor;
@@ -0,0 +1,6 @@
+@font-face {
+ font-family: 'Inconsolata';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Inconsolata'), url(http://themes.googleusercontent.com/static/fonts/inconsolata/v6/BjAYBlHtW3CJxDcjzrnZCJ0EAVxt0G0biEntp43Qt6E.ttf) format('truetype');
+}
View
Oops, something went wrong.
View
@@ -6,10 +6,10 @@ slideshow.on('showSlide', function(slide) {
}
});
-document.getElementById('resume').onclick = function (e) {
+$('.resume').click(function (e) {
slideshow.resume();
e.preventDefault();
-};
+});
window.onload = function() {
Oops, something went wrong.

0 comments on commit 9509dfc

Please sign in to comment.