Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Помощь в выборе СУБД для проекта  [new]
Igor Makaryev
Member

Откуда:
Сообщений: 9
Доброго времени суток!

Необходима помощь в выборе СУБД на стороне Back-End для одного проекта.
Немного погуглил на тему "How to choose database" и т.п., но проблема в том, что слишком слабо знаю особенности разных СУБД.
Поэтому решил обратиться на форум за помощью.

Проект представляет, по сути, интернет-сервис, весь Back-End на нашей стороне, поэтому пользователи с БД явным образом не взаимодействуют.

Основные критерии:
- Не имеет значения, SQL или NoSQL
- Не Oracle DB
- Должна быть возможность взаимодействия с СУБД через C# (.NET)
- Важна масштабируемость, т.к. непонятно кол-во пользователей - возможно, 1 000, а, возможно, 1 000 000
- На стороне Back-End не храним media-контент (ни музыки, ни видео - возможно, немного небольших картинок, не более)
- Важна быстрая обработка запросов и получение результатов (нет возможности ждать лишних 10-20-40 секунд, т.к. проект ориентирован на обычных пользователей, а ждать они не любят)
- Соотношение типов запросов будет примерно таким: Number of SELECT > Number of UPDATE > Number of INSERT
//использую термины SQL, но имею в виду получение результата из БД, обновление уже существующих записей и добавление новых записей

Т.к. я являюсь новичком в сфере DBA, просьба как-то аргументировать предлагаемые варианты, чтобы было понимание : )

Немного поизучав БД, пришёл к выводу, что можно использовать MySQL/PostgreSQL или MongoDB (последняя как раз должна прекрасно масштабироваться).

И еще один вопрос - на какие еще вопросы обычно необходимо отвечать (самому себе) при выборе СУБД для проекта?

Заранее спасибо!
21 сен 13, 17:06    [14867448]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
SERG1257
Member

Откуда:
Сообщений: 2933
автор
И еще один вопрос - на какие еще вопросы обычно необходимо отвечать (самому себе) при выборе СУБД для проекта?
Какую СУБД знает ваш базист?
Какой бюджет, если базиста нет?
21 сен 13, 17:15    [14867457]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Igor Makaryev
Member

Откуда:
Сообщений: 9
SERG1257
автор
И еще один вопрос - на какие еще вопросы обычно необходимо отвечать (самому себе) при выборе СУБД для проекта?
Какую СУБД знает ваш базист?
Какой бюджет, если базиста нет?


Логичный вопрос)
По сути, мы уже настроились изучать СУБД "с нуля"/практически с нуля, т.к. есть возможность потратить время на это.
21 сен 13, 17:40    [14867501]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54803

Igor Makaryev
По сути, мы уже настроились изучать СУБД "с нуля"/практически с нуля,
т.к. есть возможность потратить время на это.

Это будет ваш личный проект, т.е. заказчика как такового нет?

Posted via ActualForum NNTP Server 1.5

21 сен 13, 18:05    [14867547]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Igor Makaryev
Member

Откуда:
Сообщений: 9
Dimitry Sibiryakov
Igor Makaryev
По сути, мы уже настроились изучать СУБД "с нуля"/практически с нуля,
т.к. есть возможность потратить время на это.

Это будет ваш личный проект, т.е. заказчика как такового нет?


Да, именно : )
Поэтому мы вольны не торопясь, основательно подойти к выбору всех необходимых инструментов - и потратить какое-то время на их освоение ради конечного результата.
Но, допустим, потратить условно месяц на выбор СУБД, подняв экземпляр каждой, погоняв на прототипе, измерив производительность - это всё же слишком, поэтому решил обратиться сюда. То есть время есть, но в разумных пределах - как и всегда в нашей жизни, впрочем : )
21 сен 13, 18:08    [14867550]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54803

В таком случае нулевой пункт стандартной последовательности отпадает и остаётся только
1) Которую лучше знаете
2) Первая попавшаяся
3) Вторая попавшаяся

С описанной задачей справится любая в умелых руках. Вопрос только в том насколько умелыми
являются те ваши.

Posted via ActualForum NNTP Server 1.5

21 сен 13, 18:20    [14867562]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54803

Хотя нет, я неправ.

Igor Makaryev
- Должна быть возможность взаимодействия с СУБД через C# (.NET)

