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 (русская)