• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Thinking beyond RDBMS  - Building Polyglot Persistence Java Applications Devfest Vienna
 

Thinking beyond RDBMS - Building Polyglot Persistence Java Applications Devfest Vienna

on

  • 610 views

Thinking beyond RDBMS - Building Polyglot Persistence Java Applications Devfest Vienna

Thinking beyond RDBMS - Building Polyglot Persistence Java Applications Devfest Vienna

Statistics

Views

Total Views
610
Views on SlideShare
610
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Thinking beyond RDBMS  - Building Polyglot Persistence Java Applications Devfest Vienna Thinking beyond RDBMS - Building Polyglot Persistence Java Applications Devfest Vienna Presentation Transcript

    • Thinking Beyond RDBMS : OPENSHIFT Building Polyglot Persistence Java Applications Workshop PRESENTED BY Shekhar Gulati
    • WHO AM I? • Shekhar Gulati -- OpenShift Developer Evangelist • Java / JavaScript /Python / NoSQL / Cloud Guy • Twitter Handle : shekhargulati • Github https://github.com/shekhargulati • Slides http://www.slideshare.net/shekhargulati
    • AGENDA
    • WHO ARE YOU?
    • ASK QUESTIONS There are no stupid questions only stupid answers. So ask questions
    • NOW WE HAVE CHOICES ... http://nosql-database.org/ lists 150 databases
    • WHY RDBMS? ● Widely used and understood ● Tested in real environments ● Efficient use of storage space if data normalized properly ● Great tools support ● ACID semantics ● Incredibly flexible and powerful query language ● Great framework support
    • RDBMS LIMITATIONS ● Complex object graphs does not map very well with flat tables. ● Difficult to evolve Schema with time. ● Data constraints and JOINs can be expensive at runtime. ● Difficult to scale horizontally.
    • NoSQL Databases to rescue
    • NoSQL TO RESCUE ● Schema-less ● Eventual consistent ● Scales writes and reads ● ● Easy to scale horizontally to add processing power and storage Tries to solve few practical use-cases
    • NoSQL CLASSIFICATION CLASSIFICATION Source http://www.slideshare.net/bscofield/nosql-codemash-2010
    • POLYGLOT PERSISTENCE Using multiple data storage technologies, chosen based upon the way data is being used by individual applications or components of single application. Martin Fowler http://martinfowler.com/articles/nosql-intro.pdf
    • HYPOTHETICAL EXAMPLE http://martinfowler.com/articles/nosql-intro.pdf
    • GET MORE INFO AT
    • APPLICATION http://localjobs-t20.rhcloud.com/
    • TECHNOLOGY CHOICES ● MongoDB – Storing Jobs data ● PostgreSQL – Storing Users data ● Redis – Cache for Users ● Java 7 – Spring framework , Spring Social, Spring MongoDB, Spring Security , Spring Redis , etc. ● OpenShift ● Git ● Twitter Bootstrap ● jQuery ● Searchify : Full-text Search as a Service
    • MONGODB ● Document Oriented database – ● JSON-style documents Schema-less – Each document is heterogeneous, and may have completely unique structure compared to other documents. ● Fast and horizontally scalable ● Rich query language
    • MONGODB TERMINOLOGY Database → Database Table → Collection Row → Document Index → Index
    • WHY MONGODB? ● Easy to get running ● Open Source ● Active community ● Rich documents ● Geospatial indexing ● Writes are very fast. You can customize it using WriteConcern
    • RICH DOCUMENT
    • GEOSPATIAL INDEXING BASICS  What is it for?    Find all the MongoDB jobs near me – Proximity Queries Find all the MongoDB jobs within Colombo – Bounded Queries Find all the MongoDB job at this location – Exact Queries ● Supports only two dimensional indexes.  You can only have one geospatial index per collection.  By default, 2d geospatial indexes assume longitude and latitude have boundaries of -180 inclusive and 180 non-inclusive (i.e. [-180, 180)) 21
    • HOW TO MAKE IT WORK 1) Put your coordinates into an array { loc : [ 50 , 30 ] } //SUGGESTED OPTION { loc : { x : 50 , y : 30 } } { loc : { foo : 50 , y : 30 } } 1) { loc : { lon : 40.739037, lat: 73.992964 } } 2) Make a 2d index db.places.ensureIndex( { loc : "2d" } ) 3) 22 If you use latitude and longitude as your coordinate system, always store longitude first. MongoDB’s 2d spherical index operators only recognize [ longitude, latitude] ordering.
    • OpenShift is PaaS by Red Hat Multi-language, Auto-Scaling, Self-service, Elastic, Cloud Application Platform
    • WHY OPENSHIFT? ● ● Supports MongoDB , PostgreSQL ,and MySQL Multi-language support. Supports Java, Node.js, Perl, Python, PHP and Ruby ● Extensible via DIY and cartridges ● No need to learn anything new ● Open source – OpenShift Origin ● Scalable ● FREE!
    • FLAVORS OF OPENSHIFT Open Source Project Public Cloud Service origin Onpremise or Private Cloud Software
    • OUR STACK 26
    • Let's build the application 27
    • OPENSHIFT – GETTING STARTED Go to ● https://openshift.redhat.com/app/account/new Promo code is DEVFEST2013 Create namespace ● Install rhc command line utility ● Run rhc setup command ● 28
    • DEMO : LOCALJOBS APP Lot of other tasks you can do with rhc – tail log, app management, cartridge management , ssh management , namespace management, etc. Run rhc -h for details 29
    • HOW IT FITS
    • ITS All GIT $ git rm -rf src pom.xml $ git commit -am “delete template app” $ git remote add upstream -m master https://github.com/shekhargulati/localjobsdemo.git $ git pull -s recursive -X theirs upstream master Source code https://github.com/shekhargulati/localjobs-demo 31
    • git push 32
    • Code Walkthrough 33
    • QUESTIONS?
    • DONE!