Hey Krunal, your requirement sounds pretty clear and specific to what you want to do with that data. My recommendation to you, would be to use MongoDB. Since schema-less IO is faster in MongoDB, your general speed of reading / writing from and to the database would be quick. Additionally, the aggregate framework is very powerful with large data so that is also something that you can use in computing your analytics.
I see what you're going through and I extend my hands to you. I felt the same frustration after almost 1.5 years of working with Django and Node.js in the parallel. And since the last one year, I've transitioned into Spring Boot. I think its fair to say, that its quite different when you're going from Django background as a framework, but otherwise. I think it's one of the robust ones out there. Scalability is seamless and you get most of the things out of the box or easily supported by dev dependencies. You should definitely check it out! :)
I think the point of difference is very clear in the sense that if you're looking to manage relationships in your application, you might as well do it with a database designed and architected to do so. MongoDB is great, but managing complex relationships becomes application logic which introduces more technical debt, in my personal opinion. No matter what programming language you end up using (Postgres works well with both Python and Node.js), you should also look up how easy it will be to manage code and database designs once you begin development. Hope this helps you!
I am trying to write a cloud function that needs to perform a specific task. I will be using AWS Lambda for executing the function. I have 3 choices for stacks to write the lambda function: Plain Java, Node.js, or a Spring Boot stack. I have an idea of the time that the lambda would take to execute for a Hello World example for each of these stacks, and based on that, it is a close competition between Java and Node.js. I want to get some insight into what to chose and also how it would affect if my lambda would need scaling.
Hi Nikhil, I agree either Node.js or Java can be used to write the AWS lambda function. As you didn't say the type of task is going to be performed in AWS function. I would recommend Node.js if the task has to run asynchronous (i.e) Don't wait and simple continue with the next request.
Some difference between Node JS and Java
- Node JS is open source where as Public updates for Oracle Java SE 8 released after January 2019 will not be available for business, commercial, or production use without a commercial license, as Oracle announced.
- Node.JS uses asynchronous programming language, so its easier to write and executions is non blocking.
Agreed, however my task is not asynchronous in nature. Although, its still a lightweight task so I think this argument would still apply. Thanks for your insight!
I find Spring Boot is the most productive environment, and written properly, it is fast. However, speed is the least of your concerns. You should be considering support and maintenance, along with time to market. The best tool for the job is the one that you can support 5 years in to the future. It is the one that will return dollars from customers soonest. You can always scale up your AWS Lambda servers to get more power.
I think its pretty great that you're striving out for a full stack approach. Your idea is very decent and I think you should definitely go ahead with the database choice. However, in order to ease your development effort, you should checkout Strapi.js. It's a lightweight headless CMS purely built in Node.js. It supports almost all of the major database integrations and it also provides a pretty decent CMS out of the box for you to work with. Not only that, it supports rest APIs as well. Checkout Strapi