RxO СУБД новое решение для быстрой разработки

advertisement
RxO СУБД
новое решение для быстрой разработки эффективных и
гибких бизнес систем.
Текущая ситуация.
Традиционно, информационные бизнес системы представляют собой комбинацию
приложений, реализующего бизнес-логику и интерфейс пользователя, и реляционной
базы данных, служащей для хранения данных.
Business model in an application
DBMS (persistent data)
Почему?
Реляционные СУБД.
Бизнес системы подразумевают хранение больших объемов данных. Реляционные СУБД
реализуют надежное хранение данные. Также они обладают другими важными для ИБС
способностями. Они позволяют обрабатывать данные, легко модифицировать
существующие схемы данных, обеспечиваю многопользовательскую работу, реализуют
транзакции. Для реляционных СУБД существуют общепринятые стандарты языка
управления (SQL) и интерфейсов доступа. Они открыты для использования другими
системами.
The business
RDBMS (persistent table model)
SalesHeaders
Empoloyees
100
John
SalesItems
Ledger
$10
Junk 1
Однако реляционные СУБД не подходят для создания сложных бизнес моделей.
Попытки расширить реляционные СУБД новыми возможностями по управлению
сложностью (без использования дополнительных систем программирования) до сих пор
оканчивались неудачей. Поэтому для создания сложных бизнес моделей используются
внешние по отношению к РСУБД системы
Бизнес объекты.
Для управления сложной логикой бизнеса объектно-ориентированный (ОО) подход
выглядит наилучшим решением. Результатом его применения являются так называемые
бизнес объекты, напрямую моделирующие те или иные моделируемой предметной
области.
В настоящее время существует две основные альтернативы для описания и создания
бизнес объектов.
- Использование универсальных ОО систем программирования
- Использование специализированных бизнес инструментов
Универсальные систем программирования
Универсальные ОО-языки очень выразительны. Однако сами по себе они не подходят
для создания долгоживущих бизнес моделей. Для созданного с их помощью приложения
необходимо внешнее хранилище. Затраты только на организацию обмена между
приложением и БД составляет около трети стоимости проектов (мнение Мартина
Фаулера). Кроме того…
- В отличие от реляционных систем, здесь отсутствуют возможности для легкого
выполнения групповых операций, применяемых для генерации отчетов, выполнения
незапланированных запросов.
- Созданная модель статична. В отличие от реляционных систем, для изменения структур
нужно вносить изменения в исходный код программы и перезапускать ее целиком.
The business
Business model in OO application
Empoloyees
John
Sales
100
Ledger
$10
Junk 1
DBMS (persistent data)
Решение этих задач требует значительных усилий программистов, что выливается во
временные и финансовые затраты.
Специализированные бизнес-инструменты.
Для решения задач бизнеса используются специализированные бизнес инструменты
(SAP, Navision, 1C etc). Их можно рассматривать как виртуальные среды, позволяющие
описывать и манипулировать бизнес объектами. Это сложные приложения, соединяющие
функции
- специализированных системы программирования, включающих свой язык (не
всегда объектно-ориентированный), предопределенные типы данных и, как
правило, готовая схема данных (так называемая стандартная конфигурация)
- СУБД, выполняющие функции управления доступом, построения запросов,
выполнения транзакции
- конструктора интерфейса пользователя (в.т.ч. WEB- интерфейса)
Взаимодействие с РСУБД в них практически скрыто от пользователя.
The business
Business model in business tools
Empoloyees
John
Sales
100
Ledger
$10
Junk 1
DBMS (persistent data)
Недостатки:
- обычно присутствует избыточный стандартный функционал (конфигурация)
результатом чего являются неоправданно тяжелые, требовательные к ресурсам
системы,
- стандартный функционал часто несоответствует реальным требованиям бизнеса,
необходимы доработки,
- необходимы специалисты по этим системам,
- закрытость (требуются значительные усилия для сопряжения с 3-ми системами),
- высокая стоимость решений
Принципиальный недостаток.
Низкая производительность - принципиальный недостаток любых систем, где
инструмент построения бизнес модели отделен от СУБД, служащей для хранения
данных.
Business model in application
Data exchange and
transformation
DBMS (persistеnt data)
Причины низкой производительности:
- процесс обработки связан с постоянным обменом данными между приложением и
СУБД,
- неэффективный обмен при групповой обработке данных (например, запросы по
набору объектов),
- реализация сложной логики вне сервера в многопользовательской среде
значительно увеличивает возможность конфликтов и взаимных блокировок.
Сравнение существующих решений.
Возможности необходимые для создания и использования бизнес моделей в
существующих подходах.
РСУБД
Выразительность, управление
сложностью
Изменчивость
+
Скорость
Открытость,
соответствие
стандартам
Универсальные ОО
языки + РСУБД
+
Бизнес инструменты
+
+
+
+
-(обусловлена
статичностью ОО
приложения)
-
3+ 1-
1+ 3-
2+ 2-
Небольшая
Большая
Большая
(обусловлена
сложностью
архитектуры)
Маленькая
Большая (обусловлена
спецификой
инструмента)
Оценка стоимости владения
Стоимость
Маленькая
приобретения
Стоимость
Большая
создания и
(обусловлено
модификации
невыразительностью)
Стоимость
Маленькая
эксплуатации
Большая
Большая
-
Средняя (оплата
поддрежки)
Очень большая
RxO СУБД – эволюционное развитие реляционных СУБД до
полноценных объектно-ориентированных систем.
Business model in RxO DBMS
(complex persistent objects and tables together in DBMS)
Empoloyees
John
Sales
100
Junk 1
Ledger
$10
RxO СУБД обладает всеми необходимыми возможностями для построения сложных
бизнес моделей в самой СУБД, без использования внешних языков программирования и
бизнес инструментов.
- позволяет создавать выразительные, активные бизнес модели и легко развивать эти
модели в соответствии с новыми потребностями бизнеса,
- полностью свободно от
проблем обмена данными между ОО-приложением,
реализующим сложную бизнес-логику, и реляционной базой данных,
- дает принципиально новые возможности для осмысленного изменения данных в
бизнес модели,
- обеспечивает эволюционный переход на новую архитектуру с сохранением
существующих данных.
Эти возможности реализуются в нескольких новых командах, являющихся объектноориентированным расширением SQL.
Эволюционность.
RxO - это не продукт а ноу-хау, которое позволяет расширить любую из
существующих реляционных СУБД до RxO СУБД.
Использование новых возможностей не требует отказа от существующих СУБД и
пользовательских систем и их тотальной переделки.
RxO СУБД сохраняет и максимально использует функционал существующих СУБД.
Реализация новые возможности не требует от вендоров значительных изменений кода
существующих СУБД. Использование существующего функционала позволяет
использовать проверенные наработки, сохранить надежность существующих РСУБД.
Полностью сохраняется имеющиеся у них возможности, таких как протоколы доступа,
контроль пользователей, управление транзакциями и т.д.
RxO СУБД может быть предложена пользователю как развитие существующих РСУБД,
в виде новой версий продуктов. Они могут использоваться взамен старых версий в уже
существующих пользовательских системах и базах данных. Для пользователя
обеспечивается полная преемственность решений.
RxO СУБД –средство для простого создания сложных бизнес-моделей.
RxO схема данных является единым и полным описанием бизнес модели, соединяющим
объектные и реляционные структуры данных. . Модель создается и управляется с
использованием набора непроцедурных команд (расширение SQL).
The business
Business model in RxO DBMS
(complex persistent objects and tables together in DBMS)
Empoloyees
John
Sales
100
Junk 1
Ledger
$10
Сохраняя все возможности реляционных систем, RxO СУБД позволяет
- создавать и использовать в единой схеме данных и реляционные (таблицы и виды)
и объектно-ориентированные (классы) структуры хранения и обработки данных,
связанные ключами и ссылками,
- описывать, создавать и использовать сложные бизнес объекты,
- переопределять реализации классов при множественном наследовании,
- выполнять любые действия над группами объектов, в том числе
- выполнять методы объектов,
- получать данные, описывающие состояние объектов, в том числе с помощью
незапланированных запросов (запросы могут комбинировать данные из
табличных и объектных структур)
Гибкость сложных бизнес моделей.
Вдобавок к традиционным для РСУБД возможностям по изменению табличных
структур, RxO СУБД обладает следующими возможностями по изменению сложных
бизнес моделей:
- создания новых или наследования существующих классов,
- изменения структуры существующих классов,
- изменения реализаций методов и атрибутов классов.
Эти действия выполняются непроцедурными командами, и не требуют перестроения или
перезагрузки системы. Таким образом, долговременно существующая, сложная бизнес
модель легко быть изменена в соответствии с новыми условиями бизнеса.
Развиваемые объекты - новое измерение гибкости сложных бизнес
моделей.
("Progressed objects")
В бизнесе достаточно часто встречаются ситуации, когда изменение затрагивают не
только количественные ("повысили зарплату"), но и качественные характеристики
объекта. Например, что делать с объектом класса "Сотрудник", на который ссылаются
другие бизнес объекты (например "HR-отдел" и "библиотека"), если описываемый им
сотрудник переведен в менеджеры, которые описываются классом-наследником
"Менеджеры"?
В существующих ОО языках и бизнес инструментах отсутствуют возможности,
позволяющие отразить такого рода изменения. Традиционно объекты не могут изменить
принадлежность к классу в процессе существования. В этих случаях обычно создается
новый объект вместо существующего. Однако надо учитывать, что на удаляемый объект
могут ссылаться другие объекты системы. Что бы сохранить целостность модели,
необходимо отследить и перестроить существующие связи между объектами, что
является нетривиальной задачей.
RxO СУБД обладает простыми возможностями для отображения таких изменений.
Существующий объект может изменить свой класс в рамках существующей иерархии
наследования (последнее гарантирует неизменность его интерфейса, сохраняет
возможность использования статической типизации). При этом сохраняются все
существующие в системе связи с этим объектом.
CREATE CLASS Employsee ...
NEW Employee BEGIN SET .Name = "John" ...
CREATE CLASS Manager ... EXTENDS Employee ...
PROGRESS Employee[.Name = John] TO Manager...
Развиваемые объекты дают новые возможности для изменений бизнес модели, когда
- новые потребности бизнеса описываются в новом классе, который наследует
существующий (базовый) класс,
- существующие объекты базового класса развиваются до нового класса.
Тем самым RxO реализует новое измерение гибкости и выразительности бизнес
моделей.
Эффективная работа
Перенос логики обработки данных из клиентского ПО на сервер
дает колоссальный прирост скорости обработки данных в бизнес
системах. RxO СУБД является единой средой, которая
окончательно соединяет функции хранения и обработки данных
сложных бизнес моделей.
Business model in an application
DBMS (persistent data)
Это достигается за счет прямого преобразования любых команд, описывающих действия
с объектами, в команды исполняющего реляционного ядра, выполняющие действия над
данными в таблицах.
SQL
+
OO commands
relational
DATA
Business model in RxO DBMS
R
O translator
Relational DBMS KERNEL
Сложная логика обработки бизнес объектов не требует создавать их экземпляры в
оперативной памяти внешнего приложения. Деление между физическими устройствами
(дисками и оперативной памятью) скрыто в исполняющем реляционном ядре. Такой
подход
- значительно ускоряет работу бизнес системы в целом. Все действия по обработке
данных, описанных в терминах сложной бизнес модели, выполняются на сервере
и не требуют обмена данными с внешними приложениями.
- принципиально упрощает разработку. Отсутствие логическое деление между
"хранимыми" и "обрабатываемыми" данными делает ненужным "открывать" и
"сохранять" сложные бизнес объекты, отображать сложные структуры в таблицы,
организовывать обмен между хранилищем и бизнес приложением.
Эффективная групповая обработка данных
Инновационным фактором эффективности является новая возможность по групповой
обработке сложных бизнес-объектов (например, запрос по множеству объектов,
использующий атрибут, вычисляемый по сложному алгоритму). В RхO СУБД такие
команды,
после
преобразования,
выполняются
реляционным
ядром
как
последовательность групповых действий над таблицами без перебора их строк по
отдельным объектам. Любой алгоритм преобразуется таким образом, что каждый его шаг
выполняется сразу для группы объектов, формируя групповой результатов.
Object group processing in traditional systems means that the algorithm
performs in loop for each object of the processed group.
// source code*
For each o FROM objects
BEGIN
…
… o.a + o.b
…
END
о1
…
…
…a1 + b1
о3
о2
… a2 + b2
…
… a3 + b3
*pseudocode
…
…
…
RxO
translator
//target code after RxO translation*
BEGIN
…
… SELECT …a +.b
…
END
*pseudocode
After RxO translation each step of the algorithm performs for
all objects of the processed group.
…
…a1 + b1
…
…
…a2 + b2
…
…
…a3 + b3
…
Возможность этого преобразования показана формально для любых алгоритмов. Оно
позволяет наиболее эффективно использовать исполняющее реляционное ядро, которое
оптимизировано для таких действий.
Возможности для эффективной параллельной работы.
RхO трансляция отображает алгоритм, описывающий действия по обработке объекта, в
аналогичную последовательность действий над таблицами реляционной БД,
содержащими данные о множестве таких объектов. Очевидно, что если шаги алгоритма
не связаны по данным, они могут выполняться параллельно.
// source code*
For each o FROM objects
BEGIN
…
b=b+a //"b" are stored in tbl1
c=a
//"c" are stored in tbl2
…
END
*pseudocode
Object group processing in traditional systems means that the
same DB resource are accessed sepately for each proceeced
object. This process is pricipally sequent.
OO application
O1
O2
…
On
tbl1
tbl2
tbl1
tbl2
…
tbl1
tbl2
relational DB
RxO
translator
//target code after RxO translation*
BEGIN
…
UPDATE tbl1 SET b= b+a …
UPDATE tbl2 SET b= b+a …
…
END
*pseudocode
UPDATE tbl1 …
UPDATE tbl2 …
Because these two steps don't depend on each other they can be
performed by system in parallel for any number of processed objects.
UPDATE tbl1 …
UPDATE tbl2 …
Снижение нагрузки журналирования.
Перенос бизнес логики на сервер позволяет значительно снизить ресурсы, затрачиваемые
на ведение журналов. В традиционной архитектуре, обработка в приложении данных
подразумевает выполение множества команд, и все эти команды должны быть занесены
в журнал.
// source code*
For each o FROM objects
BEGIN
…
b=b+a //"b" are stored in tbl1
c=a
//"c" are stored in tbl2
…
END
*pseudocode
Data processing in traditional systems implies that DBMS
execute of bulk of simple commands, all of which have to be
logged.
OO application
O1
O2
…
On
tbl1
tbl2
tbl1
tbl2
…
tbl1
tbl2
LOG
relational DB
В RхO СУБД аналогичная обработка подразумевает использование одной команы,
определющей и логику обработки данных, и множество объектов, к которому эту
обработку надо применить. Соответственно, в журнал нужно занести одну единственную
запись.
// source code*
For each o FROM objects
BEGIN
…
b=b+a //"b" are stored in tbl1
c=a
//"c" are stored in tbl2
…
END
*pseudocode
О1
О2
…
Оn
LOG
RxO DBMS
Возможности для эффективной многопользовательской работы
При переносе бизнес логики в СУБД, появляется возможность проанализировать
сложные процедуры целиком, выявить ресурсы, требуемые для их выполнения, и
определить возможные конфликты
и взаимные блокировки, для того, что бы
предотвратить их при многопользовательской работе. Важно, что возможность
конфликтов и взаимных блокировок сложных транзакций определяется на основе
предварительно анализа их алгоритмов, что, потенциально, позволит избавиться от
необходимости блокировать и отслеживать блокирование используемых ресурсов
динамически, в процессе выполнения этих транзакций. Это также может привести к
ускорению их выполнения.
Stage 1: Busines logic are defined in DBMS
CREATE Proc1(…)
CREATE Proc2(…)
When logic is defined in RxO
DBMS all affeced resources
are found, possible conflicts
are predicted.
Code analisis
…affect ot
- tbl1
- tbl2
Prediction
..affect on
- tbl2
- tbl1
Proc 1 and Proc 2 are conflicted
RxO DBMS
Stage 2: Busines logic are executed in RxO DBMS
Client1
Client2
EXEC Proc1(…)
EXEC Proc2(…)
WAIT Proc1()
According to the prediction:
RxO DBMS
When opertions is executed
the predictions are used to
prevent deadlocks.
Возможности для эффективной многопользовательской работы(2)
Для обеспечения многопользовательской работы РСУБД сериализуют транзакции,
отслеживая использование строк таблиц, целых таблиц или файлов БД, чтобы
заблокировать их или создать версию.
Client1
Client2
Client1
Client2
BEGIN
Proc1…
BEGIN
Proc2…
BEGIN
Proc1…
BEGIN
Proc22…
SalesHeaders

SalesHeaders

SalesItems
100
100





RDBMS
WAIT!
Junk 1
SalesItems

Junk 1
RDBMS
Table locking suspends all transactions
accessing the table, even if the transactions
access other rows than the transaction that
causes the lock.
Row locking needs a lot of service work
В RxO СУБД появляется возможность сериализовать транзакции, связав их с
использованием бизнес объектов. Например, для временного запрета операций с
данными о поставке, вместо того, что бы блокировать множество строк разных таблиц,
содержащие эти данные, можно заблокировать объект, соответствующий этой поставке.
Транзакции, обращающиеся к этой поставке, будут ожидать его разблокировки, иные
транзакции будут выполняться свободно. Таким образом, можно снизить нагрузку
сервера, связанную с точной блокировкой данных, используемых в транзакции, не
прибегая к широким блокировкам таблиц и файлов.
Client1
EXEC
Obj1.Proc1(…)
Client2
EXEC
Obj2.Proc2(…)
IF (Obj1 = Obj2)
WAIT Proc1(…)
(

Sales
100

Junk 1
RxO DBMS
When operations is executed
the coflicts by objects are
traced to prevent conflicts.
Возможности для быстрого создания бизнес-систем
RxO СУБД соединяет возможности инструментов хранения и обработки бизнес данных.
Созданная в ней бизнес модель инкапсулирует описание структур данных весте и
описание обрабатывающих их методов. Используя это описание, можно автоматически
генерировать пользовательские и программные интерфейсы, обеспечивающие доступ к
этой бизнес модели и управление ею.
USER INTERFACES
CREATE CLASS cBill
(
No INT;
Customer STRING,
Items SETOF
(
...
)
METHOD Send(...)
)
Class specification in
RxO DBMS
 Bill
User interface
builder

No
Customer
Items
Send
Program
interface
builder
PROGRAM INTERFACES
class cBill
extendes RxOproxy
{
int No;
...
}
Java applications
cBill = class(tRxOproxy)
No:Integer;
...
end;
Delphi applications
C++ applicatin
C# applicatiion
…
Сравнение с ОРСУБД
- Данных в объектно-реляционных СУБД (SQL99, Oracle v8+, PostgreeSQL),
представлены в виде "расширенных" таблиц.
ОРСУБД делают попытку расширить сложность и возможности самих реляционных
структур. Для этого используются определяемые пользователем типы (UDT) и
соответствующие им типизированные таблицы (typed tables). Дальнейшая работа с
данными подразумевает традиционные операции с таблицами посредством SQL команд.
Возможен доступ к строкам ("экземплярам типа") с использованием RowID, в т.ч. в
ссылочных языковых конструкциях.
Имеющиеся в OPСУБД возможности по изменению схемы данных снижены по
сравнения с традиционными РСУБД, поскольку требуются согласованные изменения и
типов, и соответствующих таблиц. Реализованный принцип "класс соответствует
таблице" явно нарушает реляционную модель. Усложнение таблиц ведет к потере
простоты и строгости классических реляционных систем; при этом гибкость, присущая
традиционным ОО системам, так и не достигается. Объектные расширения SQL сложны
для понимания и использования.
В отличие от ОРСУБД, усложняющих реляционные структуры, RxO СУБД предлагает
возможность для совместного использования полноценных сложных объектноориентированных и традиционных реляционных структур, что позволяет создавать
наиболее выразительные и адекватные бизнес модели. RxO СУБД базируется на
классической реляционной модели данных.
Сравнение с СУБД Cache.
- СУБД Caсhe (InterSystems Corp.) дает возможность переключаться между
"реляционным" и "объектным" способами доступа к данным. Таким образом,
параллельно существует две взаимосвязанные ("класс соответствует таблице"), но не
совсем одинаковые схемы данные, используемые для разных целей. Реляционный доступ
позволяет работать с данными непосредственно в хранилище и используется для
групповых операций с данными. Для работе в "объектном доступе" необходимо
выполнять специальные действия по "открытию" и, далее, "сохранению" объектов
(выполняется загрузка данных из хранилища в память сервера). Идентификаторы
объектов в разных способах доступа так же различаются (необходимо их отображать).
Необходимо знать разницу между объектной и реляционной схемами. Существуют
вопросы по целостности данных (например, ключи, задаваемые для классов, в
"открытых" объектах не контролируются)
?
Object
access
Relational
access
Multidimensional
kernel
Cache DBMS
В СУБД CASHE сохраняется логическое и физическое разделение между объектной
моделью и хранилищем данных. Использования объектных возможностей СУБД Cache
требует знание специфического языка этой СУБД, деталей её устройства. Она
представляет собой законченный продукт, который значительно отличается от
традиционных реляционных СУБД, конкурирует с ними, и подразумевает полный
переход пользовательских систем на эту платформу.
В отличие от СУБД Cache, в RxO СУБД существует единая схема данных,
соединяющая объектные и реляционные структуры. В этой схеме выполняется и
групповая обработка данных, и работа с отдельными экземплярами. Использование
новых возможностей не требует знания особенностей сервера и позволяет
сконцентрироваться на задачах бизнеса. Предлагаемый нами подход делает возможным
эволюционное развитие существующих пользовательских систем.
RxO СУБД – новое решение для разработке и развития
информационных систем, позволяющее создавать простые,
выразительные, эффективные, надежные бизнес модели.
Сравнение возможностей необходимых для создания и использования бизнес
моделей.
РСУБД
Универсальные ОО Бизнес
RxO СУБД
языки + РСУБД
инструменты
Выразительность +
+
+
и управление
сложностью
Изменчивость
+
-(обусловлена
+
+
статичностью ОО
приложения)
Скорость
+
+
Открытость,
+
+
соответствие
стандартам
3+ 11+ 32+ 24+
Оценка стоимости владения
РСУБД
Стоимость
приобретения
Стоимость
создания и
модификации
Стоимость
эксплуатации
Бизнес
инструменты
RxO СУБД
Маленькая
Универсальные
ОО языки +
РСУБД
Небольшая
Большая
Маленькая
Большая
(обусловлено
невыразительностью)
Большая
(обусловлена
сложностью
архитектуры)
Большая
(обусловлена
спецификой
инструмента)
Маленькая
Маленькая
Большая
Большая
Средняя
(оплата
поддрежки)
Наибольшая
Меньше
(благодаря
выразительности и
простоте)
Маленькая
Наименьшая
Реализация нашего ноу-хау даст широкой группе разработчиков (как
самостоятельных, так и производителей бизнес инструментов) простой,
инструмент для создания эффективных бизнес систем, которые будут
интересны конечным пользователям в силу их экономичности и
эффективности. Мы предлагаем сотрудничество с целью его реализации.
Наш сайт:
Видеодемонстрация:
www.RxO-project.com
http://youtu.be/K9opP7-vh18 (in English)
http://youtu.be/hcUHFscWBY0 (русская)
Download