OberonCore
https://forum.oberoncore.ru/

ERIL: единый язык моделирования данных
https://forum.oberoncore.ru/viewtopic.php?f=5&t=3822
Страница 1 из 1

Автор:  Степан Митькин [ Вторник, 07 Февраль, 2012 12:26 ]
Заголовок сообщения:  ERIL: единый язык моделирования данных

Моделирование данных - важный аспект программирования, которому обычно не уделяют нужного внимания. Одна из проблем состоит в том, что единого подхода к описанию структуры данных нет. Для баз данных используют реляционных подход, для данных в памяти - классы и коллекции, для сериализации - древоподобные структуры (XML, Protobuffers, JMS).

Работать с несколькими моделями в одном приложении неудобно, поэтому было бы здорово иметь единый способ описания данных. Ещё было бы хорошо собрать всю информацию о структуре приложения в одном месте, а не размазывать её по тысячам файлов с исходным кодом.

ERIL - единый язык описания данных. Он представляет собой союз реляционного и объектно-ориентированного подходов и объединяет их сильные стороны. Отличительная черта языка ERIL - явное наличие в модели уровней абстракции.

Имея единый язык описания данных, можно существенно облегчить разработку и, что даже важнее, поддержку ПО. Такой язык подходит для:
- технических заданий и требований;
- проектирования и дизайна ПО;
- документации.

Кроме того, на основе ERIL можно написать полезные для разработчиков инструменты:
- для просмотра и поиска информации о структуре программы (это оказалось чертовски удобно на практике);
- для автоматической генерации структурного кода (работа с коллекциями, управление памятью, вычисление хэшей, операции сравнения, проверка целостности данных и указателей);
- для генерации кода, который делает сериализацию;
- для генерации отладочного и тестового кода.

Алгоритмы, динамику, хорошо описывает Дракон, ERIL же отвечает за статическую структуру программы.

Данная статья не является теоретическим изысканием, это обобщение опыта моделирования данных в реальных проектах, в числе которых: хорошо известная в Скандинавии ERP-система, ряд приложений для работы на финансовых рынках, шутер для PC и даже блок-бастер для iphone.

