Зачем требуются различные СУБД, если можно использовать структуры данных языка, например словари и списки в питоне?
=====================================================================================================================

 С помощью словарей, списков, множеств, кортежей можно полностью заменить базу данных для каких-либо задач. Так зачем заморачиваться, изучать различные бд, субд, если прекрасно владеешь тем же питоном? Вопрос возможно покажется глупым для вас, но мне действительно интересно, зачем люди используют бд? Из-за скорости? 

 Если на структурах языка реализовать весь набор функций, предоставляемых СУБД, то получится новая СУБД. Зачем тратить время и силы на написание СУБД, если есть уже готовые? 

 1. Ядро СУБД работает с данными в иной структуре, нежели вы работаете со списками и всякими кортежами.   

СУБД может обрабатывать сильно больше данных и сильно быстрее, чем вы делаете это в питоне, как минимум благодаря индексам (почитайте про индексы).  

2. Кроме того, ваши множества и кортежи надо где-то хранить, где? В виде .txt или .json файлика на компе? Не кажется ли вам, что это немного не надежно?   

3. В БД можно выставить множество ограничений и проверок, например на уникальность данных (чтобы у каждого человека был свой id), на то, чтобы поступающие данные соответствовали нужным типам, проверки на NULL значения, как вы все это будете делать через файлики .txt?  

4. В БД есть понятие транзакции, чего ваши файлики вам разумеется тоже не дадут.  

5. Данные с помощью СУБД легко читать, так как они представлены в табличной форме, к ним удобно применять фильтрации, сортировки, различные соединения таблиц между собой.  

6. И еще десяток различных преимуществ, о которых даже нет смысла рассказывать. 

 Из-за ACID, ну плюс еще SQL :-) 

 Основные причины:  

1. Данных много и они не помещаются в оперативной памяти. А данные со временем накапливаются. Поэтому если проект не умрет в первый год, то со временем придет к этой ситуации.
2. Данные используются несколькими приложениями одновременно. Или несколькими процессами одного приложения
3. Данные в ОЗУ теряются при крахе процесса / ОС / отключении света. Для большинства приложений это неприемлемо.

 

 Причин много, для мелких проектов можно хоть в .txt писать. Но на более крупных уже не обойтись без полноценной БД. Представьте, что все пользователи вконтакте, их посты, сообщения, фотографии, музыка и тонна других вещей хранятся в одном словаре `users` в питоне. 

[bituke](http://qna.habr.com/user/bituke), внесу и я свои "пять копеек".  

Есть классный доклад от **Реймонда Хеттинджера** про словари. Посмотрите его.   

В своём выступлении Реймонд рассказывает про словари в Python и проводит аналогию с базами данных.  

[<<Ссылка на доклад>>](https://youtu.be/37S53yFg9wc?list=PLungh_Npcg_qvUzkxJiC5W92WFKLsjecL)  

**Состав доклада: 90% питона, 10% юмора и... не содержит ГМО)).**