Узкое место архитектуры фон Неймана

Совместное использование шины для памяти программ и памяти данных приводит к узкому месту архитектуры фон Неймана, а именно ограничению пропускной способности между процессором и памятью по сравнению с объёмом памяти. Из-за того, что память программ и память данных не могут быть доступны в одно и то же время, пропускная способность канала "процессор-память" и скорость работы памяти существенно ограничивают скорость работы процессора — гораздо сильнее, чем если бы программы и данные хранились в разных местах. Так как скорость процессора и объём памяти увеличивались гораздо быстрее, чем пропускная способность между ними, узкое место стало большой проблемой, серьёзность которой возрастает с каждым новым поколением процессоров[источник не указан 1764 дня]; данная проблема решается совершенствованием систем кэширования, а это порождает множество новых проблем[каких?].

Термин «узкое место архитектуры фон Неймана» ввел Джон Бэкус в 1977 в своей лекции «Можно ли освободить программирование от стиля фон Неймана?», которую он прочитал при вручении ему Премии Тьюринга[7][8]

Ученые из США и Италии в 2015 заявили о создании прототипа мем-процессора (английское memprocessor) с отличной от фон-неймановской архитектурой и возможности его использования для решения NP-полных задач[9][10][11].

Архитектура фон Неймана: история возникновения термина Компьютеры Базы данных Ав. Вадим Молодец March 30, 2016 ПодписатьсяПоделитьсяРассказатьРекомендовать Архитектура машины фон Неймана, также известная как модель фон Неймана, или Принстонская архитектура, основана на методике, описанной в 1945 году математиком и физиком Джоном фон Нейманом в рамках доклада «Первый проект» о вычислительной машине EDVAC. Схема архитектуры В докладе фон Неймана описывалась схема архитектуры для электронной цифровой вычислительной машины с частями, состоящими из блоков обработки, которая содержит: арифметико-логическое устройство; процессор регистров; блок управления, содержащий регистр команд и счетчик команд; запоминающее устройство для хранения данных; внешнее запоминающее устройство; входные и выходные механизмы. Смысл разработки состоял в том, чтобы любая хранимая на компьютере информация могла использоваться программой, в которой выбранные данные операции не могут воспроизводиться одновременно, потому что они разделяют общую шину. Это упоминается в «Первом проекте», который описывает мысли ученого о том, какой должна быть архитектура. Фон Нейман называл такую ситуацию «узким местом», которое часто ограничивает производительность системы. Принципы архитектуры фон Неймана Цифровой компьютер – это ЭВМ, хранящая программу, которая содержит программные инструкции, данные для чтения, записи, а также включает в себя память с произвольным доступом (RAM). Принципы архитектуры Джона фон Неймана изложены также в его труде «Первый проект». Согласно ему, компьютеры с хранимой в памяти программой были усовершенствованием по сравнению с управлением компьютеров, таких как ENIAC. Последний был запрограммирован с помощью установки переключателей и вставки патча, приводящего к маршрутизации данных и сигналам управления между различными функциональными блоками. В подавляющем большинстве современных компьютеров память также используется подобным образом. При этом архитектура ЭВМ фон Неймана отличается, например, от Гарвардской, тем, что она использует не основную, а кэш-память. Предыстория Первые вычислительные машины имели заданные фиксированные программы. Некоторые очень простые компьютеры до сих пор используют эту конструкцию либо для простоты, либо в учебных целях. Например, настольный калькулятор также является ЭВМ с фиксированной программой. Он может работать с основами математики, но он не может быть использован как текстовый процессор или игровая консоль. Изменение фиксированной программы машины требует перемонтажа, реструктуризации или реорганизации аппарата. Самые ранние компьютеры не были настолько узконаправленными, так как они были разработаны впервые и в научных целях. Перепрограммирование появилось гораздо позже, и это был трудоемкий процесс, начиная с блок-схем и бумажных купюр и заканчивая подробными техническими проектами. Особенно трудным был процесс физической модернизации каналов восстановления машины. Может занять три недели установка программы на ENIAC и попытки заставить ее работать. Новая идея С предложением компьютера, хранящего программы в памяти, все изменилось. Хранимые в памяти, они являются конструкцией с набором инструкций. А значит, машина может сразу получить набор команд, чтобы произвести вычисления. Яндекс.Директ Что случилось в Анжеро-Судженске? Последние новости Анжеро-Судженска. Читайте на Яндексе. yandex.ruАнжеро-Судженск Обучение архитектуре и дизайну Дистанционно! Переподготовка по архитектуре за 20 000 руб. и 3 мес. архитектура.маэо.рфАдрес и телефон Трековое освещение Делаем проекты, поставляем оборудование, производим монтаж. svetoproekt.ruАдрес и телефон Конструкция таких программ относится к самомодифицирующимся кодам. Одной из первых установок для такого объекта была необходимость в алгоритме для увеличения или иным образом изменения адресной части команд. Он делался вручную в ранних конструкциях. Это стало менее важным, когда индексные регистры и косвенная адресация стали обычными характеристиками, которыми обладает архитектура ЭВМ Джона фон Неймана машины. Другое использование - вставлять часто используемые данные в потоке команды с помощью немедленного решения. Но самомодифицирующийся код в значительной степени подвергся критике, поскольку его, как правило, трудно понять и отладить. Кроме того, он оказался также неэффективным в плане воспроизведения и кэширования схем современных процессоров. По большому счету, способность относиться к инструкции как к данным - это то, что делает ассемблеры, компиляторы, сборщики, погрузчики и другие инструменты с возможными объектами автоматизированного программирования. Так сказать, писать программы, которые пишут программы. В меньшем масштабе повторяющиеся интенсивные операции ввода и вывода, такие как BitBlt-манипуляции с изображением примитивных или пиксельных и вершинных шейдеров в современной 3D-графике, были признаны неэффективными для работы без пользовательского оборудования. Разработка концепции хранимой в памяти программы Математик Алан Тьюринг, который испытывал интерес к проблеме математической логики после лекции Макса Ньюмана в Кембриджском университете, написал статью в 1936 году, она была опубликована в издании Лондонского математического общества. В ней он описал гипотетическую машину, которую назвал «универсальной вычислительной машиной», и которая теперь известна как универсальная машина Тьюринга. Она имела бесконечное хранилище (в современной терминологии - память), которое содержало как инструкции, так и данные, для чего и создавалась данная архитектура. Фон Нейман познакомился с Тьюрингом в то время, когда он был приглашенным профессором в Кембридже в 1935 году, а также в ходе защиты докторской диссертации Тьюринга в Институте перспективных исследований в Принстоне (штат Нью-Джерси) в 1936-1937 годах. Яндекс.Директ Трековые системы освещения! Профессиональное освещение с выгодой до 40%! Свое производство! Звоните! interalighting.ru Системы освещения - Россия! От производителя. Цена завода. Гарантия 7 лет. Проект. Доставка бесплатно. светильники-лед-светодиодные.рф Независимо друг от друга Джи Преспер Эккерт и Джон Мочли, которые разрабатывали ENIAC в школе электротехники в Университете штата Пенсильвания, писали о концепции машины, хранящей программу в памяти в декабре 1943 года. При планировании новой машины, EDVAC, Эккерт писал в январе 1944 года, что она будут хранить данные и программы в новом устройстве с адресацией памяти с помощью задержки металлической ртути. Это был первый раз, когда было предложено строительство на практике машины, хранящей программу в памяти. В то же время он и Мочли не были осведомлены о работе Тьюринга (фото ниже). Архитектура компьютера: принцип фон Неймана Фон Нейман был вовлечен в «Проект Манхэттен» в Национальной лаборатории в Лос-Аламосе, который требовал огромного количества вычислений. Это привлекло его к проекту ENIAC летом 1944 года. Там он вступил в дискуссии по разработке компьютера EDVAC. В рамках этой группы он написал работу под названием «Первый проект доклада о EDVAC», основанную на работе Эккерта и Мочли. Она была незавершенной, когда его коллега Гольдштейн распространил проект с именем фон Неймана (к слову, Эккерт и Мочли были ошарашены такой новостью). Этот документ был прочитан десятками коллег фон Неймана в Америке и Европе и оказал серьезное влияние на следующий этап компьютерных разработок. Основные принципы архитектуры фон Неймана, изложенные в «Первом проекте», набирали широкую известность, в то время как Тьюринг освещал свой доклад об электронном калькуляторе, который был подробно описан в технике и программировании. В нем было изложено и представление автора о машине, которая называлась Automatic Computing Engine (ACE). Он представил его исполнительному комитету британской Национальной физической лаборатории в 1946 году. Спустя некоторое время даже были произведены различные успешные реализации конструкции ACE. Начало реализации проектов И проект фон Неймана, и документы Тьюринга описывали компьютеры, хранящие в памяти определенную программу, но статья фон Неймана достигла большей циркуляции в обществе, и компьютерная архитектура стала известна как архитектура Джона фон Неймана. В 1945 году профессор Нейман, который тогда работал в инженерной школе в Филадельфии, где и был построен первый ENIAC, выпустил от имени группы своих коллег доклад о логическом проектировании цифровых вычислительных машин. В докладе содержится довольно подробное предложение по конструкции машины, которая с тех пор стала известна как EDVAC. Она тогда только недавно была создана в Америке, но доклад вдохновил фон Неймана на создание EDSAC. Maniacs и Joniacs В 1947 году Беркс, Гольдштейн и фон Нейман опубликовали еще один доклад, в котором освещалась конструкция другого типа машины (на этот раз параллельная), которая должна была стать чрезвычайно быстрой, способной, возможно, осуществлять до 20 000 операций в секунду. Они отметили, что нерешенной проблемой при построении ее была разработка подходящей памяти, все содержимое которой должно быть мгновенно доступно. Сначала они предложили использовать специальную вакуумную трубку, называемую Selectron, которая была изобретена в Принстонской лаборатории. Такие трубки были дорогими, и сделать их очень трудно, особенно если используется данная архитектура. Фон Нейман впоследствии решил построить машину, основанную на памяти Williams. Эта машина, которая была завершена в июне 1952 года в Принстоне, стала широко известна MANIAC (или просто Maniacs). Ее дизайн вдохновил создателей на конструирование полудюжины или более аналогичных приборов, которые сейчас строятся в Америке и называются шуточно Johniacs. Принципы создания Один из самых современных цифровых компьютеров, воплощавших разработки и усовершенствования в технике автоматического электронного вычисления, был продемонстрирован в Национальной физической лаборатории в Теддингтоне, где он был спроектирован и построен небольшой группой математиков, электронщиков и инженеров-исследователей, при содействии ряда производственных инженеров из английской Electric Company Ltd. Оборудование до сих пор находится в лаборатории, но только как опытный образец гораздо большей установки, которая известна как Automatic Computing Engine. Но, несмотря на сравнительно небольшую массу и содержание только 800 термоионных клапанов, он является чрезвычайно быстрой и универсальной счетной машиной. Основные понятия и абстрактные принципы расчета с помощью машины были сформулированы доктором Тьюрингом на базе все того же Лондонского математического общества еще в 1936 году, но работа над такими машинами в Великобритании была задержана войной. В 1945 году рассмотрение проблем создания таких устройств продолжилось в Национальной физической лаборатории доктором Вормсли, суперинтендантом лаборатории Отделения математики. Он присоединился к Тьюрингу со своим небольшим штатом специалистов, а к 1947 году предварительное планирование было достаточно продвинуто, чтобы оправдать создание специальной группы. Первые компьютеры на архитектуре фон Неймана Первый проект описывает схему, которая была использована многими университетами и корпорациями, чтобы построить свои компьютеры. Среди них только ILLIAC и ORDVAC имели совместимые наборы инструкций. Классическая архитектура фон Неймана была воплощена в Манчестерской малой экспериментальной машине (SSEM) по прозвищу Baby из университета Манчестера, которая совершила свой первый успешный запуск как устройство, хранящее программу в памяти, 21 июня 1948 года. EDSAC из Кембриджского университета, первый практический электронный компьютер такого типа, был запущен первый раз успешно в мае 1949 года. Развитие созданных моделей IBM SSEC имел возможность рассматривать инструкции как данные и был публично продемонстрирован 27 января 1948 года. Эта способность утверждалась в патенте США. Однако это была частично электромеханическая машина, а не полностью электронная. На практике инструкции были прочитаны с бумажной ленты из-за его ограниченной памяти. Baby был первым полностью электронным компьютером для запуска сохраненных программ. Он запускал программу факторинга в течение 52 минут 21 июня 1948 года после запуска простого вычисления деления и расчета, который показывает, что два числа являются взаимно простыми. ENIAC был изменен, чтобы работать в качестве примитивной ЭВМ только для чтения, но по той же архитектуре, и был продемонстрирован 16 сентября 1948 года, а запуск программы Адель Гольдштейн организовала с помощью фон Неймана. BINAC провел несколько тестовых программ в феврале, марте и апреле 1949 года, хотя и не был завершен до сентября 1949 года. Кроме того, осуществлялись тестовые запуски (некоторые успешные) других электронно-вычислительных машин, для которых свойственна данная архитектура. Фон Нейман, к слову, продолжал работу и над проектом "Манхеттен". Вот такой универсальный человек. Эволюция шинной системы архитектуры Через десятилетия, уже в 60-е и 70-е годы, компьютеры в целом стали меньше и быстрее, что привело к некоторым эволюциям, которые претерпела архитектура ЭВМ по фон Нейману. Например, отображение в памяти ввода и вывода позволяет соответствующим устройствам, данные и инструкции по интеграции в систему которых будут обрабатываться, оставаться в памяти. Одна шинная система может быть использована для обеспечения модульной системы с меньшими. Это иногда называют «рационализацией» архитектуры. В последующие десятилетия простые микроконтроллеры иногда не используют некоторые черты типичной модели, чтобы снизить стоимость и размер. А вот большие компьютеры следуют установленной архитектуре, так как в них добавлены функции для повышения производительности.





