Используем MySQL вместо MS SQL в проектах на ASP.NET
MS SQL является тяжелейшим обременителем технологии ASP.NET. Достаточно упомянуть о его стоимости - $57,498 на процессор, ну пусть даже $24,999 на процессор. Есть какие-то программы у MS чтобы отмутить MS SQL подешевле, но все равно для WEB-проектов это неподъемные деньги. Поэтому MS SQL - это первый кандидат на замену его полностью бесплатным продуктом.
Однако, сделать это весьма непросто, потому что Микрософт заведомо все это продумал и подготовил две подлые ловушки - сделал для разработчиков бесплатным самую продвиную версию MS SQL и сделал бесплатной самую кастрированную версию MS SQL:
- Девелоперская версия MS SQL 2008 имеет полные возможности микрософтоского SQL сервера (того что за 25 тыс долларов на процессор). Ну например задания SQL JOB. И разработчик выполняет проектирование приложенич исходя из имеющихся у него в распоряжении инструментов SQL.
Например, берет вот такую сборку Сборка для работы с данными стандартных ASP.NET-профилей на уровне SQL делает на ней вот такую процедуру, и вызывает ее в задании. Таким образом пользователь сайта мгновенно получает результат запроса, который считается часами. Эта технология кеширования чрезвычайно часто применяется WEB-программистами, где пользователю сайта надо отдать мгновенно результат (пусть даже неактуальный) - иначе через несколько секунд пользователь просто уйдет с сайта. Все это тчательно отлаживется на девелоперской версии.
Но... оказывается, что при разворачивании сайта в боевой среде на бесплатном SQL Express функционал SQL JOB не включен в бесплатный Express. И что делать? Архитектуру сайта поменять уже совершенно невозмозжно - остается только покупать у Билла Гейтса полнофункциональный MS SQL Server.
- Вторая ловушка, подготовленная билогейтсовскими мошенниками, заключается в применении специфического диалекта языка SQL. Программист привыкает к конструкциям WITH, ко всяким функциям типа ROW_NUMBER. Нарезает исходя их этого всю архитектуру портала - это делаем на уровне SQL, это на страничках.
После программирования оказывается, что легче вообще написать заново весь проект, чем переписать уровень SQL с микрософтовского диалекта языка SQL на другой диалект SQL. В этом и есть подлость установки бесплатного SQL Express со специфическим диалектом языка SQL ко всеми микрософтовским инструментами разработчика.
Вся эта ситуация возникает от того, что программисты микрософтоской платформы имеют чрезвычайно узкий кругозор и совершенно не знакомы с миром Freeware Opensource. Микрософтовские курсы, учебники и форумы - изо всех сил стараются заузить кругозор программистов. Например достаточно было мне на форуме SYSADMINS.RU заикнутся про то, что NGINX Игоря Сысоева является бесплатной альтернативой MS ISA Server и выполняет роутинг по хост-хеалдерам сайтов лучше чем MS ISA - как я был навечно там забанен и был удален не только этот топик, но и все мои другие топики. Аналогичный беспредел происходит на всех основных сайтах рунета. Информацию, как соскочить с платежей Биллу Гейтсу, приходится собирать буквально по крупицам:
- Итак, для начала вам нужно сгрузить MySQL. Это можно сделать с http://www.sun.com/software/products/mysql/ или http://dev.mysql.com/downloads/mysql/. Далее надо выполнить тривиальную инсталяцию.
- Теперь надо установить аналог MS SMS - инструмент для управления MySQL и среду программирования MySQL. Их существует много разных (и бесплатных, например MySQL Workbench). Но мне понравился бесплатный русскоязычный инструмент dbForge Studio for MySQL. После выполения тривиальнейней инсталяции вы получите работающую MySQL-студию.
- И третье, необходимо скачать коннекторы (драйвера/провайдеры) MySQL <-> NET. Бесплатный дравер MySQL/NET можно скачать отсюда http://dev.mysql.com/downloads/connector/net/. Когда коннектор зарегистрируется в Visual Studio 2008 - можно начинать работать.
- Обратите внимание, что теперь у вас будет свой локальный Help по диалекту языка MySQL. Кроме того вы можете сгрузить удобный оригинальный CHM-файл с хелпом отсюда. Вы также можете использовать онлайновый хелп - http://dev.mysql.com/doc. С общей информаций по MySQL на русском языке вы можете ознакомится на wikipedia.org, а с полной документаций на руссом на сайте http://www.mysql.ru/docs/man.
- Чтобы работать cпокойно - разберитесь с логинами MySQL и их правами на доступ к базам. Логины в MySQL устроены немного необычно - собственно логин, '@' и адрес, откуда можно коннектиться к серверу (или знак процента, если отовсюду). Логины можно создавать из командной строки, можно непосредственно из DevArt (из командной строки или из меню Devart). Логин считается созданным правильно, если из-под него видна только одна нужная база.
Для начала работы в Visual Studio 2008 попробуйте установить коннект к базе MySQL из Server Explorer. Все коннекторы, которые вы найдете в интернете, имеют специфические диалоги. Тот коннектор, который я рекомендовал выше, выдаст такие диалоги. Коннектор от DevArt требует установки параметра UNICODE, иначе в студию, работающую в юникоде данные из MySQL, работающего в UTF-8, данные будут приходить абракадаброй. Но для указанного бесплатного коннектора никаких особенных параметров устанавливать не надо - в нем перекодировка очуществляется автоматически.
Ну вот собственно и все. Дальше используете привычный SqlDataSource и вы получите к конфиге нужную строку коннекта. Строку коннекта легко вписать и руками. Она очень простая, все варианты ее перечислены на http://www.connectionstrings.com/mysql. Только не путайте строку для коннекта через ODBC (как работает студия DevArt) и строку коннекта через DOT.NET провайдер для ASP.NET сайта:
<connectionStrings> <add name="testConnectionString" connectionString="Server=192.168.0.127;Port=3308;Database=releasebeat;User ID=releasebeat;Password=xxxxxx;" providerName="MySql.Data.MySqlClient" /> </connectionStrings>
А на страничке получите обращение к этому провайдеру
<asp:SqlDataSource ID="MySqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>" ProviderName="<%$ ConnectionStrings:testConnectionString.ProviderName %>" SelectCommand="SELECT * FROM T1"> </asp:SqlDataSource>
Вот собственно и все, что вам нужно для работы:
Теперь давайте поймем еще раз, что вы достигаете этим решением. Теперь когда ваш сайт станет захлебываться от нагрузки - то вам придется перейти на платную версию MySQL - MySQL Enterprise Server, которая стоит не $57 тыс. на каждый процессор, а всего $500.
Впрочем, если изначально можно предположить, что портал не справится с нагрузкой под MySQL и требует большей функциональности от СУБД (Например репликации или процедур на JAVA) - есть смысл сразу подумать о более продвинутой версии SQL (но тоже полностью бесплатной) - PostgreSQL.
Вы легко найдете в интернете множество всяких сравнительных характеристик MySQL <-> MySQL Enterprise <-> PostgreSQL <-> MS SQL 2008 <-> MS SQL Express, возможно я тоже выложу такое сравнение по производительности и функциональности, но я хотел бы обратить из множества всяких сравнительных характистик, опубликованных на тысячах страниц интернета, на вот эту важную характеристику СУБД, взятую мною с этой странички (кстати, в правой колонке забыли упомянуть операционки от Microsoft).
При установке MySQL на Linux для ASP.NET-программиста могут в начальный момент возникнуть сложности в непривычной среде, поэтому чтобы попасть в более ли менее комфортную среду работы для начала выполните Установка и начальное конфигурирование OpenSuse Linux.
Затем установите MySQL из вашего репозитария с дистрибутивами Linux. После инсталяции будет создано несколько сырых конфигурационных файлов MySQL. Их надо проинициализировать, но сначала запустить сервис MySQL (из под пользователя ROOT).
Желательно сразу установить MySQL Administrator и MySQL Query Browser (можно сразу в Yast из текущего репозитария, например компакт-диска). Если сервис MySQL запустился нормально, то надо приконнектится к MySQL (из под ROOT) и уже из MySQL Administrator надо создать реальные логины MySQL.
После этого уже можно начинать работу в более ли менее комфортной среде изготовления ASP.NET-сайтов в Linux.
Это не единственный вариант работы под Linux, хороших GUI-инструментов для MySQL существуют десятки, многие пользуются Webmin (который к тому же весьма удобен для администрирования Apache):
Многие пользуются для управления MySQL старинным универсальным инструментом phpMyAdmin, который работает на любой системой, а под Windows этот инструмент управления MySQL ставят сразу в пакете XAMPP (ставится в один клик MySQL в пакете с почтовиком, FTP-cервером и web-сервером).
Для перегрузки своих существующих данных из MS SQL в MySQL вы можете воспользоватся моей программой ScriptManager. Обратите внимание, что я не поддерживаю работу моих программ в Windows 7. Последняя версия Windows, в среде которой я поддерживаю работу моих OpenSource-программ и моих публичных компонентов ASP.NET-сайтов - Windows 2003 и Windows 2008. В дальнейшем работа всех моих популярных публичных .NET-программ и моих популярных компонентов ASP.NET-сайтов будет поддерживатся только в Windows XP-2003-2008 и в Linux.
Для перегрузки данных из MS SQL в MySQL можно также сгрузить MySQL ODBC Connector, создать ODBC-источник данных и прилинковать его к MS SQL.
Собственно же ASP.NET-программирование не требует хитростей типа сохранения коннекта (как это требуется в PostgreSQL - Этюды на ASP.NET. Пример сайта на СУБД PostgreSQL) - техника ASP-NET программирования не отличается от техники программирования с MS SQL. Поэтому я сделал не просто пример сайта с MySQL - а пример ASP.NET-сайта с отказом от стандартных пользователей ASP.NET, обычно устанавливаемых в MS SQL - Избавляемся от базы стандартных пользователей ASP.NET на MS SQL - пример ASP.NET сайта на MySQL.
Еще один аналогичный пример применения MySQL вы можете посмотреть на страничке Как сделать SOAP/WSDL-вебсервис на ASP.NET/MONO для вызова его из FLEX.
|