Основными целями разработчиков System R являлись
следующие:
обеспечить ненавигационный интерфейс высокого
уровня пользователя с системой, позволяющий достичь независимости данных и дать
возможность пользователям работать максимально эффективно;
обеспечить многообразие
допустимых способов использования СУБД, включая программируемые транзакции, диалоговые
транзакции и генерацию отчетов;
поддерживать динамически изменяемую среду
баз данных, в которой отношения, индексы, представления, транзакции и другие объекты
могут легко добавляться и уничтожаться без приостановки нормального функционирования
системы;
обеспечить возможность параллельной работы с одной базой данных многих
пользователей с допущением параллельной модификации объектов базы данных при наличии
необходимых средств защиты целостности базы данных;
обеспечить средства восстановления
согласованного состояния баз данных после разного рода сбоев аппаратуры или программного
обеспечения;
обеспечить гибкий механизм, позволяющий определять различные
представления хранимых данных, и ограничивать этими представлениями доступ пользователей
к базе данных по выборке и модификации на основе механизма авторизации;
обеспечить
производительность системы при выполнении упомянутых функций, сопоставимую с производительностью
существующих СУБД низкого уровня.
Структурная организация System R вполне
согласуется с поставленными при ее разработке целями. Основными структурными компонентами
System R являются система управления реляционной памятью (Relational Storage System
- RSS) и компилятор запросов языка SQL. RSS обеспечивает интерфейс довольно низкого,
но достаточного для реализации SQL уровня для доступа к хранимым в базе данным.
Синхронизация транзакций, журнализация изменений и восстановление баз данных после
сбоев также относятся к числу функций RSS. Компилятор запросов использует интерфейс
RSS для доступа к разнообразной справочной информации (каталогам отношений, индексов,
прав доступа, условий целостности, условных воздействий и т.д.) и производит рабочие
программы, выполняемые в дальнейшем также с использованием интерфейса RSS. Таким
образом, система естественно разделяется на два уровня - уровень управления памятью
и синхронизацией, фактически, не зависящий от базового языка запросов системы,
и языковой уровень (уровень SQL), на котором решается большинство проблем System
R. Заметим, что эта независимость скорее условная, чем абсолютная: язык SQL можно
заменить на другой язык, но он должен обладать примерно такой же семантикой.