I have a corpus of job descriptions and another corpus of CVs of applicants. I plan to implement a matching system using machine learning algorithms, to find top 5 or top 10 applicants for each job description. Should I store the data in a document oriented NoSQL db (MongoDB) or stick to SQL.

Given that the data I have is semi-structured at best, I feel a NoSQL db will offer more flexibility. I would appreciate opinions on this.

  • $\begingroup$ Are they really that unstructured? Everybody has a name, contact information, and a list of jobs and skills. You can leave unfilled fields blank. Seems rather structured to me. The question is: what kind of machine learning do you want to do with the information? I'd stick with SQL. $\endgroup$
    – Emre
    Mar 17, 2016 at 18:35

1 Answer 1


I would use SQL and create a set of structured fields that are common across all applications (name, school, years of experience, job they are applying for, etc.) with a field containing the raw application for you 'semi-structured' part of the data. You can always do something fancy with the raw application field, but if you want to get some summary statistics quickly then SQL is the proper route.

In general, thinking carefully about your schema up front will pay big dividends in the future. I would recommend NoSQL only if you really have no idea how to structure things and are pressed for time. Even getting a list of the keys in a collection requires MapReduce.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.