OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 20 Сентябрь, 2017 17:44

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
СообщениеДобавлено: Вторник, 07 Февраль, 2012 12:26 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 9
Моделирование данных - важный аспект программирования, которому обычно не уделяют нужного внимания. Одна из проблем состоит в том, что единого подхода к описанию структуры данных нет. Для баз данных используют реляционных подход, для данных в памяти - классы и коллекции, для сериализации - древоподобные структуры (XML, Protobuffers, JMS).

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

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

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

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

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

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


Последний раз редактировалось Степан Митькин Суббота, 11 Февраль, 2012 02:10, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 07 Февраль, 2012 13:44 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 288
Откуда: Россия, Стерлитамак
Если есть данная статья на русском, выложите, пожалуйста (хотя догадываюсь, что если не выложена, то нет, специально переводить не прошу).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 07 Февраль, 2012 22:56 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 558
Откуда: Россия, Санкт-Петербург
Цитата:
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 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 144
Откуда: Россия, Питер
Степан Митькин писал(а):
ERIL - единый язык описания данных.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 08 Февраль, 2012 10:41 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 9
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 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 9
Ильченко Эдуард писал(а):
Степан Митькин писал(а):
ERIL - единый язык описания данных.

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Февраль, 2012 06:52 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Степан, куда-то пропала ваша статья.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 11 Февраль, 2012 02:09 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 9
Илья Ермаков писал(а):
Степан, куда-то пропала ваша статья.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 03 Март, 2012 11:23 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Май, 2013 07:20 

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Май, 2013 09:54 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Я так и думал, что увижу у Вас этот хорошо известный приём - известный в серьёзных приложениях (просто не встречающийся в "мелкой автоматизации" на Access и проч.): использование одной таблицы для поатрибутного, "измельчённого" хранения объектов. "Виртуальные таблицы" на базе однородной.

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

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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Май, 2013 10:23 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2284
Откуда: Россия, Санкт-Петербург
Илья, вы про вот это говорите: http://en.wikipedia.org/wiki/Entity–attribute–value_model ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Май, 2013 10:48 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Ага, именно!

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Май, 2013 13:00 

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

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

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


--

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Май, 2013 13:14 

Зарегистрирован: Среда, 24 Апрель, 2013 09:26
Сообщения: 120
Реализовано это в RDF, подмножество которого RSS и Atom.

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

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

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

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

IMHO

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


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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Май, 2013 10:50 
Модератор
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Май, 2013 10:57 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8781
Откуда: Россия, Орёл
Вообще, почитайте ещё А. С. Усова на тему БД, я думаю, он Вас подтолкнет дальше ещё больше, чем "мой пост про атрибутную сборку".

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: «А я и не знал, что говорю прозой»
СообщениеДобавлено: Вторник, 28 Май, 2013 17:38 

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2017, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB