message passing & nosql (in finnish / suomeksi)
Post on 17-Dec-2014
523 Views
Preview:
DESCRIPTION
TRANSCRIPT
Continuation, MessagePassing & NoSQL
The Greater Helsinki Area F# User Group
http://www.meetup.com/FSharpHelsinki/
© Tuomas Hietanen, 2012
Ennuste…
Erilaisten tiedontuottajien määrä kasvaa
Prosessorien ja kommunikaation määrä kasvaa
Emme tunne ajoympäristöä…
(Voi olla esim. pilvi; Azure)
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
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”
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?
Joukko-operaatiot
x x x
x x y x x
y y yx = y
x = okSuodatus:
Projektio:(“mappaus”)
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
Reaktiivinen ohjelmointi
Havainnoidaan ympäristöä
Joukko-operaatioita ympäristön tapahtumiin
Event sourcing (CQRS)
Tapahtumahistoria
Koostetaan Domain-malli
Huomaa yhtäläisyys reaktiiviseen ohjelmointiin
Message passing
Kuljetetaan sanomia (Sanoma voi olla myös tapahtuma.)
Joukko-operaatioita sanomiin
Actors
Ei paljasta tilaansa ulospäin
Käyttää message passingia• Voi kutsua muita• …tai itseään
Agents
Ei paljasta tilaansa ulospäin• Ottaa vastaan pyyntöjä
Käyttää message passingia• Voi kutsua muita• …tai itseään
Continuation
Reify: Kauanko haaveillaan ja koska suoritetaan?
Mahdolliset toiminnot: jatko, lopetus tai virhe
Church vs. Call-with-current-continuation (call/cc)
NoSQL: Tieto ilman skeemaa
Dokumenttitietokannat• Ei ID:itä• Dualismi SQL-kantojen kanssa• RavenDB, MongoDB
Big Data• Loki-tiedostot, GPS-data, yms.• Hadoop, MapReduce
top related