C# - MySQL по сравнению с [закрытым] Microsoft SQL Server

Дозвуковой также другая опция. Я часто использую его для генерации классов объекта, которые отображаются на базу данных. Это имеет утилиту командной строки, которая позволяет Вам определить таблицы, типы и хост других полезных вещей

15
задан David Mulder 18 March 2015 в 02:09
поделиться

7 ответов

Я много лет использовал SQL Server в больших и малых проектах C #, но в последний год использую в основном MySQL на различных C # (но связанных с открытым исходным кодом и связанных с запуском) проекты, которые уже использовали MySQL.

Я скучаю по SQL Server! По моему опыту, SQL Server лучше во многих отношениях:

  • оптимизатор запросов в SQL Server умнее, а это означает, что вы часто можете создавать запросы, и они будут создавать оптимальные планы запросов. С MySQL я трачу больше времени на ручную настройку даже относительно простых запросов для создания хороших планов запросов.
  • базовый механизм базы данных в SQL Server может делать более широкий спектр вещей для повышения производительности. например, все объединения в MySQL являются объединениями с вложенными циклами, в то время как SQL Server может выполнять хэш-объединения или объединения слиянием, которые иногда могут повысить производительность запросов в 10 раз +. SQL Server также может распараллеливать запросы, что, особенно для больших рабочих нагрузок хранилищ данных, может значительно повысить производительность
  • . Инструменты с графическим интерфейсом пользователя намного впереди. Оптимизатор запросов графического плана SQL Server упрощает оптимизацию запросов - вы никогда не захотите возвращаться к EXPLAIN EXTENDED. Графические инструменты мониторинга SQL Server 2008 намного проще, чем копаться в журнале медленных запросов, чтобы выяснить, что происходит не так. И т. Д.
  • Как вы упомянули, история интеграции .NET (C #, Linq, Entity Framework и т. Д.) В SQL Server лучше. Я также использую C #, Entity Framework и LINQ с MySQL, так что это не вопрос, хотя производительность, вероятно, будет лучше с SQL Server в среде .NET, потому что команды работают вместе, чтобы повысить производительность и улучшить работу интеграции .
  • SQL Server '

    • вы застряли на использовании серверов Windows, со всеми плюсами и минусами, которые это влечет за собой
    • SQL Server, особенно более дорогие версии, дорогие ! Для небольших БД (я думаю, <4 ГБ) SQL Server Express бесплатен и почти такой же полнофункциональный, как и обычный SQL Server - если вы знаете, что ваши данные будут небольшими, и вы знаете, что ваш босс - скряга , Экспресс - это то, что вам нужно. Кроме того, существует новая версия SQL Server 2008 Web Edition, которая для веб-приложений с выходом в Интернет теоретически должна предлагать дешевый хостинг, поскольку стоимость хостера составляет всего 15 долларов в месяц за процессор.
    • Это не открытый исходный код. Некоторые компании и группы разработчиков очень увлечены этим по уважительным причинам (отладка, стоимость, философия и т. Д.)!
    • , связанным с вышеизложенным: если вы хотите исправить ошибку в MySQL, и вы ' у вас есть навыки, вы можете исправить это сами. В SQL Server есть болезненные ошибки в обработке запросов, оптимизации и т. Д., Которые сохраняются годами - я потратил абсурдное количество времени, работая над некоторыми из них.
    • для очень простых, только для чтения (или не -transactional) рабочих нагрузок (например, доступ к кэш-памяти на основе БД из веб-приложения), где вы можете обойтись без использования MyISAM вместо InnoDB, я слышал, что MySQL может быть значительно быстрее.

    Предостережение: я слышал, что предполагается MySQL 6.0 чтобы устранить многие из вышеперечисленных пробелов и различий, но, надо признать, я не успел понять, как Oracle и т. д. повлияют на расписание и / или набор функций.

    re: ваше «C # встроен» примечание: да, вы можете разрабатывать хранимые процедуры, функции, агрегаты и т. Д., Используя языки .NET, но IMHO в большинстве сценариев это больше проблем, чем того стоит, в том числе потому, что развертывание сложнее, а администраторы баз данных менее комфортны с кодом .NET на своих серверах. Настоящая победа для комбинации C # + .NET + Visual Studio + SQL Server, IMHO, заключается в том, что они разрабатывались параллельно в течение последних 10 лет, чтобы все они хорошо работали вместе, поэтому вы получите простоту использования и синергию, которую вы может не получить MySQL. Тем не менее, как я отмечал выше, это не нарушитель и не средство заключения сделки ... просто более плавно использовать SQL Server с остальной частью стека Microsoft.

    Подводя итог, позвольте мне прояснить, что для многих рабочих нагрузок БД MySQL достаточно хорош - он работает, он стабилен, быстр, имеет достаточно хорошие инструменты и т. Д. И это доступно! :-) Я бы никогда не отказался от проекта просто потому, что он использует MySQL. Но это сравнение похоже на вождение Honda против BMW ... Honda доставит вас туда, куда вы хотите, но если ваш кошелек выдержит это, вы получите больше удовольствия от поездки с Bimmer. : -)

