Your SlideShare is downloading. ×
Thinking beyond RDBMS  - Building Polyglot Persistence Java Applications Devfest Vienna
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Thinking beyond RDBMS - Building Polyglot Persistence Java Applications Devfest Vienna

632
views

Published on

Thinking beyond RDBMS - Building Polyglot Persistence Java Applications Devfest Vienna

Thinking beyond RDBMS - Building Polyglot Persistence Java Applications Devfest Vienna

Published in: Technology, Education

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

  • Be the first to like this

No Downloads
Views
Total Views
632
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Thinking Beyond RDBMS : OPENSHIFT Building Polyglot Persistence Java Applications Workshop PRESENTED BY Shekhar Gulati
  • 2. 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
  • 3. AGENDA
  • 4. WHO ARE YOU?
  • 5. ASK QUESTIONS There are no stupid questions only stupid answers. So ask questions
  • 6. NOW WE HAVE CHOICES ... http://nosql-database.org/ lists 150 databases
  • 7. 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
  • 8. 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.
  • 9. NoSQL Databases to rescue
  • 10. 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
  • 11. NoSQL CLASSIFICATION CLASSIFICATION Source http://www.slideshare.net/bscofield/nosql-codemash-2010
  • 12. 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
  • 13. HYPOTHETICAL EXAMPLE http://martinfowler.com/articles/nosql-intro.pdf
  • 14. GET MORE INFO AT
  • 15. APPLICATION http://localjobs-t20.rhcloud.com/
  • 16. 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
  • 17. 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
  • 18. MONGODB TERMINOLOGY Database → Database Table → Collection Row → Document Index → Index
  • 19. WHY MONGODB? ● Easy to get running ● Open Source ● Active community ● Rich documents ● Geospatial indexing ● Writes are very fast. You can customize it using WriteConcern
  • 20. RICH DOCUMENT
  • 21. 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
  • 22. 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.
  • 23. OpenShift is PaaS by Red Hat Multi-language, Auto-Scaling, Self-service, Elastic, Cloud Application Platform
  • 24. 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!
  • 25. FLAVORS OF OPENSHIFT Open Source Project Public Cloud Service origin Onpremise or Private Cloud Software
  • 26. OUR STACK 26
  • 27. Let's build the application 27
  • 28. 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
  • 29. 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
  • 30. HOW IT FITS
  • 31. 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
  • 32. git push 32
  • 33. Code Walkthrough 33
  • 34. QUESTIONS?
  • 35. DONE!

×