(SiteMap) SQL

Программирование в SQL SERVER

С базами данных в плане администрирования я сталкивался с самого начала своей карьеры, но всерьез в СУБД я впервые окунулся в 1989 году, когда появилась dBase IV. Это был интерактивный интерплетатор реляционной СУБД на языке SQL-89, работавший под MS-DOS. Со временем этот стандарт был расширен до SQL-92 и, наконец, до нынешнего SQL-99. Хотя основа языка SQL осталась прежняя, но со временем в язык добавилось несколько новых конструкций типа Inner Join, Union и др. Впрочем dBase IV быстро отошел и уступил место интерплератору Foxpro и компилятору Clipper - на нем-то я и работал несколько лет приобретя незаменимый опыт проектирования и реализации разных АСУП'ов. По четвертому Clipper'у я даже получил сертификат в Nantucket - только потом потерял его. Clipper вообще оказался очень удачным языком - и поныне в организациях полно программ на нем - к сожалению, они как правило все без исходных текстов и при обслуживании выручают только его декомпиляторы.


На MS SQL я реализовал подавляющее большинство своих проектов. Сегодня MS SQL Server - это адская машина, у которой сотни специфических обьектов, отсутствующих в простейших SQL-серверах: Aggregate, Application Role, Assembly, Asymmetric Key, Broker Priority, Certificate, Check Constraint, CLR Database Trigger, CLR Instead Of Trigger, CLR Procedure, CLR Scalar Function, CLR Server Trigger, CLR Table Function, CLR Trigger, ColumnStore Index, Contract, Credential, Cryptographic Provider, Custom Message, Database Audit Specification, Database Encryption Key, Database Role, Database Scoped Credential, Database Trigger, Default Constraint, Default, Endpoint (ServiceBroker over TCP), Endpoint (SOAP over HTTP), Event Notification, Event Session, Extended Property, External Data Source, External File Format, External Table, File, FileGroup MemOpt, FileGroup With Filestream, FileGroup, FileTable, Foreign Key, Full Text Stoplist, Fulltext Catalog, Fulltext Index, Index, Inline Function, Instead Of Trigger, Linked Server Login, Linked Server, Log File, Login SqlServer, Login, Master Key, Message Type, Partition Function, Partition Scheme, Primary Key, Procedure NativeComp, Procedure, Queue, Remote Service Binding, Route, Rule, Scalar Function, Schema, Script Build, Script, Search Property List, Security Policy, Selective XML Index, Sequence, Server Audit Specification, Server Audit, Server Role, Server Trigger, Service, Signature, Spatial Index, Statistics, Svr Role Membership, Symmetric Key, Synonym, Table Function, Table MemOpt with Filegroup, Table MemOpt, Table SysVersioned, Table, Trigger, Type, Unique Key, User Defined Table Type MemOpt, User Defined Table Type, User with Password, User, User-defined Type, View, XML Index, XML Schema Collection (xsd).vstemplate, XML Schema Collection.

Но и это лишь цветочки MS SQL сервера, ягодки сервера в том, что помимо четырех основных команд, присутствующих в примитивных SQL-серверах (SELECT, UPDATE, INSERT, DELETE), микрософтовский SQL сервер расширяется своими собственными функциями в произвольном направлении. Эти функции расширения могут выполнять все что угодно, обычно например ходят в интернет, что-то там скачивают, парсят, записывают в файловую систему или таблички. А меня на сайте описано несколько моих собственных расширений - SQL CRL Assembly:


Топики, посвященных MS SQL-серверу, довольно хаотично разбросаны по моему сайту - может быть когда нибудь я их соберу в один список. Вот навскидку несколько моих заметок с этого сайта за последние несколько лет:


В принципе, SQL - это тяжелая болезнь. Кто заболел ею - тем кажутся нелепыми и ненужными любые другие форматы баз виндузни: файловая система, реестр, WMI, базы MAPI, базы ActiveDirectory, PE-данные EXE-модуля, MSI-базы инсталлера и все остальные структуры тоже. Кажется совершенно естественным выгрузить все данные из этого зоопарка в SQL чтобы бепрепятственно юзать потом эти данные в своих прогах уже из SQL - что и сделано в этих утилитками с открытым исходным кодом.

Я также сделал множество отдельных инструментов для выполнения различных спецопераций SQL, например: SQLBatch, скриптер/синхронизатор SQL-баз, определитель формата рекордсета процедур. Большинство этих инструментов вошли в мою cобственную оболочку для управления SQL-сервером - ScriptManager - Менеджер MS SQL сервера - дополнение MS SMS для работы с большими скриптами., которой вы тоже можете попробовать воспользоватся.


В последние годы у меня все больше и больше стало нарастать раздражение в отношении Микрософта, вызванное тем, что соотношение цена/качество у микрософтовских продуктов самое плохое в 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:

Принимая во внимание изложенные обстоятельства, хотя большинство моих проектов сделаны именно на 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 СУБД:



Comments ( )
Link to this page: //www.vb-net.com/sql/index.htm
< THANKS ME> <Полезные ссылки