54
ответ дан 30 November 2019 в 23:58
поделиться

Я использую оба варианта довольно регулярно, и в настоящее время изучаю свой Sql Server MCTS, так что я, вероятно, могу добавить сюда несколько полезных комментариев.

SQL Server - это очень, очень, много более полнофункциональная база данных, особенно версия 2008 года. MySQL даже не поддерживает ограничения столбцов (например, создание столбца int с последующим ограничением значения от 1 до 1000 - не может обеспечить это автоматически в MySQL). SQL Server предлагает полнотекстовое индексирование, собственные XML-столбцы и манипуляции, несколько режимов транзакций, комплексные предложения по безопасности, репликацию и распределенные функции, а также отличный пакет управления.

Что касается вашего комментария C #, да, SQL Server имеет такую ​​возможность для импорта объектов CLR, что означает, что вы можете скомпилировать некоторый код .Net и перетащить его в SQL Server и иметь функции базы данных, которые его используют. Это особенно полезно для создания новых агрегатных функций, так как вы можете обходить курсоры и использовать более быстрые циклы кода CLR.

Вы также можете оптимизировать SQL Server полностью, вплоть до используемых им режимов блокировки и изоляции, а также ЦП / памяти, которые может использовать данный поток.

MySQL, с другой стороны, бесплатен и относительно прост в настройке, с достаточным количеством опций, поэтому большинство владельцев веб-сайтов с удовольствием используют его для своих базовых приложений CRUD.

Если вы хотите использовать Linq2Sql, вам понадобится SQL Server. Если вам нужно множество дополнительных функций, SQL Server - это то, что вам нужно.

MySQL, с другой стороны, бесплатен и относительно прост в настройке, с достаточным количеством опций, чтобы большинство владельцев веб-сайтов с удовольствием использовали его для своих базовых приложений CRUD.

Если вы хотите использовать Linq2Sql, вам понадобится SQL Server. Если вам нужно множество дополнительных функций, SQL Server - это то, что вам нужно.

MySQL, с другой стороны, бесплатен и относительно прост в настройке, с достаточным количеством опций, чтобы большинство владельцев веб-сайтов с удовольствием использовали его для своих базовых приложений CRUD.

Если вы хотите использовать Linq2Sql, вам понадобится SQL Server. Если вам нужно множество дополнительных функций, SQL Server - это то, что вам нужно.

4
ответ дан 30 November 2019 в 23:58
поделиться

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

1
ответ дан 30 November 2019 в 23:58
поделиться

C # будет обращаться к MySQL и SQLServer в основном одинаково, используя ADO.NET (или LINQ - LINQ to SQL привязан к SQL Server, но, похоже, у него нет долгой жизни), так что это не будет фактором в моем имейте в виду, хотя интеграция IDE может быть.