Вот этим пунктом ваш список низводится до одной позиции - MS SQL. Больше ни с чем этот
..NET нормально взаимодействовать не умеет.

Posted via ActualForum NNTP Server 1.5

21 сен 13, 18:23    [14867566]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Igor Makaryev
Member

Откуда:
Сообщений: 9
Dimitry Sibiryakov
Хотя нет, я неправ.

Igor Makaryev
- Должна быть возможность взаимодействия с СУБД через C# (.NET)

Вот этим пунктом ваш список низводится до одной позиции - MS SQL. Больше ни с чем этот
..NET нормально взаимодействовать не умеет.


Сразу несколько вопросов возникло.

1. Нулевой пункт - как раз "Какую СУБД знает ваш базист?", я правильно понимаю?

2. Хм, почему не умеет? Та же MongoDB:
http://en.wikipedia.org/wiki/MongoDB
"There are REST and HTTP interfaces that allow the manipulation of MongoDB entries via HTTP GET, POST, UPDATE, and DELETE calls."
"Имеется подробная и качественная документация, большое число примеров и драйверов под популярные языки Java, JavaScript, Node.js, C++, C#, PHP, Python, Perl, Ruby, Grails&Groovy."

Вроде всё в порядке. Примерно такое же я видел про каждую БД, о которых читал, - MySQL, PostgreSQL и т.п. - везде есть нужные библиотеки/драйвера/API.

3. "С описанной задачей справится любая в умелых руках." - хм. А та же масштабируемость? Собственно, изначально мы и задумались над тем, что надо уходить от MS SQL Server, т.к. плохо масштабируется и на большом количестве данных/запросов можем встрять так, что придётся переходить на другую БД - только слишком поздно.

Или, например, статья, которую изучал до того, как задал вопрос здесь:
http://nosql.findthebest.com/l/1/MongoDB

"Best Use: frequently written, rarely read statistical data"
Меня это смутило, т.к. как раз читать будем чаще, чем писать.
21 сен 13, 18:51    [14867606]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Igor Makaryev
задумались над тем, что надо уходить от MS SQL Server, т.к. плохо масштабируется и на большом количестве данных/запросов можем встрять так, что придётся переходить на другую БД - только слишком поздно.


Чем, интересно, тут думали?!
21 сен 13, 19:05    [14867634]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Gallemar
Member

Откуда:
Сообщений: 5683
Dimitry Sibiryakov, а Firebird + Firebird ADO.NET Data Provider не пойдет?
21 сен 13, 19:13    [14867654]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54803

Igor Makaryev
Сразу несколько вопросов возникло.

Сразу несколько ответов:
1) Нулевой пункт "Которая уже есть у заказчика", поскольку под неё предполагается и
наличие инфраструктуры, включая DBA.
2) Заявленная способность работать и наличие .NET провайдера не означают, что оно будет
работать хорошо и возможности СУБД будут использованы на 100%.
3) Масштабируемость делается умелыми руками в виде шардинга и прочей кластеризации.

Posted via ActualForum NNTP Server 1.5

21 сен 13, 19:21    [14867672]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
SERG1257
Member

Откуда:
Сообщений: 2933
Igor Makaryev
По сути, мы уже настроились изучать СУБД "с нуля"/практически с нуля, т.к. есть возможность потратить время на это.
Тогда приоритет должен быть у мэйнстрима.
Непонятно неприятие Oracle. Условия задачи заточены под MSSQL - ну так берите и работайте или вы благословения ждете.
Хотите потыкать в NoSQL - дело ваше, но мое мнение это нишевое решение.
21 сен 13, 19:22    [14867675]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Igor Makaryev
Member

Откуда:
Сообщений: 9
pkarklin
Igor Makaryev
задумались над тем, что надо уходить от MS SQL Server, т.к. плохо масштабируется и на большом количестве данных/запросов можем встрять так, что придётся переходить на другую БД - только слишком поздно.


Чем, интересно, тут думали?!


Ммм, я понимаю, что, бесспорно, гораздо проще написать одно слово "facepalm", нежели объяснить, где ошибка.
21 сен 13, 19:42    [14867704]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Igor Makaryev
Member

Откуда:
Сообщений: 9
Dimitry Sibiryakov
Igor Makaryev
Сразу несколько вопросов возникло.

