to
Ognev
Сначала про
реляционную алгебру (relation algebra, РА). Это одна из двух формальных систем (алгебраических систем, см.
Как увидеть ссылки? | How to see hidden links?, там понятно, хотя и слишком лаконично; но можно взять учебник по высшей алгебре) для описания и манипулирования
отношениями (relation) на
кортежах (tuple), образующих
логическую модель данных. Вторая система -
реляционное счисление (или исчисление), оно эквивалентно РА. Отличия, если по-простому, в том, что выражения РА являются набором
предписаний, а выражения счисления - набором
описаний. Существует несколько различных вариантов формализации РА!
Язык SQL - по сути, язык реляционного счисления (с кучей дополнений), он является реляционно полным, то есть может описать любое отношение.
Для введения в предмет мне нравится книга Дейта:
Дейт К. Введение в системы баз данных, 8-е издание. — Вильямс, 2005. – 1328 с.
Произведения Кодда нравятся меньше - читать труднее, хотя и надо, так как первоисточник.
Кстати, знаменитые правила (или свойства) Кодда, также как, и правила Дейта, - это некоторая идеализация, которая очевидным образом сталкивается лбом с проблемами прозрачности и эффективности.
Рекомендую почитать знаменитые "манифесты", а затем комментарии, например
Как увидеть ссылки? | How to see hidden links? и
Как увидеть ссылки? | How to see hidden links?.
И ещё, никому не советую глубоко копаться в Википедии (IMHO). Там хорошо посмотреть, есть ли какое-либо понятие и про что оно. Но количесво ошибок при описании серьёзных и глубоких вопросов просто поражает (хотя есть приятные ислключения).
Теперь о "современных парадигмах создания распределённых систем".
Совсем в сжатом очень тяжело. Так что не пинайте сильно.
Во-первых, обсуждать парадигмы проектирования бессмысленно без знакомства с современной инфраструктурой. Поэтому, если кто не лазил (я думаю, что все уже лазили
), придётся залезть на
Как увидеть ссылки? | How to see hidden links? и почитать стандарты на XML, SOAP, WSDL, RDF, OWL, XQuery, ..........., и т.п, затем залезть куда угодно (мест полно) и почитать про технологии сетевого взаимодействия программных компонентов (RPC, DCOM, CORBA, RMI, MSMQ, .NET Remoting, MPI, ...........). Без базового представления об инфраструктуре не обойтись.
Теперь собственно про парадигмы. Основная мысль - создание сервисно-ориентированных истинно распределённых информационных систем (с вертикальным и горизонтальным распределением) на основе компонентного программирования. Вертикальное распределение предусматривает обязательное выделение нескольких (минимум 4!) уровней абстракции (отсюда многослойные архитектуры). Горизонтальное распределние в основном связано с территориальным распределением и масштабированием, сводясь к параллельному выполнению кода и распределённому хранению данных (отсюда репликация и кэширование). Компонентные технологии для этого обязательны, чтобы бороться со сложностью, и предполагают использование чётких и прозрачных интерфейсов, согласование форматов данных и протоколов взаимодействия, а также удобство интеграции и высокий уровень повторного использования. Ещё одно ключевое слово - это
виртуализация (представление любых ресурсов в нужном потребителю виде, независимо от потребностей других потребителей). ВИртуализация позволяет реально создавать истинно гетерогенные системы (например, GRID-технологии).
Некоторые источники:
Microsoft patterns & practices Developer Center:
Как увидеть ссылки? | How to see hidden links?
Software Architecture: Past, Present and Future:
Как увидеть ссылки? | How to see hidden links?
Поддержка разработки распределенных приложений в Microsoft .NET Framework:
Как увидеть ссылки? | How to see hidden links?
Некоторая литература:
1. Э. Таненбаум, М. ван Стен. Распределённые системы. Принципы и парадигмы. — СПб.: Питер, 2003. – 877 с.
2. Л. Басс, П. Клементс, Р. Кацман. Архитектура программного обеспечения на практике. — Питер, 2006. – 576 с.
3. Бертран Мейер. Объектно-ориентированное конструирование программных систем. — Русская Редакция, 2005. – 1204 с.
4. Хоп Г., Вульф Б. Шаблоны интеграции корпоративных приложений. — Вильямс, 2006. – 672 с.
5. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приёмы объектно-ориентированного проектирования. Паттерны проектирования. — Питер, 2001. – 368 с.
Источников очень много, где-то наверняка есть и красивое сжатое изложение. Кто найдёт - тоже буду признателен.
P.S. Перечитал - понял, что получился оффтопик, но ведь в ответ на вопрос!
P.P.S. Может, новую тему сделать - типа "Доступ к данным в программных продуктах"?