Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cassandra Or MongoDB For Our Location Based Application

We are looking at using a NoSQL database system for a large project. Currently, we have read a bit about MongoDB and Cassandra, though we have absolutely no experience with either. We are very proficient with traditional relational databases like MySQL and Microsoft SQL, but the NoSQL (key/value store) is a new paradigm for us.

So basically, which NoSQL database do you guys recommend for our use?

We do both heavy writes and reads. Basically we have tens of thousands of devices that are reporting:

device_id (int), latitude (decimal), longitude (decimal), date/time (datetime), heading char(2), speed (int)

Every minute. So, at peak times we need to be able to process hundreds of writes a second.

Then, we also have users, that are querying this information in the form of, give me all messages from device_id 1234 for the last day, or last week. Also, users do other querying like, give me all messages from device_1234 where speed is greater than 50 and date is today.

So, our initial thoughts are that MongoDB or Cassandra are going to allow us to scale this much easier then using a traditional database.

A document or value in MongoDB or Cassandra for us, might look like:

{
   device_id: 1234,
   location: [-118.12719739973545, 33.859012351859946],
   datetime: 1282274060,
   heading: "N",
   speed: 34
}

Which system do you guys recommend? Thanks greatly.

like image 490
Justin Avatar asked Aug 20 '10 03:08

Justin


People also ask

When should I use MongoDB or Cassandra?

Hence, the choice between the two depends on how you plan on querying the data. If the required data can be accessed using a single Primary Key, Apache Cassandra would be suitable but if more complex queries to extract specific values in dynamic data is required, MongoDB should be preferred.

Why is Cassandra better than MongoDB?

Cassandra has the ability to create secondary indexes on other columns than the defined primary key. However, Cassandra will not allow filtering on other columns without a secondary index, while in MongoDB, the query language can filter on non-indexed fields as well.

Is MongoDB same as Cassandra?

Cassandra is designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. 2. MongoDB : MongoDB is a cross-platform document-oriented and a non relational (i.e NoSQL) database program.


1 Answers

MongoDB has built-in support for geospatial indexes: http://www.mongodb.org/display/DOCS/Geospatial+Indexing

As an example to find the 10 closest devices to that location you can just do

db.devices.find({location: {$near: [-118.12719739973545, 33.859012351859946]}}).limit(10)
like image 113
mstearn Avatar answered Nov 02 '22 21:11

mstearn