Сразу несколько ответов:
1) Нулевой пункт "Которая уже есть у заказчика", поскольку под неё предполагается и
наличие инфраструктуры, включая DBA.
2) Заявленная способность работать и наличие .NET провайдера не означают, что оно будет
работать хорошо и возможности СУБД будут использованы на 100%.
3) Масштабируемость делается умелыми руками в виде шардинга и прочей кластеризации.


1. Логично

2. Хм, да, понимаю.

3. Окей, но разве тот же MS SQL поддерживает шардирование?
21 сен 13, 19:43    [14867705]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Igor Makaryev
Member

Откуда:
Сообщений: 9
SERG1257
Igor Makaryev
По сути, мы уже настроились изучать СУБД "с нуля"/практически с нуля, т.к. есть возможность потратить время на это.
Тогда приоритет должен быть у мэйнстрима.
Непонятно неприятие Oracle. Условия задачи заточены под MSSQL - ну так берите и работайте или вы благословения ждете.
Хотите потыкать в NoSQL - дело ваше, но мое мнение это нишевое решение.


А что есть мэйнстрим?)
Вы имеете в виду SQL?

По сути да, ждём. Почему, например, тот же Twitter / Facebook использует MySQL, а не MS SQL? У них же и сайты не IIS держит, а какой-нибудь ngnix - полагаю, по тем же причинам: виндовые решения кушают уж очень много, а работают помедленнее.
Возможно, я не прав - тогда просьба пояснить, где я не прав и куда копать : )

А в каких случаях вы бы рекомендовали обратиться к NoSQL? Ответ на какой вопрос должен привести к этому выбору?


P.S. да, у нас опыт есть как раз в использовании MS SQL. И работаем, по большей части, с ним. Но опыта работы с MS SQL в условиях больших нагрузок не было - довольно скептически относимся к использованию данного решения при большом кол-ве запросов, отчего и решили покопать в сторону других СУБД.
21 сен 13, 19:45    [14867708]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Igor Makaryev
Ммм, я понимаю, что, бесспорно, гораздо проще написать одно слово "facepalm", нежели объяснить, где ошибка.


Ошибка в Ваших незнаниях возможностей СУБД и архитектурных решений на базе оных. Поэтому, Вам надо не СУБД выбирать, а Специалиста на работу нанять.
21 сен 13, 19:46    [14867711]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54803

Igor Makaryev
разве тот же MS SQL поддерживает шардирование?

Шардирование это в простейшем случае распределение разных данных по разным серверам с тем,
чтобы пользователи, работающие с разными данными обслуживались, соответственно, разными
серверами. Поддержка со стороны СУБД тут никакая не нужна, достаточно соответствующе
запрограммировать клиентскую/апп-серверную часть.

Posted via ActualForum NNTP Server 1.5

21 сен 13, 19:49    [14867715]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30261
Igor Makaryev
непонятно кол-во пользователей - возможно, 1 000, а, возможно, 1 000 000

не говорите так никому. Под "пользователями" обычно имеется в виду количество одновременных коннектов к чему-то, к СУБД или веб-серверу. Поэтому "миллион одновременных пользователей", особенно в клиент-сервере - это ересь. Кроме того, в случае веб-интерфейса к СУБД обычно используют пул коннектов, так что тут "пользователей" тем более нет.
Еще можно в качестве "количества" назвать количество пользователей сервиса. Но это малоинтересно, если их будет миллион, а в день будут заходить на сервер всего 10 человек.
21 сен 13, 21:23    [14867958]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
SERG1257
Member

Откуда:
Сообщений: 2933
Igor Makaryev
А в каких случаях вы бы рекомендовали обратиться к NoSQL?
Когда не требуется поддержка ACID. или другими словами когда в данных не содержатся денег. Пропажа (пусть и ОЧЕНЬ маловероятная) комментария, лайка или ч.л. подобного не так неприятна, как пропажа денег.
Ну и про Специалиста вам очень верно заметили. Все реляционные СУБД на данный момент - продукт зрелый, и если у вас что-то не получается, то это вы не умеете его готовить. А вот за NoSQL я такого не скажу.
21 сен 13, 21:32    [14867981]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
kalimba
Member

Откуда:
Сообщений: 297
Dimitry Sibiryakov
Igor Makaryev
разве тот же MS SQL поддерживает шардирование?