Автор:  adva [ Вторник, 07 Февраль, 2012 13:44 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Если есть данная статья на русском, выложите, пожалуйста (хотя догадываюсь, что если не выложена, то нет, специально переводить не прошу).

Автор:  Madzi [ Вторник, 07 Февраль, 2012 22:56 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Цитата:
ERIL is somewhat similar to an ORM framework (like EclipseLink), but has one important difference. ORM frameworks normally generate code in one direction:

А какое понятие вы вкладываете в ORM ?
Вы точно не путаете ORM (Object/Relational Model) и PA (Persistent API) ?
Кроме того, существует ещё множество других механизмов работы с данными:
Сериализация, xDBC, ODB, xDO, xPA. В чём преимущество вашего ERIL перед ними ?
Можете кратко (да/нет) охарактеризовать такие моменты как:
Объектно-ориентированный подход: да/нет
Транзакционность: да/нет
Парралелизм: да/нет
Работа с наборами данных: да/нет
Схема данных: да/нет
Хранение данных в реляционном и нереляционном форматах: да/нет
Поддержка запросов к данным: да/нет
Переносимость и жёсткие стандарты: да/нет

Автор:  Ильченко Эдуард [ Среда, 08 Февраль, 2012 00:41 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Степан Митькин писал(а):
ERIL - единый язык описания данных.

Что является алфавитом языка и где можно ознакомиться с его синтаксисом?

Автор:  Степан Митькин [ Среда, 08 Февраль, 2012 10:41 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Madzi писал(а):
Цитата:
ERIL is somewhat similar to an ORM framework (like EclipseLink), but has one important difference. ORM frameworks normally generate code in one direction:

А какое понятие вы вкладываете в ORM ?
Вы точно не путаете ORM (Object/Relational Model) и PA (Persistent API) ?

ORM, согласно англоязычной википедии, - это средство работы с данными:
1. которые хранятся в "чужом" формате
2. из объектно-ориентированного языка.
Тот же EclipsLink, например, именно этим и занимается. Кстати, при помощи "виртуальной базы данных" (entity manager).
По этой причине я не делаю принципиального различия между ORM и persistent API. Можно и поспорить, но это не относится к делу.

Из вышеперечисленных аббревиатур ознакомился только с ODB. Разница в следующем: ODB переносит данные из плюсов в базу и обратно. Если мы рассмотрим ERIL, то автоматическая сериализация - просто одно из его применений. При этом конвертировать можно всё что угодно во всё что угодно. Необязательно в базу.

Далее по списку:
Наследование: да. Инкапсуляция: да. Полиморфизм: да, если ваш язык программирования его поддерживает. Итог: объектно-ориентированный подход имеется.
Транзакционность: нет. ERIL описывает данные, а не поведение.
Параллелизм: да. Особенно дружит ERIL с моделью акторов. Об этом надо будет отдельно написать.
Работа с наборами данных: да (если имеется в виду что-то типа .net Dataset).
Схема данных: да. ERIL - это схема данных на стероидах.
Хранение данных в реляционном и нереляционном форматах: да! Речь идёт о вообще любых форматах.
Поддержка запросов к данным: да.
Переносимость: да.
Жёсткие стандарты: нет пока.

Автор:  Степан Митькин [ Среда, 08 Февраль, 2012 10:44 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Ильченко Эдуард писал(а):
Степан Митькин писал(а):
ERIL - единый язык описания данных.

Что является алфавитом языка и где можно ознакомиться с его синтаксисом?

Алфавит языка состоит из двух частей:
1. Заимствования из объектно-ориентированного программирования и реляционного моделирования: класс, объект, наследование, поле, таблица, связь, уникальный индекс, коллекция, ссылка.

2. Собственные термины: слой, распределённый индекс.
Распределённый индекс (partitioned key) - это простая вещь:
На полке стоят книги, в каждой из них есть оглавление с номерами страниц разделов. Логическое объединение всех оглавлений и есть распределённый индекс. Вы берёте конкретные книги и ищете страницы по их оглавлениям. Это можно представить как индекс, который возвращает страницу, если вы знаете книгу и раздел.
Слои - это уровни детализации модели, от самого общего, до самого конкретного. Причём у одной и той же общей идеи может быть несколько конкретных реализаций, которые зависят от языка, формата данных и прочего.

А синтаксиса своего нет. ERIL использует диаграммы сущность-связь, диаграммы классов а также описание данных в табличной форме.

Автор:  Илья Ермаков [ Четверг, 09 Февраль, 2012 06:52 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Степан, куда-то пропала ваша статья.

Автор:  Степан Митькин [ Суббота, 11 Февраль, 2012 02:09 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Илья Ермаков писал(а):
Степан, куда-то пропала ваша статья.

Получил критические замечания. Статью пока убрал.

Автор:  Владислав Жаринов [ Суббота, 03 Март, 2012 11:23 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Я верно понимаю, что это близко к топику этих веток: viewtopic.php?f=12&t=3853 и viewtopic.php?f=12&t=3852 - прежде всего к результатам Александра Сергеевича?..

Автор:  __1__ [ Вторник, 21 Май, 2013 07:20 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

"Структура" или "Схема" данных - какая разница? Схема данных - это стандартный инструмент СУРБД. И зачем тут ERIL?
Пока разберусь (это может быть нескоро) ответьте где-нибудь на пару моих сообщений?

Сразу посмотрите Концепцию - это то, чего всегда не хватало для упрощения структур данных. Это способ мышления любого специалиста - умение стандартным способом раскладывать данные "по полочкам", то есть, изначально структурировать знания. Стандарт ещё не принят, и даже почти не обсуждается.

Автор:  Илья Ермаков [ Вторник, 21 Май, 2013 09:54 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Я так и думал, что увижу у Вас этот хорошо известный приём - известный в серьёзных приложениях (просто не встречающийся в "мелкой автоматизации" на Access и проч.): использование одной таблицы для поатрибутного, "измельчённого" хранения объектов. "Виртуальные таблицы" на базе однородной.

В случае, когда количество видов информационных объектов заранее, на этапе создания информационной системы, неизвестно, когда могут динамически добавляться новые виды объектов и атрибуты, либо когда объекты имеют сильно нерегулярный набор полей (меняющийся от экземпляра к экземпляру, так что либо понабодится очень много таблиц, либо таблицы будут сильно разрежёнными) - используется как раз такой приём.

Конечно, можно любую БД привести в такой вид (как любое высокоуровневое представление данных, в конечном счёте, хранится в памяти в каком-то технически однородном виде). В некоторых реализациях СУБД хранение происходит именно подобным образом.
Но без нужды злоупотреблять такой структурой не следует:
1) Зверски теряется эффективность - для сбора всех атрибутов объекта воедино требуется, по сути, многократный JOIN.
2) Также сильно теряется выразительность из-за отсутствия статического определения. Это как с языками со статической и динамической типизацией. Языки, где всё однородно, "всё есть объект", тип переменных не требуется определять статически и проч. - удобны иногда, часто позволяют меньше думать (увы) на старте, чтобы потом огрести проблем при росте системы... Потому что однородность, гибкость в системы должна вводиться дозированно - ровно столько, сколько надо. А всё, что можно, нужно стараться выразить явно, статически: в случае с БД - явным набором таблиц с явно описанной структурой, а не неявными связями между перемолотыми атрибутами объектов.

Однако, заметим, конечно, что в области всякого рода PIM (personal information management) как раз наблюдаются факторы к тому, чтобы Вами выбранная модель была удобной и оправданной.

P.S. И, кстати, для тех, кто от реляционной модели оставляет только "одну таблицу" - есть NoSQL-СУБД. Вам прямая дорога в MUMPS/Cache, по ходу дела :)

Автор:  Александр Ильин [ Вторник, 21 Май, 2013 10:23 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Илья, вы про вот это говорите: http://en.wikipedia.org/wiki/Entity–attribute–value_model ?

Автор:  Илья Ермаков [ Вторник, 21 Май, 2013 10:48 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Ага, именно!

Спасибо за ссылку на точный термин и его описание. Как это "по-науке" обозвано - не знал :)

Автор:  __1__ [ Вторник, 21 Май, 2013 13:00 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Спасибо, Илья, что вышли из глухой обороны. Ценю Ваш кругозор и Ваше мнение. По замечаниям отвечу главное: Вами не замечено присоединение дополнительных атрибутов (отдельных таблиц) через механизм подчинения форм. Возможно, я это сделал первым (10 лет назад)). Это упущение многие Ваши слова разворачивает против Вас. Понимаю, что такой стиль общения вызван недостатком времени. И готов предложить фундаментальное решение этой общей проблемы. Я никогда не ошибаюсь в таких глобальных вещах, но хотелось бы иметь не слепых, а самодостаточных последователей и единомышленников. Речь о системе оценочных баллов для этого форума.

Не люблю биться башкой об стену. Предпочитаю входить званым гостем. Вам неплохо известна кухня этого форума, и, возможно, направляющая роль администрации окажется лучшим вкладом в решение многих здешних задач.

Мне стыдно обсуждать любые темы, кроме оценочной… И участвую в обсуждениях для того, чтобы привлечь внимание и опробовать этот бесподобный инструмент, валяющийся у нас под ногами. Кстати, насколько метод дополнительных атрибутов окажется приемлем, можно проверить на платёжной системе для этого форума, построив её по этому же универсальному принципу (платёжная система – тоже база данных).


--

Ещё раз спасибо. Конец рекламной паузы. Жду, когда здесь появится Митькин…

Автор:  ignat99 [ Вторник, 21 Май, 2013 13:14 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Реализовано это в RDF, подмножество которого RSS и Atom.

Глушков придерживался с Советской школе в Киеве модели - не знаю как по русски (субьект предикат предлог объект)

журнал Кибертония за 01/2012 (с.46);

Обратите внимание на предлог, в аналитических языках (Испанский, Латынь) это всевозможные артикли.

Множество экспериментов с артиклями в Lojban. Но русский язык в котором много слов из языка, который сейчас называют Санскрит использует суфиксы для тех же целей.

IMHO

Давайте не будем отходить от Советской школы, в данном случае подход Глушкова более интересен.

Автор:  __1__ [ Воскресенье, 26 Май, 2013 22:28 ]
Заголовок сообщения:  «А я и не знал, что говорю прозой»

Илья Ермаков писал(а):
Я так и думал, что увижу у Вас этот хорошо известный приём
Илья, Ваш пост о поатрибутной сборке инициировал очередное открытие. Спасибо. Получился простенький, но изумительно красивый бриллиант, украшение для чьей-то будущей диссертации.

Хотите, подарю?

Автор:  Илья Ермаков [ Понедельник, 27 Май, 2013 10:50 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Мне кажется, что Вы слишком уверены в своей возможности в наш век в области ТЕХНОЛОГИЙ получить "абсолютную новизну" (в терминах патентного права). :)
Учитывая количество людей, занятых думанием над теми же проблемами и видящими ту же ситуацию, тот же контекст в отрасли, вопрос только в том, сколько ещё людей придумало то же самое в это же самое время :)
Новизна в технологиях сегодня в основном в нюансах, в способе реализации, в правильном взаимодействии составляющих, в том, как добиться, чтобы некая нереализуемая или неэффективная до сих пор идея вдруг начала работать. А не в самой идее, как правило :)

Открытия делать можно и нужно, пусть это будет даже переоткрытие (для развития лучше сначала открыть самому, потом прочитать). Только вот путь продвижения в жизнь этих (пере)открытий немного другой, чем Вам кажется (как мне видится то, что Вам кажется :) ).

Автор:  Илья Ермаков [ Понедельник, 27 Май, 2013 10:57 ]
Заголовок сообщения:  Re: ERIL: единый язык моделирования данных

Вообще, почитайте ещё А. С. Усова на тему БД, я думаю, он Вас подтолкнет дальше ещё больше, чем "мой пост про атрибутную сборку".

Его проект СУБД:
Вложение:
Alexus - Проект СУБД.pdf [261.88 КБ]
Скачиваний: 225

(публиковался им на этом и других форумах, просто найти сейчас долго).

И тут кое-какие его статьи:
http://www.alexus.ru/russian/articles.htm

Автор:  __1__ [ Вторник, 28 Май, 2013 17:38 ]
Заголовок сообщения:  «А я и не знал, что говорю прозой»

Вложение:
Структура таблицы Объект.png
Структура таблицы Объект.png [ 10.94 КБ | Просмотров: 7798 ]
Вложение:
Схема данных Универсальной базы.png
Схема данных Универсальной базы.png [ 12.21 КБ | Просмотров: 7798 ]
Ещё в прошлом веке пытался воспользоваться поатрибутной сборкой (Entity–attribute–value_model), и отказался от этой затеи, не имея достаточного опыта.
А теперь, оказывается, нечаянно реализовал сетевую сборку как более общий случай поатрибутной (при сетевой сборке объекты произвольным способом являются дополнительными атрибутами друг друга).

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/