Smidige databaser

Embed Size (px)

Citation preview

@knuthaug
blog.knuthaugen.no

smidigere databaser

Jeg heter Knut Haugen og jobber til daglig i Itera Consulting. Jeg skal snakke smidige og stle databaser.

NoSQL ==Not Only SQL

- definisjon. En hel mengde forskjellige databasetyper samlet under en paraply-betegnelse, som har som fellesnevner at de ikke har joins, har lettere transaksjonslogikk, og ikke har SQL som query language. NoSQL representerer en hel mengde nye valg for database. Relasjonsdatabaser er ikke lenger det eneste alternativet.

Superkrefter

RDBMS er generelle og brede, NoSQL-databaser har veldig smalt fokus og til dels liten sweetspot.

Vanvittige krefter p ett spesielt omrde, men kanskje ubrukelig p en del annet. Du m finne den som passer.

Schema?

RDBMS har schema som gir deg trygghet, validering og kontroll. Men ogs treghet og stivhet og lavere endringstakt )spesielt i DBA-tunge organisasjoner). Schema-ls database gir deg strre frihet, men med stor frihet kommer stort ansvar. Hold orden selv!

@mtnygard (Michael Nygard)p QCon SF

Half of the interest in NoSQL is scalability, half is getting away from passing schema changes through the DBA

Sitat fra Qcon San fransisco for noen uker tilbake.

En kjapp liten prototype

En prototype-vennlig database som lar deg snu deg fort rundt for sjekke om ideen din passer. - Lett endre(schema)- Alt kan styres fra kode- scripting av dataoperasjoner

Dette er ikke en test

Friksjonsfri testbarhet gir smidighet for utvikleren. Legg inn data og sett i gang.- tett p dataene- oversiktlige api'er, enkle stubbe om det trengs- IDE-sttte for jobbe mot databasen. - scripte migrering

Styr opprettelse og sletting enkelt fra koden. ingen tung serverprosess bryte med.

public class PersonPersistance {

DBCollection persons;

@Before public void setUp() throws UnknownHostException { Mongo m = new Mongo("127.0.0.1" , 27017); persons = m.getDB("test").getCollection("persons"); }

@Test public void retrievePersonFromDatabase(){ Person test = new Person("Knut Haugen"); persons.insert(test); Person test2 = (Person) persons.findOne(); assertEquals(test.get("name"), test2.get("name")); }

@After public void tearDown(){ persons.drop(); }}

Eksempel p testbarhet, med enkel setup og teardown av en testbase, med tester. MongoDB.

En grov lsning, javisst, men det er i det minste mulig. Oversiktlige API'er som mockes enkelt.

Utvikler sitter tett p dataene, og har full IDE-sttte for jobben med jobbe mot databasen.

den eneste konstanten er endring

Endringsvillighet er viktig i prosjekter der markedet og produktgrunnlaget endrer seg under fttene dine, mens du er i fart. Er softwaren og databasen lite endringsvillig, taper du. Det er realisering av forretningsverdi det handler om, og tiden det tar fra ideen kommer opp til koden er live, m vre kort.

Smidighet fra hvordan vi forholder oss til det. En annen mte arbeide p.

Say Yes to NoSQL

En liten oppfordring

@knuthaug
blog.knuthaugen.no

smidigere databaser

Bilder:BombDog/Jon Lucas, CCistockphoto.com

Jeg heter Knut Haugen og har snakket om smidigere databaser. Takk for meg!