Шардирование это в простейшем случае распределение разных данных по разным серверам с тем,
чтобы пользователи, работающие с разными данными обслуживались, соответственно, разными
серверами. Поддержка со стороны СУБД тут никакая не нужна, достаточно соответствующе
запрограммировать клиентскую/апп-серверную часть.
Вы не совсем правы : ) В SQL Azure пошли дальше. Хотя в приложении конечно в любом случае надо будет обрабатывать.

Igor Makaryev,
Крайне рекомендую прочесть Вам книгу NoSQL Distilled и/или 7 databases in 7 weeks (обе есть на русском), я думаю после их прочтения вам будет понятней разница подходов. По поводу критики NoSQL на хабре недавно была статья, тоже советую к прочтению.
21 сен 13, 23:40    [14868227]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Ggg_old
Member

Откуда: Одесса
Сообщений: 1342
начать с того, что-бы посмотреть на чем делаются проекты из той области, что и вы собираетесь делать. Ибо в каждой области есть ньансы. Например в web hiload - решения одни, в тяжелых учетных и банковский системах - совсем другое, итп.
21 сен 13, 23:49    [14868244]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
DPH3
Member

Откуда:
Сообщений: 456
Igor Makaryev,

1) Если вообще не знаете SQL, то или MS SQL (так как он уже хорошо поддерживается студией) или Mongo (так как она как раз для программистов, не сумевших освоить реляционные СУБД). Впрочем, в случае MS SQL большую часть сложности возьмет на себя ORM.

2) Не думайте о масштабировании. Если ваш личный проект взлетит - то сможете поменять подход. Но шансов, что вы вылезете в течении нескольких лет за пределы MS SQL разумных редакций - весьма невелики.

3) Ну а перед выходом в production и наличии финансирования будете смотреть, чьи админы дешевле и доступнее. Например, по монго найти админа, гарантирующего хотя бы четыре девятки и не потерю данных при любых сбоях практически нереально на данный момент ( Впрочем, может вам не важны данные и доступность )
22 сен 13, 03:59    [14868598]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Igor Makaryev
Member

Откуда:
Сообщений: 9
Dimitry Sibiryakov
Igor Makaryev
разве тот же MS SQL поддерживает шардирование?

Шардирование это в простейшем случае распределение разных данных по разным серверам с тем,
чтобы пользователи, работающие с разными данными обслуживались, соответственно, разными
серверами. Поддержка со стороны СУБД тут никакая не нужна, достаточно соответствующе
запрограммировать клиентскую/апп-серверную часть.


Ага.
Примерно представил.
То есть на одном шарде я храню одни данные (таблицы), на другом - другие. И обращаюсь, соответственно, к нужному шарду.
А как быть в случае, когда бОльшая часть таблиц связана друг с другом (в реляционной БД)? Получается, что на каждом шарде должны быть две одинаковые полновесные БД, а вот обращаться, допустим, за Table1 мы будем к Shard1, а за Table2 - к Shard2, тогда нагрузка будет балансироваться. Но операции изменения записей и добавления придётся делать на каждом шарде.
Или я неправильно рассуждаю?

P.S. хотя у MySQL есть auto-sharding, когда одна таблица "размазывается" по нескольким нодам кластера БД:
http://www.mysql.com/products/cluster/scalability.html

P.P.S. задумался, а есть ли у MS SQL Server классическая кластеризация с балансировкой нагрузки? Есть Failover Cluster - с зеркализацией..

kdv
Igor Makaryev
непонятно кол-во пользователей - возможно, 1 000, а, возможно, 1 000 000

не говорите так никому. Под "пользователями" обычно имеется в виду количество одновременных коннектов к чему-то, к СУБД или веб-серверу. Поэтому "миллион одновременных пользователей", особенно в клиент-сервере - это ересь. Кроме того, в случае веб-интерфейса к СУБД обычно используют пул коннектов, так что тут "пользователей" тем более нет.
Еще можно в качестве "количества" назвать количество пользователей сервиса. Но это малоинтересно, если их будет миллион, а в день будут заходить на сервер всего 10 человек.


Хорошо, спасибо за замечание!
Но вообще я, в принципе, в виду как раз миллион активных пользователей.
Сколько человек пользуются eBay? Думаю, что миллион запросов у них случается)
За терминологию еще раз спасибо, учту!