Эволюция и классификация операционных систем

Первый период (1945 -1955). В середине 40-х были созданы первые ламповые вычислительные устройства (в США и Великобритании), в СССР первая ламповая вычислительная машина появилась в 1951 году. Программирование осуществлялось исключительно на машинном языке. Элементная база – электронные лампы и коммуникационные панели. Операционных систем не было, все задачи организации вычислительного процесса решались вручную программистом с пульта управления. Системное программное обеспечение - библиотеки математических и служебных подпрограмм.

Второй период (1955 - 1965). С середины 50-х годов начался новый период в развитии вычислительной техники, связанный с появлением новой технической базы - полупроводниковых элементов (транзисторы). В эти годы появились первые алгоритмические языки и, следовательно, первые системные программы - компиляторы. Стоимость процессорного времени возросла, что потребовало уменьшения непроизводительных затрат времени между запусками программ. Появились первые системы пакетной обработки, увеличивающие коэффициент загрузки процессора. Системы пакетной обработки явились прообразом современных операционных систем, они стали первыми системными программами, предназначенными для управления вычислительным процессом. Был разработан формальный язык управления заданиями. Появился механизм виртуальной памяти.

Третий период (1965 - 1975). Переход к интегральным микросхемам. Создание семейств программно-совместимых машин (серия машин IBM System/360, советский аналог - машины серии ЕС). В этот период времени были реализованы практически все основные концепции, присущие современным ОС: мультипрограммирование, мультипроцессирование, многотерминальный режим, виртуальная память, файловая система, разграничение доступа и сетевая работа. В процессорах появился привилегированный и пользовательский режим работы, специальные регистры для переключения контекстов, средства защиты областей памяти и система прерываний. Другое нововведение - спулинг (spooling). Спулинг в то время определялся как способ организации вычислительного процесса, в соответствии с которым задания считывались с перфокарт на диск в том темпе, в котором они появлялись в помещении вычислительного центра, а затем, когда очередное задание завершалось, новое задание с диска загружалось в освободившийся раздел. Появился новый тип ОС - системы разделения времени. В конце 60-х годов начаты работы по созданию глобальной сети ARPANET, ставшей отправной точкой для Интернета. К середине 70-х годов широкое распространение получили мини-компьютеры. Их архитектура была значительно упрощена по сравнению с мейнфреймами, что нашло отражение и в их ОС. Экономичность и доступность мини-компьютеров послужила мощным стимулом к созданию первых локальных сетей. С середины 70-х годов началось массовое использование ОС UNIX. В конце 70-х был создан рабочий вариант протокола TCP/IP, в 1983 году он был стандартизирован.

Четвертый период (1980 - настоящее время). Следующий период в эволюции операционных систем связан с появлением больших интегральных схем (БИС). В эти годы произошел резкий рост степени интеграции и удешевление микросхем. Наступила эра персональных компьютеров. Компьютеры стали широко использоваться неспециалистами. Реализован графический интерфейс пользователя (GUI - Graphical User Interface), теория которого была разработана еще в 60-е годы. С 1985 года стала выпускаться Windows, это была графическая оболочка MS-DOS вплоть до 1995г., когда вышла полноценная ОС Windows 95. IBM и Microsoft совместно разработали операционную систему OS/2. Она поддерживала вытесняющую многозадачность, виртуальную память, графический пользовательский интерфейс, виртуальную машину для выполнения DOS-приложений. Первая версия вышла 1987 г. В дальнейшем Microsoft отказалась от OS/2 и приступила к разработке Windows NT. Первая версия вышла в 1993г.

В 1987г. была выпущена операционная система MINIX (прототип LINUX), она была построена по принципу микроядерной архитектуры.

В 80-е годы были приняты основные стандарты на коммуникационное оборудование для локальных сетей: в 1980 году –Ethernet, в 1985 – Token Ring, в конце 80-х – FDDI. Это позволило обеспечить совместимость сетевых ОС на нижних уровнях, а также стандартизировать интерфейс ОС с драйверами сетевых адаптеров.

В 90-е годы практически все ОС стали сетевыми. Появились специализированные ОС, предназначенные исключительно для решения коммуникационных задач (IOS компании Cisco Systems). Появление службы World Wide Web (WWW) в 1991 году придало мощный импульс развитию популярности Интернета. Развитие корпоративных сетевых операционных систем выходит на первый план. Возобновляется развитие ОС мейнфреймов. В 1991г. была выпущена LINUX. Чуть позже вышла FreeBSD (основой для нее послужила BSD UNIX).

Операционные системы (ОС) классифицируют:

- по особенностям алгоритмов управления ресурсами – локальные и сетевые ОС. Локальные ОС управляют ресурсами отдельного компьютера. Сетевые ОС участвуют в управлении ресурсами сети;

- по числу одновременно выполняемых задач - однозадачные и многозадачные.

- по числу одновременно работающих пользователей - однопользовательские и многопользовательские.

- по возможности распараллеливания вычислений в рамках одной задачи - поддержка многонитевости. Многонитевая ОС разделяет процессорное время не между задачами, а между их отдельными ветвями – нитями;

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

- по отсутствию или наличию в ней средств поддержки многопроцессорной обработки. Многопроцессорные ОС классифицируются по способу организации вычислительного процесса в системе: асимметричные ОС и симметричные ОС.

- -Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам.

- -Симметричная ОС полностью децентрализована и использует весь набор процессоров, разделяя их между системными и прикладными задачами;

- по ориентации на аппаратные средства - операционные системы персональных компьютеров, серверов, мейнфреймов, кластеров;

- по зависимости от аппаратных платформ – зависимые и мобильные. В мобильных ОС аппаратно зависимые места локализованы так, что при переносе системы на новую платформу переписываются только они.

- по особенностям областей использования – ОС пакетной обработки, разделения времени, реального времени. Системы пакетной обработки предназначены для решения задач вычислительного характера, не требующих быстрого получения результатов. В системах с разделением времени каждому пользователю предоставляется терминал, с которого он может вести диалог со своей программой. Системы реального времени применяются для управления различными техническими объектами.

- по построению на базе объектно-ориентированного подхода;

- по наличию нескольких прикладных сред в рамках одной ОС, позволяющих выполнять приложения, разработанные для нескольких операционных систем.;

- по распределению функций операционной системы среди компьютеров сети.

Язык запросов SQL

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

Одним из языков, появившихся в результате разработки реляционной модели данных, является язык SQL (Structured Query Language), который в настоящее время получил очень широкое распространение и фактически превратился в стандартный язык реляционных баз данных. Стандарт на язык SQL был выпущен Американским национальным институтом стандартов (ANSI) в 1986 г., а в 1987 г. Международная организация стандартов (ISO) приняла его в качестве международного. Нынешний стандарт SQL известен под названием SQL/92.

SQL (ˈɛsˈkjuˈɛl; англ. structured query language — «язык структурированных запросов») — язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.

Содержание

[скрыть]

· 1История

o 1.1Первые разработки

o 1.2Стандартизация

o 1.3Вопросы совместимости

· 2Введение

· 3Описание

o 3.1Операторы

· 4Преимущества и недостатки

o 4.1Преимущества

o 4.2Недостатки

· 5Расширения

o 5.1Процедурные расширения

· 6См. также

· 7Примечания

· 8Литература

· 9Ссылки

История[править | править вики-текст]

Первые разработки[править | править вики-текст]

В начале 1970-х годов в одной из исследовательских лабораторий компании IBM была разработана экспериментальная реляционная СУБД IBM System R, для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД. Аббревиатура SEQUEL расшифровывалась как Structured English QUEry Language — «структурированный английский язык запросов». Позже по юридическим соображениям[3] язык SEQUEL был переименован в SQL. Когда в 1986 году первый стандарт языка SQL был принят ANSI (American National Standards Institute), официальным произношением стало [,es kju:' el] — эс-кью-эл. Несмотря на это, даже англоязычные специалисты зачастую продолжают читать SQL как сиквел (по-русски часто говорят «эс-ку-эль»).

Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и Рэй Бойс (Ray Boyce). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостного оптимизатора (cost-based optimizer), Рэймонд Лори (Raymond Lorie) занимался компилятором запросов.

Стоит отметить, что SEQUEL был не единственным языком подобного назначения. В Калифорнийском Университете Беркли была разработана некоммерческая СУБД Ingres (являвшаяся, между прочим, дальним прародителем популярной сейчас некоммерческой СУБД PostgreSQL), которая являлась реляционной СУБД, но использовала свой собственный язык QUEL, который, однако, не выдержал конкуренции по количеству поддерживающих его СУБД по сравнению с языком SQL.

Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании Relational Software Inc. (впоследствии ставшей компанией Oracle) и System/38 от IBM, основанная на System/R.

Стандартизация[править | править вики-текст]

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

В 1983 году Международная организация по стандартизации (ISO) и Американский национальный институт стандартов (ANSI) приступили к разработке стандарта языка SQL. По прошествии множества консультаций и отклонения нескольких предварительных вариантов, в 1986 году ANSI представил свою первую версию стандарта, описанную в документе ANSI X3.135-1986 под названием «Database Language SQL» (Язык баз данных SQL). Неофициально этот стандарт SQL-86 получил название SQL1. Год спустя была завершена работа над версией стандарта ISO 9075-1987 под тем же названием. Разработка этого стандарта велась под патронажем Технического Комитета TC97 (англ. Technical Committee TC97), областью деятельности которого являлись процессы вычисления и обработки информации (англ. Computing and Information Processing). Именно его подразделение, именуемое как Подкомитет SC21 (англ. Subcommittee SC21), курировало разработку стандарта, что стало залогом идентичности стандартов ISO и ANSI для SQL1 (SQL-86).

Стандарт SQL1 разделялся на два уровня. Первый уровень представлял собой подмножество второго уровня, описывавшего весь документ в целом. То есть, такая структура предусматривала, что не все спецификации стандарта SQL1 будут относиться к Уровню 1. Тем самым поставщик, заявлявший о поддержке данного стандарта, должен был заявлять об уровне, которому соответствует его реализация языка SQL. Это значительно облегчило принятие и поддержку стандарта, поскольку производители могли реализовывать его поддержку в два этапа.

Со временем к стандарту накопилось несколько замечаний и пожеланий, особенно с точки зрения обеспечения целостности и корректности данных, в результате чего в 1989 году данный стандарт был расширен, получив название SQL89. В частности, в него была добавлена концепция первичного и внешнего ключей. ISO-версия документа получила название ISO 9075:1989 «Database Language SQL with Integrity Enhancements» (Язык баз данных SQL с добавлением контроля целостности). Параллельно была закончена и ANSI-версия.

Сразу после завершения работы над стандартом SQL1 в 1987 году была начата работа над новой версией стандарта, который должен был заменить стандарт SQL89, получив название SQL2, поскольку дата принятия документа на тот момент была неизвестна. Таким образом, фактически SQL89 и SQL2 разрабатывались параллельно. Новая версия стандарта была принята в 1992 году, заменив стандарт SQL89. Новый стандарт, озаглавленный как SQL92, представлял собой по сути расширение стандарта SQL1, включив в себя множество дополнений, имевшихся в предыдущих версиях инструкций.

Как и SQL1, SQL92 также был разделён на несколько уровней, однако, во-первых, число уровней было увеличено с двух до трёх, а во-вторых, они получили названия вместо порядковых цифр: начальный (англ. entry), средний (англ. intermediate), полный (англ. full). Уровень «полный», как и Уровень 2 в SQL1 подразумевал весь стандарт целиком. Уровень «начальный» представлял собой подмножество уровня «средний», в свою очередь, представлявшего собой подмножество уровня «полный». Уровень «начальный» был сравним с Уровнем 2 стандарта SQL1, но спецификации этого уровня были несколько расширены. Таким образом, цепочка включений уровней стандартов выглядела примерно следующим образом: SQL1 Уровень 1 → SQL1 Уровень 2 → SQL92 «Начальный» → SQL92 «Средний» → SQL92 «Полный».

После принятия стандарта SQL92 к нему были добавлены ещё несколько документов, расширявших функциональность языка. Так, в 1995 году был принят стандарт SQL/CLI (Call Level Interface, интерфейс уровня вызовов), впоследствии переименованный в CLI95. На следующий год был принят стандарт SQL/PSM (Persistent Stored Modules, постоянно хранимые модули), получивший название PSM-96.[4]

Следующим стандартом стал SQL:1999 (SQL3). В настоящее время действует стандарт, принятый в 2003 году (SQL:2003) с небольшими модификациями, внесёнными позже (SQL:2008). История версий стандарта:

 

Год

Название

Иное название

Изменения

SQL-86

SQL-87

Первый вариант стандарта, принятый институтом ANSI и одобренный ISO в 1987 году.

SQL-89

FIPS 127-1

Немного доработанный вариант предыдущего стандарта.

SQL-92

SQL2, FIPS 127-2

Значительные изменения (ISO 9075); уровень Entry Level стандарта SQL-92 был принят как стандарт FIPS 127-2.

SQL:1999

SQL3

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

SQL:2003

 

Введены расширения для работы с XML-данными, оконные функции (применяемые для работы с OLAP-базами данных), генераторы последовательностей и основанные на них типы данных.

SQL:2006

 

Функциональность работы с XML-данными значительно расширена. Появилась возможность совместно использовать в запросах SQL и XQuery.

SQL:2008

 

Улучшены возможности оконных функций, устранены некоторые неоднозначности стандарта SQL:2003[5]

Вопросы совместимости[править | править вики-текст]

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

До 1996 года вопросами соответствия коммерческих реализаций SQL стандарту занимался в основном Национальный институт стандартов и технологий (NIST), который и устанавливал уровень соответствия стандарту. Поздне́е подразделение, занимавшееся СУБД, было расформировано, и на текущий момент все усилия по проверке СУБД на соответствие стандарту ложатся на её производителя.

Впервые понятие «уровня соответствия» было предложено в стандарте SQL-92. А именно, ANSI и NIST определяли четыре уровня соответствия реализации этому стандарту:

1. Entry (базовый)

2. Transitional (переходный) — проверку на соответствие этому уровню проводил только NIST

3. Intermediate (промежуточный)

4. Full (полный)

Легко можно понять, что каждый последующий уровень соответствия заведомо подразумевал соответствие предыдущему уровню. Далее, согласно данной «лесенке» стандартов любая СУБД, которая соответствовала уровню Entry, могла заявлять себя как «SQL-92 compliant» («совместимая с SQL-92»), хотя на самом деле переносимость и соответствие стандарту ограничивалось набором возможностей, входящих в этот уровень.

Положение изменилось с введением стандарта SQL:1999. Отныне стандарт приобрёл модульную структуру — основная часть стандарта была вынесена в раздел «SQL/Foundation», все остальные были выведены в отдельные модули. Соответственно, остался только один уровень совместимости — Core, что означало поддержку этой основной части. Поддержка остальных возможностей оставлена на усмотрение производителей СУБД. Аналогичное положение имело место и с последующими версиями стандарта.

Введение[править | править вики-текст]

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

Изначально SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций:

· создание в базе данных новой таблицы;

· добавление в таблицу новых записей;

· изменение записей;

· удаление записей;

· выборка записей из одной или нескольких таблиц (в соответствии с заданным условием);

· изменение структур таблиц.

Со временем SQL усложнился — обогатился новыми конструкциями, обеспечил возможность описания и управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры) — и стал приобретать черты, свойственные языкам программирования.

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

Описание[править | править вики-текст]

Язык SQL представляет собой совокупность

· операторов

· инструкций

· вычисляемых функций

Операторы[править | править вики-текст]

Согласно общепринятому стилю программирования, операторы (и другие зарезервированные слова) в SQL обычно рекомендуется писать прописными буквами.[6]

Операторы SQL делятся на:

· операторы определения данных (Data Definition Language, DDL):

· CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.),

· ALTER изменяет объект,

· DROP удаляет объект;

· операторы манипуляции данными (Data Manipulation Language, DML):

· SELECT выбирает данные, удовлетворяющие заданным условиям,

· INSERT добавляет новые данные,

· UPDATE изменяет существующие данные,

· DELETE удаляет данные;

· операторы определения доступа к данным (Data Control Language, DCL):

· GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом,

· REVOKE отзывает ранее выданные разрешения,

· DENY задает запрет, имеющий приоритет над р

Наши рекомендации