Программирование в SQL SERVER
С базами данных в плане администрирования я сталкивался с самого начала своей карьеры, но всерьез в СУБД я впервые окунулся в 1989 году, когда появилась dBase IV. Это был интерактивный интерплетатор реляционной СУБД на языке SQL-89, работавший под MS-DOS. Со временем этот стандарт был расширен до SQL-92 и, наконец, до нынешнего SQL-99. Хотя основа языка SQL осталась прежняя, но со временем в язык добавилось несколько новых конструкций типа Inner Join, Union и др. Впрочем dBase IV быстро отошел и уступил место интерплератору Foxpro и компилятору Clipper - на нем-то я и работал несколько лет приобретя незаменимый опыт проектирования и реализации разных АСУП'ов. По четвертому Clipper'у я даже получил сертификат в Nantucket - только потом потерял его. Clipper вообще оказался очень удачным языком - и поныне в организациях полно программ на нем - к сожалению, они как правило все без исходных текстов и при обслуживании выручают только его декомпиляторы.
В последние годы у меня все больше и больше стало нарастать раздражение в отношении Микрософта, вызванное тем, что соотношение цена/качество у микрософтовских продуктов самое плохое в IT-индустрии. Ну что это за соотношение цена/качество SQL-сервера, если цена MS SQL 2008 составляет $57,498 на процессор, ну пусть даже $24,999 на процессор? И что это за сумма в четверть миллиона долларов? А ведь именно столько набегает для обычного малого предприятия, скажем из 10 человек, с информационно-развитой инфрастуктурой - где стоит скажем три-четыре SQL-сервера на современных многопроцессорных компьютерах. Почему примерно аналогичный MySQL Enterprise стоит всего $500, а PostgreSQL вообще бесплатен? Это очевидно несуразная цена. Слишком большая цена которую мы все должны платить просто для того, чтобы Билл Гейтс оставался самым богатым человеком планеты.
Наличие у микрософта совершенно обкастрированной версии MS SQL, работаюшей на 1-м процеесоре в 1ГБ ОЗУ с базами до 4ГБ - без аудита, без репликации, без компрессии, без материализованных вьюшек, без секционирования, с однопоточным обращением к индексам, без полнотекстового поиска, без мастеров экспорта/импорта данных, без оптимизатора JOIN-соединений, без почтовых уведомлений, без виртуализации, без сборок, без тьюнинг-адвизора, без профайлера - а еще десятки каких-то ограничений... Наличие MS SQLExpress, распространяемой микрософтом бесплатно и являющейся просто приманкой для дураков - маркетинговой уловкой по завлечению малограмотных юзеров на платформу Билла Гейтса - абсолютно ничего не меняет. Ибо даже студенты на лабораторных работах начинают понимать, что это не похоже на полноценный SQL Server. Это 10% возможностей полностью бесплатного MySQL. Проще тогда уж положить данные в последовательной текстовый файл и читать их оттуда самому своим кодом - это будет работать и быстрее и проще.
К тому же MS SQL работает только под Windows, что противоречит логике всех остальных СУБД, которые позволяют приложениям работать на любой платформе . А Windows - самая малораспространенная в природе платформа (даже на оборудовании X86 и X64 - а на оборудовании s390, s390x (32 and 64 bits), SPARC (32), PowerPC, AMD64, IA64, ARM, MIPS Windows не существует в принципе). Даже на популярной платформе X86-X64 лишь 0,4% сайтов сделаны на фирменной микрософтовской платформе. И лишь чуть больше половины ноутбуков используют Windows. действительно, кому вообще придет в голову покупать для домашнего использования за 10 тысяч рублей убогую однопоточную тормозную и подвисающую Windows 7 - когда можно бесплатно скачать нормальный Linux? Сколько бы не навязывали это решение в процессе обучения детей в школе. А кому придет в голову покупать за 4 тысячи долларов более ли менее укомплектованный сервер на Windows? Если можно абсолютно бесплатно скачать для физ-машины гораздо более надежную и быструю VmWare ESXi. А ведь использование MS SQL приводит при последующем расширении бизнеса и расширении IT-инфраструктуры именно к покупке Windows-сервера от Билла Гейста и установке билогейтсовской платформы (Windows 7) на клиентские машины. Все остальные СУБД устроены так, что не заставляют покупать Windows - только MS SQL задуман так, чтобы вовлекать клиента в дальшейшие покупки чего-либо у Билла Гейтса.
Поэтому довольно часто мои друзья, партнеры и заказчики просят освободить их от MS SQL Server хотя бы постепенно, от отдельных компонентов MS SQL Server:
- (2008) Избавляемся от Microsoft Reporting Services
- (2010) Избавляемся от Microsoft Team Foundation Server
- (2010) Избавляемся от Microsoft SQL Server Log Shipping
Принимая во внимание изложенные обстоятельства, хотя большинство моих проектов сделаны именно на MS SQL - объективности ради я включил MS SQL в свой перечень продуктов, которые я считаю абсолютным злом - Осторожно Microsoft. Вашему вниманию также предлагается Сравнительный анализ производительности MS SQL Server 2008, PostgreSQL 8.4, MySQL 5.1.
В принципе, если подумать, то даже MySQL (хоть он и не имеет такой производительности как MS SQL Enterprise и тем более PostgreSQL) имеет множество неоспоримых преимуществ перед MS SQL - например задания SQL JOB и репликация в нем работают в бесплатной версии, а у билогейтсовского сервера это платный функционал. В MySQL без проблем можно вызвать из одной процедуры другую, чего почему-то нельзя делать в MS SQL. MySQL позволяет хранить небольшие базы непосредственно в памяти (тип хранения Memory) - что работает несравненно быстрее, чем единственно возможный способ хранения данных в MS SQL - небольшой текущий кэш в ОЗУ, остальное на дисках. Таких преимуществ немало, вплоть до удобных языковых конструкций типа LIMIT, полезных функций типо COMPRESS или полного дампирования базы c содержимым в текстовом виде. Если бы было наоборот - MS SQL Enterprise полностью бесплатный, а кроссплатформенный MySQL стоил бы какие-то деньги - вот тогда надо было бы призадуматься! Поэтому вы тоже можете воспользоваться My SQL в любых своих проектах на .NET и ASP.NET - Используем MySQL вместо MS SQL в проектах на ASP.NET.
|
В последнее время (если выбор SQL-сервера зависит от меня) я склоняюсь к применению более мощного чем MS SQL, но бесплатного и кросплатформенного решения - Используем PostgreSQL вместо MS SQL в проектах на .NET и ASP.NET.
|
В десктопных однопользовательских программах очень удобно использовать SQLite.
|
Но некоторые проекты я делаю в NoSQL СУБД:
- (2024) - Refactoring of TaskBased GoogleCloud project (Firebase)
- (2023) - Simple AngularFirebaseUploader as Typescript console application - npx ts-node (function main).
- (2016) - MongoDB - noSQL-database for irregular JSON data.
|