Cosntructing a Jobs website - mongodb

I have started developing website like naukri.com and i am using spring boot technology. When applicants register, i need to store the images and documents etc., in MySql database.
Is it right to store the images and documents in MySql database ? How much data can I store in Mysql, ie: how many no of applicants can I store?
I am thinking of using either Mongodb or Cassandra instead of MySql database. When the applicants grow to a bigger size. Which database is used to store large number of applicants documents? Which is the correct database for storing more number of records and retrieval should be fast?
I am thinking of using cloud to store the documents, but i have never used any cloud technology. Could you please help me which database do i need to use or any open source cloud technology I need to use!
Thanks in advance.

MySQL and Mogo are two radically different ways of handling data. If you will build your application based on relational database it could be very difficult to migrate to document based database, when the amount of data will be significant.
There's no good answer to your question. Both database engines have some prons and cons.

Related

NoSQL development/production database

I am in charge of the database for an application that we are developing and I am starting to get confused on how to use my development database.
I understand that having two separate databases is useful, helps while developing new features or change the database structure and this is why we actually have a production database and a development database. However as the project grows I am slowly getting confused on how I should use the development database and the development environment as a whole.
Our data is stored in Firestore which is a NoSQL database. We use it to store real time data that need to be accessed both by users and by a growing number of scripts that process the data to create some more. This real time data is also useful while developing to monitor the behavior related to the changes we made for a specific feature (on our test app).
So my question is :
Should my development database be a copy of the production database (copy every insert, update, delete ...) and should we duplicate all our scripts (one on the production environment and one on the development environment) that process the data ? In which case I would need to create connexions between each database and the costs related to storing and processing the data would double.
Or should I just use the development database as a database with the same structure as my production database, with less data and just pull some data or activate some pipelines to redirect some real time data when I need to test a new feature or a change in my database.
Also if you know a good book that I could read on the subject I'd take it !
Thank you,

Building a Social Network on a database: Graph vs. Relational.... Or Both?

I am currently building the REST API backend for a social networking app that I am creating. The backend will be written in node js. I am trying to decide whether I should use a Graphing DB (Neo4J) or MongoDB. In Neo4J i will be able to query relationships a lot faster and will be able to provide recommendations and such much easier. However, MongoDB's document structure means I will have a lot more flexibility in storing data such as permissions, user's posts, etc. Would it be wise to build a MongoDB database with data, and then store references to the documents in a Neo4J database, allowing me to pull recommendations, but still providing the document flexibility???
Since Neo4j is a schemaless DB (like MongoDB), it seems Neo4j satisfies all of your requirements.

Ionic mobile app using Cassandra, what about local storage?

I am working on a project using Ionic for the mobile side, I have a web app as well linked to a Cassandra database.
I need data synchronization between the mobile device (local storage) and the server-hosted Cassandra database. I use the cassandra-driver to connect to the database but then I realize how problematic it is to convert the data to an other type of database (SQLite for example).
Should I rather use an other database than Cassandra to make the synchronization easier ? (I need a noSQL solution)
Choice of the database depends on type of data you want to store. Cassandra is a column oriented database. It has great performance when you have to deal with large amount of data, but has many limitations related to the queries you need in order to pull data. For that reason, it might require additional efforts to develop something that you could easily do with some other database. So, the real question is do you really need Cassandra.
If you are using it only for mobile application, I don't think you will have so much data to exploit Cassandra benefits.
In your place, I would rather consider some other databases, such as MongoDB in case JSON is appropriate format for your data or Redis if you data is key/value pairs.

How do we restrict Mongodb's automated caching to a specific collection

We've just started using Mongodb to replace many of the core sql tables in our app. We'd like to use the same Mongodb instance to store data on performance and usage as a replacement for google analytics. However we don't want this collection automatically using up system memory that could have gone to the primary collection.
Is there a way to control mongodb's automated caching functionality?

Is NoSQL suitable for Selling Tickets Web Application?

I want to write a high scalable web application for selling event tickets. I want to use NoSQL database, like Big Table or MongoDB and Cloud Service like Google App Engine (GAE) or Amazon Elastic Compute Cloud (Amazon EC2)
Is it posible using this type of database to be sure that two client will not be able to buy a ticket for the same place simultaneously? Or may be I will have to use RDBMS database and forget about Google App Engine?
Things like GAE's datastore can still support transactional semantics, for example:
http://code.google.com/appengine/docs/python/datastore/transactions.html
So yes, it is possible to do what you're seeking to do. (Note - GAE's Datastore is not exactly NoSQL, since it uses SQL-like queries.)
I have a problem with this question. Not all NoSQL databases are created equally, and different NoSQL databases have different ways they store data. Generally the thing you should be worried about are: data is actually written to disk and not just into memory. Most NoSQL databases can do this but not by default. Let's just say this is not a problem, you can usually tell the database like MOngo or Cassandra to write data to disk, can even tell how many servers at minimum the data should be written to.
The problem is that you may not get a true transactional support. When you deal with ecommerce it's important to have all or nothing type of transation where several operations either succeed completely or rolled back. There must be absolutely no chance that only part of your data is saved. For example, if you need to write data to more than one table (collection or document in NoSQL lingo), if server goes down in the middle of the process and your data is only written to one table, that's usually unacceptable in ecommerce.
I am not familiar with all NoSQL databases, but the ones I know don't have this option yet.
MySQL, on the other hand, does.
If transactional support or lack of it does not bother you, then I think its OK to use NoSQL as long as you tell it to save data to disk and not just into memory.
The answer is 'maybe.'
Depending on what you're trying to build, you many be able to use some of the techniques in this post:
http://kylebanker.com/blog/2010/06/07/mongodb-inventory-transactions/
Using something like get_or_insert you can easily ensure that two clients are not receiving the same resource simultaneously on Google App Engine. However, there are big differences between GAE and a RDBMS, so make sure you study them further before you make a decision.