Hybrid lagring sans img peter lundberg

3,549 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,549
On SlideShare
0
From Embeds
0
Number of Embeds
3,098
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Hybrid lagring sans img peter lundberg

  1. 1. LAGRINGPeter LundbergHUR MÅNGA ANVÄNDE EN BEPRÖVADRELATIONSDATABAS I SITT SENASTEPROJEKT?HanduppräckningHYBRIDLAGRING HUR MÅNGA HAR PROVAT/ÖVERVÄGT ANNANLAGRING I SITT SENASTE PROJEKT?Handuppräckning
  2. 2. GOLDEN HAMMER"Om ditt enda verktyg är en hammaretenderar du att se alla problem som en spik."- Abraham MaslowMER SYSTEMMånga databaserLättviktig utvecklingMER DATABig DataSökAnalysSensorerMER DATORERMolnetMinnespriserTillgänglighet
  3. 3. MER MODELLERObjektorienteringFunktionella språkWebbAsynkronitetMODELLERINGHur skulle ni representera? Lagra?ProdukterOrder + OrderraderKunderTABELLER? TABELLEROrdern kan lagras så här:Läsa upp alla peters samlat:Använda O/R Mapper?insert into ORDER_DETAIL (id, customer, order_date)values (1001, "peter", new Date());insert into ORDER_ROW (id, order_id, product, amt)values (1001, 1, "Dinkelmjöl, 1 kg", 2);insert into ORDER_ROW (id, order_id, product, amt)values (1001, 2, "Fruktlådan", 1);select * from ORDER_DETAIL where customer="peter";select * from ORDER_ROW as rjoin ORDER_DETAIL as o on r.order_id=o.idwhere o.customer="peter";
  4. 4. DOKUMENT?http://martinfowler.com/bliki/AggregateOrientedDatabase.htmlDOKUMENTOrdern kan lagras så här:Läsa upp alla peters samlat:Ingen mappning eller onödig I/O.db.order.save({customer_id: "peter",order_date: new Date(),rows: [{product: "Dinkelmjöl, 1 kg", amt: 2},{product: "Fruktlådan", amt: 1}]})db.order.find({customer_id: "peter"})GRAF? GRAFEROrdern kan lagras så här:och läsa upp allt samlat:order = Node({ order_date: new Date() });row1 = Node({product: "Dinkelmjöl, 1 kg", amt: 2});row2 = Node({product: "Fruktlådan", amt: 1});Rel(order, "detail", row1);Rel(order, "detail", row2);Rel(order, "order_by", peter);peter = graph.get("peter");orders = peter.incomming_rel("order_by");for o in orders:rows = o.outgoing_rel("detail");
  5. 5. MÅNGA RELATIONER GRAFER - TRAVERSERINGAndra som har liknande taggar av sina favoritersom inte är kompisar:MATCH me-[:favorite]->myFavs-[:tagged]->tag<-[:tagged]-theirFavs<-[:favorite]-peopleWHERE me.name = "Joe" AND NOT(me=people)RETURN people.name, count(*) as similar_favsHUR MÅNGA KOMMER PROVA/ÖVERVÄGAANNAN MODELLERING I SITT NÄSTA PROJEKT?HanduppräckningMÅNGA ASPEKTER!PrestandaPlaceringFunktionalitetProduktivitet...
  6. 6. PRESTANDAKRAVSkrivningar / LäsningarVolymerSvarstiderSkalbarhetTransaktionerKONSISTENSAtomicityConsistencyIsolationDurabilityTILLGÄNGLIGHETBasically AvailableSoft stateEventual consistencyKAN INTE FÅ ALLT!Vad passar behoven?ACID <-> BASECAP 2/3
  7. 7. http://blog.nahurst.com/visual-guide-to-nosql-systemsFYSISK LAGINGMinneJournalDiskMulti-diskDISTRIBUTIONInom processEn maskinMulti-maskinMulti-datacenterANSVAREgenMoln plattformMoln tjänst
  8. 8. FUNKTIONALITETAggregeringarTraverseringAffärslogikGeospatial...PRODUKTIVITETEnkel administrationSchema förändringNaturlig representationMÅNGA ASPEKTER?NäveVi behöver inte fundera, vi har ju MegaDb.Ett fingerVi borde kanske tänka mer.Fem fingrarVi borde tänka igenom vilka krav varje system ställer.OLIKA VERKTYGNot Only SQL - komplement!No SQL - nya sätt!New SQL - förnyelse!
  9. 9. ETABLERAD MARKNAD"Evolving DB Landscape" - Aslett http://451research.com/NYCKEL/VÄRDEMapExtrema mängderMånga små läs/skrivKOLUMNERNästlad och ordnad mapExtrema mängderMassiva skrivningarMap-reduceDOKUMENTMap av större datastrukturerMycket funktionalitetBra prestandaWebb, CRUD
  10. 10. SÖKMOTORDokumentSpråk- och synonymkunniga indexGRAFRelationer mellan NoderKomplexa relationerGrym på grafproblem"RELATIONER"TabellerMängdlära, rapporterTransaktionerNEW SQLRelationsdatabaser kan förnyas också...MinnesorienteratDistribueratAlternativ användning av befintliga
  11. 11. ÖVRIGAGISObjectstores...ANNATHybriderEvent StoresTransaction/storage/query seperationPRESTANDA / FUNKTIONALITEThttp://www.neo4j.org/learn/nosqlHUR LAGRA ANVÄNDARSESSIONER?Förslag?
  12. 12. HUR LAGRA PRODUKTKATALOGEN?Förslag?HUR LAGRA KASSAFLÖDET?Förslag?HUR LAGRA KUNDVAGNEN?Förslag?HUR LAGRA ANALYTICS?Förslag?
  13. 13. HUR LAGRA REKOMMENDATIONER?Förslag?HUR LAGRA RAPPORTER?Förslag?KAN INTE ANVÄNDA "ALLT"Användarsessioner -> k/v mem -> Redis?Produktkatalog -> dokument -> Mongodb?Kassaflöde / Finans -> tabeller -> Postgres?Kundvagn -> k/v tillgänglig -> Riak?Analytics -> kolumner mkt skriv -> Cassandra?Analys -> M/R beräkningar -> Hadoop?Rekommendationer -> graf -> Neo4j?Rapporter -> mängd/stat tabeller -> SQLServer?FLER VERKTYG BEHÖVSMer system & modellerProduktivitet, naturlig representationMer data & datorerDistribuerat och prestanda
  14. 14. VAR BÖRJA?Skaffa kunskapFråga "Varför relationsdatabas?"Diskutera lagringHUR KOMMA FRAMÅT?Teknikskifte kräver investeringStrategiska lösningarIntensiva datakravEffektiv utvecklingAnpassa arkitektur och arbetsättRÄTT VERKTYG?NäveVi borde alltid använda SQL / relationsdatabas.Ett fingerVi borde hitta en ny databas.Fem fingrarVi borde använda rätt verktyg för problemet.HYBRIDLAGRING"The era of Polyglot Persistence has begun"- Martin Fowler
  15. 15. GLÖM INTE NYTTAN!"Om du har många bra verktyg tenderar duatt se alla möjligheter som ett behov."- Peter LundbergTACK!"Med rätt verktyg blir jobbet enkelt."

×