NoSQL Distilled - GOTOpia

Transcription

NoSQL DistilledA guide to polyglot rks Inc.Tuesday, June 11, 13

Why RDBMS?Tuesday, June 11, 13

ACID TransactionsTuesday, June 11, 13AtomicityConsistencyIsolationDurability

Standard Query InterfaceTuesday, June 11, 13

Interact with manylanguagesTuesday, June 11, 13

Everyone knows SQLTuesday, June 11, 13

Everyone knows SQLTuesday, June 11, 13

Limit less indexingTuesday, June 11, 13

Handles many data modelsTuesday, June 11, 13

Why NoSQLTuesday, June 11, 13

Schema changes are hardTuesday, June 11, 13

ordersID: 1001customer: Annline items:customers03212935332 48 9603216019121 39 39order lines01314950541 51 51payment details:Card: AmexCC Number: 12345expiry: 04/2001credit cardsImpedance mismatchTuesday, June 11, 13

BillingBillingIntegration DatabaseApplication Databaseweb serviceInventoryInventoryApplication vs IntegrationdatabasesTuesday, June 11, 13

Running on clustersTuesday, June 11, 13

Un-Structured DataTuesday, June 11, 13

Un-Even rate of data growthTuesday, June 11, 13

Domain ModelsTuesday, June 11, 13

Domain driven data modelsTuesday, June 11, 13

RDBMS dataTuesday, June 11, 13

Aggregate model(Embedding objects)Tuesday, June 11, 13

// in customers{"customer": {"id": 1,"name": "Martin","billingAddress": [{"city": "Chicago"}],"orders": [{"id":99,"orderItems":[{"productId":27,"price": 32.45,"productName": "NoSQL txnId":"abelif879rft","billingAddress": {"city": "Chicago"}}],}]}}Aggregate DataTuesday, June 11, 13

Aggregate model(Referencing Objects)Tuesday, June 11, 13

// in [{"city":"Chicago"}]}// in uctId":27,"price": 32.45,"productName": "NoSQL txnId":"abelif879rft","billingAddress": {"city": "Chicago"}}],}Tuesday, June 11, 13Aggregate data

Aggregate OrientationTuesday, June 11, 13

RDBMS’s have no concept ofaggregatesTuesday, June 11, 13

Aggregates reduce the needfor ACIDTuesday, June 11, 13

Better for clusters, can bedistributed easilyTuesday, June 11, 13

Key-ValueDocumentColumn-FamilyTuesday, June 11, 13

Key Value DatabasesTuesday, June 11, 13

Key-ValueDatabase One Key-One Value Value is opaque to database Like a Hash Some are distributedTuesday, June 11, row-idkey

“key” (VIN)JTTDR Tuesday, June 11, 13“value” (car facts) make#Fordmodel#Mustangyear#2011 .

Document DatabasesTuesday, June 11, 13

DocumentDatabase One Key-One Value Value is visible to database Value can be queries JSON/XML documentsTuesday, June 11, llectionrowdocumentrow idid

“id” (VIN)JTTDR Tuesday, June 11, 13“document” (car facts){ “make”: “Ford”,“model”: “Mustang”,“year”: 2011, }

Column-Family DatabasesTuesday, June 11, 13

Column-FamilyDatabase Data organized as columns Each row has row key Columns have versioneddata Row data is sorted bycolumn nameTuesday, June 11, 13Oracle n-familyrowrowcolumnssame forevery rowcolumns canbe differentfor each row

“id” (VIN)JTTDR Tuesday, June 11, 13“column families”(car facts){ “car”:{“make”: “Ford”,“model”: “focus” }“service”:{ }}

Key-Points AggregateDatabasesTuesday, June 11, 13

Inter-aggregate relationsare hard to maintainTuesday, June 11, 13

Schema-less means implicitschemaTuesday, June 11, 13

Graph DatabasesTuesday, June 11, 13

Tuesday, June 11, 13

GraphDatabases Is multi-relational graph Relationships are firstclass citizens Traversal algorithms Nodes and Edges can havedata (key-value pairs)Tuesday, June 11, 13

Graph databases work bestfor data with complexrelationsTuesday, June 11, 13

Key-Value Database UsageTuesday, June 11, 13

Session StorageTuesday, June 11, 13

User Profiles/PreferencesTuesday, June 11, 13

Shopping CartTuesday, June 11, 13

Single user analyticsTuesday, June 11, 13

Document Database UsageTuesday, June 11, 13

Event LoggingTuesday, June 11, 13

Prototype developmentTuesday, June 11, 13

eCommerce ApplicationTuesday, June 11, 13

Content ManagementApplicationsTuesday, June 11, 13

Column-Family DatabaseUsageTuesday, June 11, 13

Large write volumeTuesday, June 11, 13

Content ManagementTuesday, June 11, 13

eCommerce ApplicationTuesday, June 11, 13

Graph Database UsageTuesday, June 11, 13

Connected DataTuesday, June 11, 13

Routing things/moneyTuesday, June 11, 13

Location ServicesTuesday, June 11, 13

Recommendation enginesTuesday, June 11, 13

Schema-less really?Tuesday, June 11, 13

Schema-free does not meanno schema-migrationTuesday, June 11, 13

Schema is implicit in codeTuesday, June 11, 13

Data must be migrated,when schema in code ischangedTuesday, June 11, 13

All data need not bemigrated at the same time(lazy migration)Tuesday, June 11, 13

Polyglot PersistenceTuesday, June 11, 13

Use different data storagetechnology for varyingneedsTuesday, June 11, 13

Can be across theenterprise or in singleapplicationTuesday, June 11, 13

Encapsulate data accessthrough servicesTuesday, June 11, 13

e-commerce platformInventoryandItem PriceShopping cart andsession dataCustomer socialgraphCompletedOrdersSession/Cart storageser viceOrder persistence ser viceKey-Value storeDocument storeTuesday, June 11, 13Inventory and Priceser viceNodes and Relationsser viceRDBMS(Legacy DB)Graph store

e-commerceplatformSearchrequestsSession dataSOLRCompletedOrdersShopping cartdataUpdate IndexedDataRDBMSUpdate indexed data,batch or realtimeTuesday, June 11, 13

Speculative Retail Web logReportingAnalyticsUser wler.com/bliki/PolyglotPersistence.htmlTuesday, June 11, 13

ExperienceTuesday, June 11, 13

e-learning (before)Tuesday, June 11, 13

e-learning (after)Tuesday, June 11, 13

e-commerce (before)Tuesday, June 11, 13

e-commerce (after)Tuesday, June 11, 13

How do I choose?Tuesday, June 11, 13

Choose for programmerproductivityTuesday, June 11, 13

Choose for data accessperformanceTuesday, June 11, 13

Choose to stick with thedefaultTuesday, June 11, 13

Choose by testing yourexpectationsTuesday, June 11, 13

Try the databases, they areall open-sourceTuesday, June 11, 13

esday, June 11, 13

NoSQL Distilled A guide to polyglot persistence #NoSQLDistilled @pramodsadalage ThoughtWorks Inc. Tuesday, June 11, 13. Why RDBMS? Tuesday, June 11, 13. ACID Transactions . Why NoSQL Tuesday, June 11, 13. Schema changes are hard Tuesday, June 11, 13. line items: customer: Ann 0321293533 2 48 0321601912 1 39 0131495054 1 51 96 39 51