Какую лучше СУБД выбрать под разработку большого проекта? Mongo DB с ее автоматическим привлекающим внимание тысяч программистов, как пчел на мед, шардингом и вообще современными возможностями? MySQL и аналоги ..? SQLite3? Но у нее есть лимиты памяти баз данных и шардинг никакого смысла в увеличении скорости не придаст.
-
1А как тут состыкуются большой проект и sqlite? Автор что-то нехорошее мутит. Кхм, кхм. – lampa Nov 18 '12 at 07:30
-
1Вы простите. Я понял уже, что SQLite3 не подойдет. – Алюминиевый Робот Nov 18 '12 at 08:40
-
Mongo DB, как вы, надеюсь, знаете, использует для запросов свой специфичный язык( это, как SQL в MySQL, например, но только не SQL =) ), поэтому придется изучать этот специфичный язык, но зато про атаки типа SQL Injection можно вовсе забыть...но вместе с этим MongoDB несет в себе и другие уязвимости... – Salivan Nov 18 '12 at 09:26
-
Знал. Но надо же когда-нибудь развиваться. Хотя, как я понял Вас, это не развитие, а скорее более удобная модель. – Алюминиевый Робот Nov 18 '12 at 14:20
-
-4оракл – kindos Nov 19 '12 at 07:19
8 Answers
Для начала нужно определиться с каким типом БД вы будете работать. По собственному опыту могу сказать, что нельзя ответить на вопрос "что лучше: монго или sql". Нужно исходить из поставленной задачи.
Документо-ориентированные БД (mongo, couch) будет лучше если в системе вам часто приходится копировать записи с их зависимостями. Или, например, если не все записи имеют одинаковые поля.
Если же вам приходится обрабатывать массивы данных для подсчёта неких статистических данных (например, среднее состояние кассы всех компаний за N-ый период), то здесь к месту реляционный подход (mysql, postgresql).
Поэтому, чтобы сузить круг выбора БД, для начала выберите её тип исходя из поставленной вам задачи.
- 1,001
-
-
истина посередине. ) в больших проектах можно разделить данные на SQL и NoSQL базы.. к примеру. справочники, журналы и документы хорошо хранить в NoSQL, в то время как регистры и отчеты в SQL. – MuFF Nov 22 '12 at 05:59
Есть большая тройка: Oracle, MS SQL Server и IBM DB2. Все остальное это детские шалости, ну разве что MySQL и Postgres близки к этим гигантам.
Когда вы говорите большой проект, то видимо речь идет не столько о том, что много данных, но видимо и о том, что много серверов, много коннектов. По человечески умеют делать кластеризацию только указанные монстры, а всякая мелочь вроде MongoDB и проч. - не смешите. Ну запихнете вы туда 100 гигов (и то сомневаюсь), а дальше то что? Ну про SQLite вообще умолчу: ключевое слово здесь lite - то есть легкий, маленький. Хорошо, хоть не упомянули про Hypersonic SQL :)
Когда проект большой на первый план выходит не столько способность вмещать данные, столько возможность "держать" нагрузку, использование фич специализированных серверных процессоров, возможность кластеризации, бэкапа, репликации данных между инстансами. Ну и не забываем про поддержку. Какую вы поддержку получите с MongoDB и тем паче с SQLite? Форум полусумасшедших разработчиков-индусов?
В общем смотрите в сторону большой тройки. Я лично, предпочитаю Oracle.
P.S. Почитав про цели:
Ну если говорить о базе жителей города и устройстве у них лк по мониторингу электричества, например.
мне становится страшновато за жителей города или за Чубайса, поскольку счета за электричество с SQLite'ом точно не будут оплачены...
- 81,300
-
- Спасибо за профессиональный совет.
- И Вы туда же. Я лишь выясняю. Да что там говорить. Главное же, бросить камень в чужой огород из своего.
– Алюминиевый Робот Nov 23 '12 at 13:13 -
Mysqli или PDO, смотря какая связка.
В данный момент для большого проекта, я выбрал MySQLi + PHP + Jquery + Memcache
- 35
-
Опа. Спасибо. Получается, что MySQLi может быть объектно-ориентированным, но в то же время она реляционная. И может делиться на секции. Век живи - век учись. – Алюминиевый Робот Nov 18 '12 at 08:39
-
@morfei, а для мелкого проекта вы бы, значит, Jquery не выбрали, как и весь JavaScript, да? Ну HTML еще для "большого проекта" осталось выбрать =) – Salivan Nov 18 '12 at 09:23
-
Он, наверное, хотел сказать, передачи запросов и данных через AJAX, для снижения нагрузок. – Алюминиевый Робот Nov 18 '12 at 14:22
-
4@qsad, Ни Mysqli, ни PDO не являются СУБД- это обертки над api mysql. Будьте внимательнее. – nolka Nov 22 '12 at 04:35
-
-
-
-
1На то, что мы успели наесться говна с mysql в своем проекте, когда часть логики нужно было реализовать средствами СУБД – nolka Nov 19 '12 at 03:15
-
2
@qsad, что значит (количественные характеристики) большой проект?.
Во многих больших проектах (кластеры из несколько серверов и систем хранения в SAN, терабайты дискового пространства) используют Oracle, DB2 или MS-SQL.
Кое с какими данными на эту тему можно ознакомится здесь
- 46,098
- 6
- 48
- 116
-
Имелось в виду, что база данных может составить более 32ТБ, а хотелось использовать SQLite3. Вопрос отпал. Спасибо и Вам. – Алюминиевый Робот Nov 18 '12 at 14:22
Лучше использовать то, где у Вас больше всего опыта. И на MySQL можно построить отличные решения. Шардинги, репликации и партиционирование там тоже есть.
- 411
Холивары вокруг того какая СУБД самая-самая — весьма популярный в интернете вид спорта. Большинство ответов тут, увы, именно про это. Дабы не повышать напряжённость постараюсь вовсе не упоминать тут названия различных СУБД.
@qsad, наблюдение за подобными холиварами едва-ли поможет вам разобраться в вопросе, скорее наоборот запутает. Так-же не стоит рассчитывать услышать тут правильный ответ на ваш вопрос. Дело в том что сделать правильный выбор тут можно только зная в подробностях что должна делать система, имея представление об имеющихся ресурсах (людских и материальных). И самое главное: разбираясь в предметной области. К сожалению вынужден констатировать что, судя по вашему вопросу, ваших знаний недостаточно для того что-бы задаваться правильными вопросами (а это наверное самое главное).
Если у вас есть время, мозги, желание и готовность долго изучать что-то не связанное напрямую с решением конкретной задачи — изучите получше эту тему. Базы данных и проектирование восоконагруженных и высокодоступных систем это вообще интересно.
Если «проект нужно сдавать уже вчера», или сама тема вам не интересна — наймите опытного DBA (Database administrator). Хоть я и не представляю как вы отличите адекватного DBA от чёрт-знает кого.
P.S. должен заметить что у меня есть некоторые соображения о том как-бы могла выглядеть подобная система. Но я не стану их озвучивать, учитывая что: во-первых мои соображения основываются на представлении о целевой системе сложившемся из обрывков информации предоставленных @qsad и гадании на кофейной гуще, во-вторых моего опыта и познаний очевидно недостаточно что-бы проектировать такие системы.
- 1,650
Работаю с БД размером ~70 Гб, строк больше 300 млн., и это MySQL! Проблем нет!
- 486
-
Поздравляю. Но не факт, что у других будет так же. Кроме размеров есть и другие параметры. Например частота обновления данных, добавления/удаления, время реакции и пр. – alexlz Nov 20 '12 at 11:14
-
частота обновления данных, добавления/удаления каждую секунду...))
просто люди начитаются что вот какая-там MongoDB мега супер крутая, а им это не нужно! Достаточно старого доброго мускула (версию лучше последнюю кончено) и грамотно продуманную структуру БД, а также её конфиг.
P.S. один из самых популярных сайтов в мире FB работает именно на MySQL!
– Epexa Nov 20 '12 at 11:19 -
1@ARISTARH, да вы правы, что старого доброго мускула в основном хватает. Но вы не совсем корректны по поводу FB! Фейсбук использует MySQL и Cassandra. Ведь у каждой базы свои "фишки". А вообще если интересно что использует фейсбук, то почитайте http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/ – Яковлев Андрей Nov 20 '12 at 16:59
-