Преимущества SQL Server будут включать более полный спектр поддержки разработки в рамках SQL Server, агента и планирования, модели безопасности, а также индексирования, настройки и других функций, таких как службы интеграции, отчеты Службы и службы анализа, которые позволяют относительно легко управлять крупными системными инфраструктурами.

Я не думаю, что вы »Я предоставил достаточно информации о вашей системе, чтобы сделать выбор между ними очевидным.

1
ответ дан 30 November 2019 в 23:58
поделиться

Я работал с обоими, хотя гораздо больше с SqlServer. В большом магазине, особенно там, где архитектурные решения многих приложений исходят от архитекторов БД, SQL Server предлагает больше. Репликация, SSIS и т. Д. Но они добавляют МНОГО сложности и, по моему опыту, были источником значительной части операционных сбоев.

Но как хранилище данных для программного приложения MySql делает то, что вам нужно, и является прямолинейно, надежно, быстро и просто.

Если говорить строго философски, вам действительно нужна логика приложения в коде приложения, а не в сложных SQL и определениях ограничений. Изучите основы в своем хранилище данных и вложите сэкономленное время в саму программу.

SQL Server предлагает больше, особенно там, где многие архитектурные решения приложений исходят от архитекторов БД. Репликация, SSIS и т. Д. Но они добавляют МНОГО сложности и, по моему опыту, были источником значительной части операционных сбоев.

Но как хранилище данных для программного приложения MySql делает то, что вам нужно, и является прямолинейно, надежно, быстро и просто.

Если говорить строго философски, вам действительно нужна логика приложения в коде приложения, а не в сложных SQL и определениях ограничений. Изучите основы в своем хранилище данных и вложите сэкономленное время в саму программу.

SQL Server предлагает больше, особенно там, где многие архитектурные решения приложений исходят от архитекторов БД. Репликация, SSIS и т. Д. Но они добавляют МНОГО сложности и, по моему опыту, были источником значительной части операционных сбоев.

Но как хранилище данных для программного приложения MySql делает то, что вам нужно, и является прямолинейно, надежно, быстро и просто.

Если говорить строго философски, вы действительно хотите, чтобы логика вашего приложения содержалась в коде приложения, а не в сложных определениях SQL и ограничений. Изучите основы в своем хранилище данных и вложите сэкономленное время в саму программу.

Но как хранилище данных для программного приложения MySql делает то, что вам нужно, и является прямым, надежным, быстрым и простым.

Если говорить строго философски, вам действительно нужна логика вашего приложения в коде приложения, а не в сложном SQL и определения ограничений. Изучите основы в своем хранилище данных и вложите сэкономленное время в саму программу.

Но как хранилище данных для программного приложения MySql делает то, что вам нужно, и является прямым, надежным, быстрым и простым.

Если говорить строго философски, вам действительно нужна логика вашего приложения в коде приложения, а не в сложном SQL и определения ограничений. Изучите основы в своем хранилище данных и вложите сэкономленное время в саму программу.

2
ответ дан 30 November 2019 в 23:58
поделиться

Рассматривали ли вы более полнофункциональную базу данных с открытым исходным кодом, такую ​​как PostgreSQL. В SQL Server нет ничего плохого, но он начинает увлекать вас лицензионным программным обеспечением, от которого вы можете держаться подальше, если останетесь с противоположной частью с открытым исходным кодом. Все зависит от того, согласен ли ты с этим.

1
ответ дан 30 November 2019 в 23:58
поделиться

С точки зрения разработки (кодирования) я работал как разработчик Java, так и разработчик C # (подключаясь к обоим в различных проектах, поэтому Java для SQLServer, Java для MySQL, C # для MySQL , C # в SQLServer). Лично я не заметил такой большой разницы, хотя и не делал ничего слишком сложного. Я не думаю, что есть о чем беспокоиться, если вы думаете, что будет крутая кривая обучения, если вы не хотите вникать в некоторые из действительно мелких конкретных вещей, специфичных для сервера. Есть некоторые незначительные отличия, но нет ничего, что кто-то не заметил бы быстро.

1
ответ дан 30 November 2019 в 23:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: