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.
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
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
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
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
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!
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