What is the best DBMS to choose for the development of a large project? Mongo DB with its automatic attracting the attention of thousands of programmers, like bees on honey, sharding, and generally modern features? MySQL and analogues ..? SQLite3? But it has database memory limits and sharding does not make any sense in increasing the speed.
Closed due to the fact that it is necessary to reformulate the question so that it was possible to give an objectively correct answer by the participants Max Mikheyenko , Vladimir Glinskikh , PashaPash ♦ , Regent , xaja 9 Oct '15 at 16:35 .
The question gives rise to endless debates and discussions based not on knowledge, but on opinions. To get an answer, rephrase your question so that it can be given an unambiguously correct answer, or delete the question altogether. If the question can be reformulated according to the rules set out in the certificate , edit it .
- And how does a big project and sqlite fit together? The author of something bad stirs up. Ahem, ahem. - lampa
- You forgive. I already understood that SQLite3 will not work. - Aluminum Robot
- Mongo DB, as you, I hope, know, uses its own specific language for queries (this is, like SQL in MySQL, for example, but not SQL =)), so you have to learn this specific language, but you can do about SQL Injection attacks forget ... but with this, MongoDB carries other vulnerabilities ... - Salivan
- Knew But we must ever evolve. Although, as I understand you, this is not a development, but rather a more convenient model. - Aluminum Robot
8 answers
First you need to decide what type of database you will work with. From my own experience I can say that it is impossible to answer the question "which is better: mongo or sql". It is necessary to proceed from the task.
Document-oriented databases (mongo, couch) would be better if you often have to copy records with their dependencies in the system. Or, for example, if not all entries have the same fields.
If you have to process data arrays for calculating certain statistical data (for example, the average state of all companies ’cash desk for the N-th period), then here is the relational approach (mysql, postgresql).
Therefore, in order to narrow the circle of choice of a database, first select its type based on your task.
- The right approach. Thank you. - Aluminum Robot
- the truth is in the middle. ) in large projects, you can divide the data into SQL and NoSQL databases .. for example. directories, journals and documents are well stored in NoSQL, while registers and reports in SQL. - MuFF
There are big three: Oracle, MS SQL Server and IBM DB2. Everything else is childish pranks, well, except that MySQL and Postgres are close to these giants.
When you are talking about a large project, it seems that it’s not so much that there is a lot of data, but also that there are a lot of servers, a lot of connections. Humanly, only the indicated monsters can do clustering, and every little thing like MongoDB and so on. - do not make me laugh. Well, you stuff 100 gigs there (and I doubt it), and then what? Well, I’ll keep silence about SQLite: the keyword here is lite - that is, light, small. Well, at least they didn't mention Hypersonic SQL :)
When a large project comes to the fore not so much the ability to contain data, so much the ability to "hold" the load, the use of features of specialized server processors, the possibility of clustering, backup, data replication between instances. Well, do not forget about support. What support do you get with MongoDB and even more so with SQLite? Forum of half-crazy Indian developers?
In general, look towards the big three. I personally prefer Oracle.
PS After reading about the goal:
Well, if we talk about the base of the inhabitants of the city and the device they have on electricity monitoring, for example.
I get scared for the residents of the city or for Chubais, since the electricity bills with SQLite will not be paid for sure ...
- 1. Thanks for the professional advice. 2. And you there too. I just find out. What can I say. The main thing is to throw a stone in someone else's garden. - Aluminum Robot
- Come on, I'm joking - never mind ... - Barmaley
Mysqli or PDO, whichever is a bunch.
At the moment for a large project, I chose MySQLi + PHP + Jquery + Memcache
- Oops. Thank. It turns out that MySQLi can be object-oriented, but at the same time it is relational. And can be divided into sections. Live and learn. - Aluminum Robot
- @morfei, and for a small project, you wouldn’t choose Jquery, like all JavaScript, right? Well, HTML is still for the "big project" left to choose =) - Salivan
- He probably wanted to say, transfer requests and data via AJAX, to reduce the workload. - Aluminum Robot
- four@qsad, Neither Mysqli, nor PDO are a DBMS - these are wrappers over api mysql. Be careful. - nolka
@qsad , what does (quantitative characteristics) a big project mean ? .
Many large projects (clusters of several servers and storage systems in a SAN, terabytes of disk space) use Oracle, DB2, or MS-SQL.
Some information on this topic can be found here.
- It was meant that the database could be more than 32TB, but I wanted to use SQLite3. The question has disappeared. Thank you too. - Aluminum Robot
No mysql. Use postgres!)
- With horizontal partitioning? - Aluminum Robot
- Although not the essence. He has it built in there. Thank. - Aluminum Robot
- @nolka, what are you relying on, so clearly stated? - Salivan
- oneThe fact that we had time to eat shit with mysql in our project, when part of the logic needed to be implemented by means of a DBMS - nolka
- 2support! postgres taxis! ) let holivar begin! ) - MuFF
It is better to use where you have the most experience. And on MySQL you can build great solutions. Sharding, replication and partitioning there too.
Holivary around what the DBMS is the most-very popular on the Internet sport. Most of the answers here, alas, it is about that. In order not to increase tension, I will try not to mention here the names of various DBMS.
@qsad , observing such holivars will hardly help you understand the question, rather it will confuse you. So you should not expect to hear here the correct answer to your question. The fact is that you can make the right choice here only if you know in detail what the system should do, having an idea about the available resources (human and material). And most importantly: understanding the subject area. Unfortunately, I have to state that, judging by your question, your knowledge is not enough to ask the right questions (and this is probably the most important thing).
If you have time, brains, desire and willingness to study something for a long time that is not directly related to the solution of a specific task - study this topic better. Databases and designing load-loaded and highly accessible systems are generally interesting.
If “you need to take the project yesterday”, or the topic itself is not interesting for you, hire an experienced DBA (Database administrator). Although I can not imagine how you distinguish an adequate DBA from the devil knows who.
PS I should note that I have some thoughts about how such a system could look like. But I will not voice them, considering that: firstly, my considerations are based on the idea of ​​the target system formed from the pieces of information provided by @qsad and fortune telling on the coffee grounds, secondly, my experience and knowledge is not enough to design such systems.
I work with a database of ~ 70 GB in size, there are more than 300 million rows, and this is MySQL! No problem!
- Congratulations. But not the fact that others will be the same. In addition to size, there are other options. For example, the frequency of data updates, add / delete, reaction time, etc. - alexlz
- the frequency of updating data, adding / deleting every second ...)) people just read that there’s some kind of MongoDB mega super cool, but they don’t need it! Enough of the good old muscle (the latest version is better) and well-thought-out database structure, as well as its config. PS One of the most popular sites in the FB world works on MySQL! - Epexa
- one@ARISTARH, yes you are right, that the good old muscle is basically missing. But you are not entirely correct about the FB! Facebook uses MySQL and Cassandra. After all, each base has its own "chips". In general, if you are interested in what is using facebook, then read royal.pingdom.com/2010/06/18/the-software-behind-facebook - Yakovlev Andrey
- Yes, I know, I read it somehow on a hacker ru xakep.ru/post/55510 - Epexa