Introduzione a NoSql
Scala e MongoDb con mongo-scala-driver
Scala e JDBC con ScalaQuery
Meeting Jug Ancona 22-01-2010
http://www.jugancona.it
Report
Share
Report
Share
1 of 17
More Related Content
Scala e i database
1. Scala e i databaseOnofrio PanzarinoTwitter: @onof80onofrio.panzarino@gmail.comhttp://it.linkedin.com/in/onofriopanzarinohttp://www.google.com/profiles/onofrio.panzarinoJug Ancona
3. Limiti dei RDBMS tradizionaliLe classiche web-app sono “Scale-out”Si aggiungono nodi al sistema per aumentare le performanceGli RDBMS, a causa di lock e join, sono “Scale-up”Per aumentare le performance è necessario potenziare il serverRDBMS ottimizzati perbrevi e frequenti transazioni r/wgrandi transazioni batch con pochi accessi in scritturanon per pesanti carichi di lavoro r/w!
4. CAP theorem (Brewer, 2000)Sistemi distribuitiC = Consistencytutti i nodi con gli stessi datiA = Availabilityil fallimento di un nodo non impedisce agli altri di continuareP = Partitiontoleranceil sistema tollera arbitrarie perdite di messaggi“Un sistema distribuito non può garantirle simultaneamente tutte, ma al massimo due”(C && A) => ! P
6. MongoDBJSON-style data store{ name: “onofrio”, tags: [ “scala”, “java”] }Schemalessnella stessa collection:{ username: “bill”, password: “h298LYT”, age: 30, active: true }{ username: “james”, openId: http://www...”, }{ username: “admin”, alias: “bill” }facile da gestirenon è più necessario fare il deploy dello schema del DB!
10. Mongo-scala-driverÈ un wrapper di mongo-java-driver, scritto in ScalaFornisce il modo di mappare un documento MongoDB (DBObject) in un “POSO” Fondamentalmente è un DSL per repositoryMongoDB.val m = new Mongo("localhost") valcoll = m.getDB(“test”).getCollection("addresses") of Address coll << new Address(“Onofrio", “Via Garibaldi", “1111", “NYC") valaddressOfNY = for { a <- Address where { Address.street is “NYC” } in coll }
12. Scala + RDBMSScala può linkare ogni JARJDBC“JDBC is the reasonwhy Java guysuseORMs”Non è type-safegetString(“Name”)getFloat(“Price”)…La mappatura columntype – Java type non è centralizzabileviene ripetuta ad ogni query
13. ScalaQueryDSL per JDBCScala – friendlyTotalmente type-safeLa mappatura è centralizzata in un Scala objectNon è un ORMNo cacheNon viene oscurato il momento in cui vengono effettuate le queryÈ possibile usare oggetti immutabili
16. Riferimentihttp://www.scala-lang.org/M. Odersky, L. Spoon, B. Venners, Programming in Scala, Artimascala-user mailing listhttp://stackoverflow.com/questions/tagged/scalahttp://www.artima.com/index.jspirc://irc.freenode.net/scala