SERG1257
Igor Makaryev
А в каких случаях вы бы рекомендовали обратиться к NoSQL?
Когда не требуется поддержка ACID. или другими словами когда в данных не содержатся денег. Пропажа (пусть и ОЧЕНЬ маловероятная) комментария, лайка или ч.л. подобного не так неприятна, как пропажа денег.
Ну и про Специалиста вам очень верно заметили. Все реляционные СУБД на данный момент - продукт зрелый, и если у вас что-то не получается, то это вы не умеете его готовить. А вот за NoSQL я такого не скажу.


Ммм, в принципе, мы вполне можем "потерять" "лайк".
Проект не является каким-нибудь аукционом, где потеря транзакции приведёт к потере денег.
Про специалиста - понимаю, но хотим реализовать проект собственными силами.

kalimba
Dimitry Sibiryakov
пропущено...

Шардирование это в простейшем случае распределение разных данных по разным серверам с тем,
чтобы пользователи, работающие с разными данными обслуживались, соответственно, разными
серверами. Поддержка со стороны СУБД тут никакая не нужна, достаточно соответствующе
запрограммировать клиентскую/апп-серверную часть.
Вы не совсем правы : ) В SQL Azure пошли дальше. Хотя в приложении конечно в любом случае надо будет обрабатывать.

Igor Makaryev,
Крайне рекомендую прочесть Вам книгу NoSQL Distilled и/или 7 databases in 7 weeks (обе есть на русском), я думаю после их прочтения вам будет понятней разница подходов. По поводу критики NoSQL на хабре недавно была статья, тоже советую к прочтению.


Да, есть несколько СУБД, которые поддерживают шардирование, что называется, "по свою сторону баррикад".
К тому же разряду относится MongoDB со своим auto-sharding: http://docs.mongodb.org/manual/core/sharding-introduction/

За книги огромное спасибо, постараюсь изучить!
А статью да, на днях читал : )
Вот, кстати, по ней же вопрос - касательно шардирования. Вроде шардирование - "распределение разных данных по разным серверам". Окей. Но при этом в статье говорится о том, что "информация должна разойтись по всем нодам кластера" - зачем, если вроде храним разные данные отдельно?

Ggg_old
начать с того, что-бы посмотреть на чем делаются проекты из той области, что и вы собираетесь делать. Ибо в каждой области есть ньансы. Например в web hiload - решения одни, в тяжелых учетных и банковский системах - совсем другое, итп.


Смотрел.
По сути, пожалуй, ближе всего ко всяким Facebook, Twitter (Front-End <-> Back-End) без необходимости хранить тонны переписок и медиа с быстрым клиентом на стороне пользователя, с простыми query.
Twitter, Facebook используют MySQL, eBay - Oracle Database.
22 сен 13, 05:16    [14868628]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Igor Makaryev
Member

Откуда:
Сообщений: 9
DPH3
Igor Makaryev,

1) Если вообще не знаете SQL, то или MS SQL (так как он уже хорошо поддерживается студией) или Mongo (так как она как раз для программистов, не сумевших освоить реляционные СУБД). Впрочем, в случае MS SQL большую часть сложности возьмет на себя ORM.

2) Не думайте о масштабировании. Если ваш личный проект взлетит - то сможете поменять подход. Но шансов, что вы вылезете в течении нескольких лет за пределы MS SQL разумных редакций - весьма невелики.

3) Ну а перед выходом в production и наличии финансирования будете смотреть, чьи админы дешевле и доступнее. Например, по монго найти админа, гарантирующего хотя бы четыре девятки и не потерю данных при любых сбоях практически нереально на данный момент ( Впрочем, может вам не важны данные и доступность )


1) То есть предлагаете просто работать с одиночным instance-ом MS SQL? (ну, в крайнем случае завести FailoverCluster для надёжности)

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

3) Хм, а почему невозможно?
Потеря данных не сверхкритична (всё же не банковская система), а вот доступность важна (собственно, выше я писал про пользователей).
22 сен 13, 05:30    [14868632]     Ответить | Цитировать Сообщить модератору
 Re: Помощь в выборе СУБД для проекта  [new]
Zukora
Member

Откуда:
Сообщений: 535
Если у Вас пользователей "1 000, а, возможно, 1 000 000", то стоить взять дорогого(!) проектировщика с опытом реализации таких масштабных задач, который выберет БД проекта и будет отвечать за свое решение. Что Вы хотите услышать на форуме не понятно.
22 сен 13, 07:53    [14868646]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить