2009 г.
О пользе классики, полу-классики и не-классики вообще
Сергей Кузнецов
К написанию этой заметки меня подвигло создание в разделе «Базы данных» библиотеки CITForum.ru раздела Классика. За многолетнюю историю исследований и разработок в области баз данных были написаны тысячи статей, посвященных различным проблемам теории и практики этой дисциплины, многие из которых оказали существенное влияние на развитие области. В мировом сообществе баз данных принято считать, что знание этих статей является необходимым не только для его членов, но и для студентов и аспирантов, специализирующихся в области компьютерных наук вообще, а также для грамотных разработчиков приложений и пользователей баз данных.
Об этом, в частности, свидетельствует успех хрестоматии Майкла Стоунбрейкера (Michael Stonebraker) и Джозефа Хеллерстейна (Joseph M. Hellerstein) Readings in Database Systems, выдержавшей уже четыре издания (причем состав каждого нового издания хрестоматии существенно обновлялся). К сожалению, эти хрестоматии недоступны в Internet в полностью открытом доступе. Чтобы иметь возможность читать классику систем баз данных в подборке Стоунбрейкера&Хеллерстейна, необходимо подписаться на услуги электронной библиотеки ACM или, по крайней мере, получить доступ к оффлайновой антологии ACM SIGMOD.
Мне всегда хотелось, чтобы лучшие статьи из области баз данных можно было читать по-русски. Возможно, я не совсем прав, поскольку в современном мире все компьютерные профессионалы обязаны уметь без проблем читать технические английские тексты, но мне нравится, когда у хороших статей (и книг) имеются (хорошие!) переводы на русский язык. Поэтому в течение многих лет я сам переводил нравящиеся мне статьи и стимулировал это занятие у других людей.
Однако до начала 2009 г. эти переводы были частично рассеяны среди других материалов библиотеки CITForum.ru, а частично погружены в глубокие Internet-запасники издательского дома «Открытые системы», где они в свое время публиковались в журнале «Системы управления базами данных (СУБД)». Статьи, которые с самого начала публиковались на CITForum.ru, переводил я, а переводчиком многих статей для журнала «СУБД» являлся Михаил Рувимович Когаловский.
К настоящему времени (середина марта 2009 г.) работа по начальному формированию раздела Классика почти завершена. Она оказалось не очень легкой и быстрой, поскольку переводы из журнала «СУБД» пришлось основательно редактировать, улучшать качество верстки и т.д. (все-таки после их исходной публикации прошло изрядное время, и мои требования к качеству переводов стали строже). Почти во всех случаях удалось обеспечить ссылку на свободно доступный в Internet оригинал статьи.
Конечно, состав раздела Классика во многом отражает мои личные вкусы. Безусловно, работу над его совершенствованием и развитием необходимо продолжать. Но уже сейчас он может принести огромную пользу студентам, аспирантам, преподавателям и всем другим людям, которые хотят лучше понимать истоки технологии баз данных и перспективы ее развития.
Так, например, статьи Эдгара Кода (E.F. Codd) Реляционная модель данных для больших совместно используемых банков данных, Дона Чемберлина (D.D. Chamberlin) и др. SEQUEL 2: унифицированный подход к определению, манипулированию и контролю данных , Мойше Злуфа (M. M. Zloof) Query-by-Example: язык баз данных, Питера Чена (Peter Pin-Shan Chen) Модель "сущность-связь" – шаг к единому представлению о данных , Пола МакДжонса (Paul McJones, ред.) Воссоединение SQL в 1995 г.: люди, проекты, политика позволяют лучше понять пути, которые привели к сегодняшним «реляционным» системам управления базами данных.
Статьи Патриции Селинджер (P. Griffiths Selinger) и др. Выбор пути доступа в реляционной системе управления базами данных, Матиаса Ярке (Matthias Jarke) и Юргена Коха (Jurgen Koch) Оптимизация запросов в системах баз данных, Сураджита Чаудхари (Surajit Chaudhari) Обзор методов оптимизации запросов в реляционных системах, к которым я нескромно добавлю свою («не классическую») старую статью Методы оптимизации выполнения запросов в реляционных СУБД, дают представление о том, как производится компиляция и оптимизация SQL-запросов.
В статьях Малькольма Аткинсона (Malcolm Atkinson) и др. Манифест систем объектно-ориентированных баз данных, Майкла Стоунбрейкера и др. Системы баз данных третьего поколения: Манифест, Хью Дарвена (Hugh Darwen) и Кристофера Дейта (C.J.Date) Третий манифест, к которым я (опять-таки нескромно) добавлю свою обзорную статью Три манифеста баз данных: ретроспектива и перспективы, описываются идеи трех основных конкурирующих направлений в области баз данных.
Статьи Филиппа Бернштейна (Phil Bernstein) и др. Асиломарский отчет об исследованиях в области баз данных, Джима Грея (Jim Gray) и др. Управление научными данными в следующем десятилетии, Ави Зильбершатца (Avi Silberschatz), Майкла Стоунбрейкера и Джеффа Ульмана (Jeff Ullman) (ред.) Базы данных: достижения и перспективы на пороге 21-го столетия, Ракеша Агравала (Rakesh Agrawal) и др. Клермонтский отчет об исследованиях в области баз данных, к которым я снова вынужден присоединить свои обзоры Крупные проблемы и текущие задачи исследований в области баз данных, Будущие направления исследований в области баз данных: десять лет спустя и Ландшафт области управления данными: аналитический обзор дают представление о наиболее важных теоретических и практических проблемах, которые приходилось (и приходится) решать в области баз данных в течение последних двадцати лет.
И так далее. Классика есть классика. Можно относиться к ней по-разному, но знать нужно обязательно.
Однако это еще далеко не все, что я хотел сказать в этой заметке. В библиотеке CITForum.ru раздела Классика накопилось множество материалов, посвященных тематике баз данных. Некоторые из них являются безусловными претендентами на перенос в раздел Классика, но я пока на это не решился, а другие на это не претендуют, но, тем не менее, заслуживают пристального внимания. Я обнаружил, что по причине очень большого числа публикаций в них трудно ориентироваться даже мне самому, и решил в этой заметке навести хотя бы относительный порядок.
Начну с колонок Криса Дейта. В 1998 г. он вел свою колонку в журнале DataBase Programming & Design OnLine. В свое время я пересказал несколько таких заметок, и, на мой взгляд, они представляют интерес и сейчас. Заметка «Обсуждение избыточности языка SQL» была опубликована в двух частях, переводы которых находятся здесь и здесь. В этой заметке обсуждается избыточность конструкций GROUP BY и HAVING. В заметке «Инкапсуляция сбивает с толку» Дейт объясняет подход к инкапсуляции скалярных типов, принятый в Третьем манифесте.
В октябре 1998 г. журнал DataBase Programming & Design перестал существовать как отдельная сущность, и Дейт стал вести колонку в журнале Intelligent Enterprise. Первая его заметка в колонке этого журнала называлась «Рождение реляционной модели». Она была опубликована в трех частях, переводы которых находятся здесь, здесь и здесь. Эту заметку очень полезно читать вместе со статьей Кодда Реляционная модель данных для больших совместно используемых банков данных. За ней последовали заметки Реляционная алгебра Кодда и «Подъязык данных Alpha». Последняя заметка была также опубликована в двух частях, перевод которых можно найти здесь и здесь. За этим последовала замечательная серия заметок, посвященных 30-летию реляционной модели данных: Анализ вклада Кодда в Великий Спор, Когда расширение не является расширением? и Реляционная модель выдержит испытание временем. Не следует думать, что чтение этих заметок можно заменить чтением книг Дейта, переведенных на русский язык. Заметки написаны гораздо более живым языком, содержат много полемики и действительно помогают понять суть реляционной модели данных.
Я очень люблю читать и переводить статьи и книги Кристофера Дейта. В нашей библиотеке можно найти еще много других переводов статей этого автора, но здесь я воздержусь от их перечисления. В конце концов, все они ищутся поиском по ключевому слову «Дейт».
Интересный набор статей имеется на тему представления в базах данных отсутствующей информации. Здесь я укажу на статью Тома Джонсона (Tom Johnson) Неудача со значениями по умолчанию, свою статью Дубликаты, неопределенные значения, первичные и возможные ключи и другие экзотические прелести языка SQL, статью Клода Рубинсона (Claude Rubinson) NULL, трехзначная логика и неопределенность в SQL: критика критики Дейта и свою заметку Критика критики критики Дейта, а также на статьи Криса Дейта Критика статьи Клода Рубинсона «NULL, трехзначная логика и неопределенность в SQL: критика критики Дейта», Джона Гранта (John Grant) Неопределенные значения в SQL и опять же свою заметку И снова о вечной проблеме отсутствующей информации. Чтение этого материала представляется мне интересным и очень поучительным.
В библиотеке CITForum.ru опубликованы переводы основных статей Майкла Стоунбрейкера и его коллег относительно преимуществ специализированных средств управления данными. Многие авторитетные специалисты считают этот подход наиболее пригодным для будущего развития технологии баз данных. Стоит прочитать статьи «Один размер пригоден для всех»: идея, время которой пришло и ушло, Пригоден ли один размер для всех? Часть 2: результаты тестовых испытаний, Конец архитектурной эпохи, или Наступило время полностью переписывать системы управления данными, СУБД с хранением данных по столбцами и по строкам: насколько они отличаются в действительности? и мою заметку Универсальность и специализация: время разбивать камни?.
Для тех, кого волнуют проблемы объектно-ориентированного программирования баз данных и объектно-реляционного отображения, в нашей библиотеке имеются переводы статей Теда Ньюарда (Ted Neward) Вьетнам компьютерной науки и дискуссии Персистентность данных в объектно-ориентированных приложениях (Часть 1 и Часть 2).
Наконец, хочу обратить внимание на (пока) одиночные статьи, которые представляют значительный интерес. В статье Майкла Франклина (Michael Franklin), Элона Хэлеви9Alon Halevy) и Дэвида Майера (David Maier) От баз данных к пространствам данных: новая абстракция управления информацией предлагается новая концепция управления разнородными и распределенными данными. При таком подходе данные интегрируются ровно настолько, насколько это требуется в конкретном приложении. Используются разнообразные методы и средства управления данными. Возможно, вместе с этой статьей не помешает прочитать и мою статью Предвестники новых манифестов управления данными.
Пока в нашей библиотеке имеется перевод всего одной статьи, посвященной транзакционной памяти – подходу, позволяющему использоваться свойство атомарности транзакционных транзакций при параллельном программировании. Статья Джеймса Ляруса (James Larus) и Кристоса Козиракиса (Christos Kozyrakis) Транзакционная память является хорошим введением в этот предмет. Перевод помещен в раздел «Базы данных», потому что я считаю это направление очень перспективным для будущих систем управления базами данных в основной памяти.
Наконец, хочу обратить внимание на статью Гоца Грейфа (Goetz Graefe) Правило пяти минут двадцать лет спустя, и как флэш-память изменяет правила. В этой статье, ранние варианты которой писались Грейфом вместе в Джимом Греем, демонстрируется перспективность флэш-памяти для организации систем управления данными. Не исключено, что прогресс в технологии твердотельных накопителей приведет к революции в области баз данных.
Не следует думать, что в этой небольшой заметке мне удалось коснуться всех богатств раздела «Базы данных» нашей библиотеки. Обратите внимание, что все это абсолютно свободно доступно. Хотелось бы, чтобы накопленные материалы использовались максимально эффективно.