Kokemuksia Cassandra NoSQL:stä - Vincit Teatime 2014

  • 389 views
Uploaded on

Oletko miettinyt milloin NoSQL-tietokannan valinta on perusteltua? Niin olen minäkin.Alunperin Facebookin tarpeisiin kehitetty Cassandra-tietokanta on kerännyt paljon kehuja mutkattoman skaalautumisen …

Oletko miettinyt milloin NoSQL-tietokannan valinta on perusteltua? Niin olen minäkin.Alunperin Facebookin tarpeisiin kehitetty Cassandra-tietokanta on kerännyt paljon kehuja mutkattoman skaalautumisen ansiosta. Menestyksen taustalla on joukko poikkeuksellisen innovatiivisia teknisiä ratkaisuja, kuten Gossip-protokolla ja operaatiokohtaiset konsistenssitasot. Esimerkiksi Cassandran tietomallin tai rajapintojen asettamista suunnittelurajoitteista on vähemmin tietoa saatavilla.Yhdistävästä nimityksestä huolimatta erilaiset NoSQL-ratkaisut eroavat kuin yö ja päivä. Tavanomaisesta relaatiomallista luopumista kannattaa harkita vasta kun tuntee riittävän hyvin valitun teknologian tekemät kompromissit.Kerron Vincitin kokemuksista Cassandran onnistuneesta soveltamisesta reaalimaailman ohjelmistoprojektissa. Miten valinta vaikutti projektiin ja mitä jälkikäteen ajatellen olisi voinut tehdä toisin?

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
389
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. NoSQL käytännössä Kyösti Herrala @ Vincit Vincit Teatime 2014
  • 2. •  Cassandran avainominaisuudet •  Arkkitehtuuri, tietomallinnus, kyselyt •  MTV3 2ndScreen mobile backend •  Kokemukset ja havainnot SISÄLTÖ
  • 3. 1000 UPDATE / sec 2000 SELECT / sec throw new (Optimistic)LockingFailureException() SQL VAI JOTAIN MUUTA?
  • 4. •  Perinteisten sovellusten haasteet •  Viite-eheys, atomisuus, normalisointi, lukitus •  Cassandra – pilvipalveluiden ratkaisut •  Skaalautuminen, hajautus, virhesietoisuus •  BigTable tietomalli (2006) Facebook OS fork (2008) CASSANDRA - MOTIVOINTI
  • 5. •  Täysin symmetrinen vertaisverkko (P2P) •  Ei keskeistä koordinaattoria •  Gossip-protokolla •  Suorituskyvyn lineaarinen kasvu vs. solmujen lkm. •  Replikointi (kuvassa 3 kpl) •  Sukulaiset •  Amazon SimpleDB •  Amazon DynamoDB •  Apache HBase CASSANDRA - ARKKITEHTUURI Kuvan  lähde:   h-p://www.datastax.com/documenta8on/cassandra/2.0/cassandra/architecture/architectureClientRequestsRead_c.html  
  • 6. •  Tietomalli •  Rivien pääavaimen hajautus •  RandomPartitioner = MD5(key) •  Column oriented store •  Sarakkeita voi olla miljoonia •  Kyselytyypit: SLICE & RANGE •  Rinnakkaisuusmalli •  Lopulta yhtäpitävä (eventual consistency) •  Suorituskyky vs. yhtäpitäväisyys kompromissi •  ConsistencyLevel = { ALL, ONE, ANY } •  Read repair – Write repair CASSANDRA - AVAINOMINAISUUDET Kuvan  lähde:   h-p://www.datastax.com/documenta8on/cassandra/2.0/cassandra/architecture/architectureClientRequestsRead_c.html  
  • 7. •  Liitoskyselyt puuttuvat (join) •  Manuaalinen hankalaa •  Transaktiot puuttuvat = Paxos & Cassandra 2 •  Toimintoja on tarkoituksella karsittu •  Aggregoivat kyselyt puuttuvat •  Ei sisäistä Map-Reduce –moottoria •  Ei tarjoa RESTful JSON API •  MongoDB, CouchDB, Elastic Search •  Thrift RPC ja CQL ajuri CASSANDRA – KOMPROMISSIT … ja puutteet
  • 8. •  Ketkä Facebook-kaverit seuraavat ottelua? •  getFriendsForMatch(matchId,  myFacebookId)   •  Tulos löydyttävä samalta riviltä •  Pääavain = myFacebookId •  Sarakkeen nimi sisältää dataa •  Ottelun tunnus •  Päivitys monistaa datan jokaiselle kaverille TIETOMALLINNUSESIMERKKI FIN-­‐USA  3.3.2013   FIN-­‐SWE  5.3.2013   UKR-­‐NOR  27.2.2013   Ismo   Seppo,  Ritva,  Esko   Seppo   Seppo     Ismo   Ritva,  Esko   Ismo  
  • 9. •  Denormalisointi: Miltä haluttu vastaus näyttää? •  Tärkein peruste tietomallin laadinnassa •  Redundanssin välttäminen ei niin olennaista •  Unohda relaatiot: Varsinkin JOIN! •  Datan pääavaimen perusteella samalta riviltä •  Sarakkeet muodostavat ulottuvuuden (Hash-map) •  Hyödynnä sarakeavaruuden järjestys •  Pääavaimen ositus - komposiittirakenne •  Replikointiosuus •  Paikallinenosuus CASSANDRA - TIETOMALLINNUS
  • 10. •  Positiivista - Skaalautuminen ja HA-ratkaisu •  ACID vain siellä missä tarvitaan! •  Ketterässä projektissa •  Denormalisoidun tiedon hyödyntäminen •  Syntyykö tarve kirjoittaa JOIN manuaalisesti? •  Tietomallin migraatio ja kuvaaminen vaikeata •  Aluksi SQL tai hybridi-ratkaisu mahdollinen? •  Vertaistuki vähissä •  Deployment osaaminen – snapshot backup yms. CASSANDRA – KOKEMUKSET #1
  • 11. ! ! ! public static <K, SN, N>! RangeSuperSlicesCounterQuery<K,SN,N>! createRangeSuperSlicesCounterQuery(! " Keyspace keyspace,! " Serializer<K> keySerializer,! " Serializer<SN> sNameSerializer, ! " Serializer<N> nameSerializer) {}! CASSANDRA – KOKEMUKSET #2 Vaikeaselkoinen koodi (Hector Java API)
  • 12. www.vincit.fi KYSYMYKSIÄ?