tisdag 5 juli 2011

Riak

Riak är en NoSQL databas med följande egenskaper:

  • Skriven i Erlang
  • Dokument orienterad
  • Skalbar decentraliserad lagring med "buckets" och "keys"
  • Distribuerad
  • Replikerar automatiskt i samma kluster
  • Konfigurerbar storage backend. Bitcask används som default finns exempelvis även en för att använda InnoDB.
  • HTTP API (finns även API för Erlang)
  • Hanterar konflikter mha Vector clocks - vilka exponeras ut till klienten.
  • Klarar av MapReduce jobb skrivna i JavaScript eller Erlang med stöd för JSON
  • Stöd för länkar mellan objekt (tänk graf-databas light) - funkar tydligen bra upp till ett par dussin relationer per dokument.
  • Konfigurerbar nivå på consistency, availability och partition tolerance ( N i konfiguration. W och R går att överskriva på fråge nivå mha parametrar)
  • OpenSource med möjlighet till Enterprise licens (via Basho)

    Tillskillnad från ex MongoDB går det ej att ha sekundära indexar i Riak - detta då Riak inte vet någonting om datan du sparat och behandlar all data lika.

    Efter att ha labbat med Riak en stund kan jag konstatera att det gått extremt smidigt att sätta upp ett Riak kluster på ett antal noder. Rekommenderar klart att köra igenom Bashos Riak Fast Track vilken tar ungefär 1 timme att gå igenom (plus eventuellt strul :)).

    De egenskaper jag själv värderar starkt hos Riak är:

  • Den skalar automatiskt när man lägger till fler noder i klustret.
  • Gör ej skillnad på vad du sparar i den. Funkar utmärkt med binära filer. Luwak (del av Riak) sköter partitionering av större filer automatiskt (måste dock slås på i config).
  • Bra stöd för JSON i MapReduce jobb
  • "Link walking"
  • Enkelheten

    Utöver ovannämda finns även ett projekt som heter Riak Search vilket integrerar Lucene i Riak - vilket jag tycker låter extremt spännande. Dock ej haft möjlighet att testa detta ännu.
  • Inga kommentarer: