14
Continuation, MessagePassing & NoSQL The Greater Helsinki Area F# User Group http://www.meetup.com/FSharpHelsinki/ © Tuomas Hietanen, 2012

Message passing & NoSQL (in Finnish / Suomeksi)

Embed Size (px)

DESCRIPTION

F# käyttäjäryhmän esitys Lyhyesti monista ajankohtaisista aiheista. Diojen tarkemmat selosteet notes-osuudessa. Same in English: http://www.slideshare.net/thorium/message-passing-nosql-13005795

Citation preview

Page 1: Message passing & NoSQL (in Finnish / Suomeksi)

Continuation, MessagePassing & NoSQL

The Greater Helsinki Area F# User Group

http://www.meetup.com/FSharpHelsinki/

© Tuomas Hietanen, 2012

Page 2: Message passing & NoSQL (in Finnish / Suomeksi)

Ennuste…

Erilaisten tiedontuottajien määrä kasvaa

Prosessorien ja kommunikaation määrä kasvaa

Emme tunne ajoympäristöä…

(Voi olla esim. pilvi; Azure)

Page 3: Message passing & NoSQL (in Finnish / Suomeksi)

Turing, tilakoneet ja oliot

Substantiivit vs. verbit• Kuka omistaa toiminnan?• Olio vs. tapahtuma (event)

Tilakoneen ongelmat:• Kompleksisuus: Missä mennään?• Kuka aiheutti nykytilan? Miten toistetaan?• Asynkronisuus-ongelmat, lukitukset

Page 4: Message passing & NoSQL (in Finnish / Suomeksi)

Tilan kapselointi: Tyyppi vs Luokka vs Monad

Tyyppi

• Ei tilaa

Luokka

• Tila voi paljastua suoraa

• Tila näkyy myös metodien kautta ulos

Monad

• Kuin tilaa ei olisi• Tila paljastuu

ulos vasta poistuttaessa

Helpottavat toiminnallisuuksien ohjelmointia “tietyssä kontekstissa”

Page 5: Message passing & NoSQL (in Finnish / Suomeksi)

Domain-mallin rooli

Tarkoitettu kehittäjille• Kone ei itse mallista hyödy

Yrittää mallintaa pelikenttää• Haitat vs. hyödyt?

Roolit• Aktiivinen / aneeminen• Voiko malli muuttua?

Page 6: Message passing & NoSQL (in Finnish / Suomeksi)

Joukko-operaatiot

x x x

x x y x x

y y yx = y

x = okSuodatus:

Projektio:(“mappaus”)

Page 7: Message passing & NoSQL (in Finnish / Suomeksi)

Joukko-operaatiot

x x x

x x y x x

y y yx = y

x = okSuodatus:

Projektio:(“mappaus”)

SQL: Select … where

C#: LINQ

Muut kielet: Map, Filter

Pilvi: MapReduce

Page 8: Message passing & NoSQL (in Finnish / Suomeksi)

Reaktiivinen ohjelmointi

Havainnoidaan ympäristöä

Joukko-operaatioita ympäristön tapahtumiin

Page 9: Message passing & NoSQL (in Finnish / Suomeksi)

Event sourcing (CQRS)

Tapahtumahistoria

Koostetaan Domain-malli

Huomaa yhtäläisyys reaktiiviseen ohjelmointiin

Page 10: Message passing & NoSQL (in Finnish / Suomeksi)

Message passing

Kuljetetaan sanomia (Sanoma voi olla myös tapahtuma.)

Joukko-operaatioita sanomiin

Page 11: Message passing & NoSQL (in Finnish / Suomeksi)

Actors

Ei paljasta tilaansa ulospäin

Käyttää message passingia• Voi kutsua muita• …tai itseään

Page 12: Message passing & NoSQL (in Finnish / Suomeksi)

Agents

Ei paljasta tilaansa ulospäin• Ottaa vastaan pyyntöjä

Käyttää message passingia• Voi kutsua muita• …tai itseään

Page 13: Message passing & NoSQL (in Finnish / Suomeksi)

Continuation

Reify: Kauanko haaveillaan ja koska suoritetaan?

Mahdolliset toiminnot: jatko, lopetus tai virhe

Church vs. Call-with-current-continuation (call/cc)

Page 14: Message passing & NoSQL (in Finnish / Suomeksi)

NoSQL: Tieto ilman skeemaa

Dokumenttitietokannat• Ei ID:itä• Dualismi SQL-kantojen kanssa• RavenDB, MongoDB

Big Data• Loki-tiedostot, GPS-data, yms.• Hadoop, MapReduce