powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Люди, свершилось. Я сделал объектное ядро
25 сообщений из 105, страница 2 из 5
Люди, свершилось. Я сделал объектное ядро
    #32467987
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где живешь? Если в СПБ, то нет проблем
___________________________
До столиц "только самолетом можно долететь" (песня)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32467995
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас не стану выкладывать. Допишу прикладное приложение, потом уже обкатанное ядро выложу на просмотр.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32468204
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таких "объектных" расширениях (интерфейсах) есть по крайней мере две проблемы:

1) Обращение к SQL серверу возвращает таблицу, значит для выборки всех полей объекта необходимо многократно обращаться к серверу.

2) Применяется (однопользовательский\локальные данные) подход, (многопользовательский\удаленные данные) имеет большие накладные расходы, и работать с ним нужно по другому - (а) более экономно к запросам, (б) данные на сервере могут меняться другими пользователями.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32468298
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таких "объектных" расширениях (интерфейсах) есть по крайней мере две проблемы:

3) И главное - вопрос масштабирования таких систем - для каких систем это праедназначено ?
- явно не для малых, где простые таблицы проще,
- для больших систем - сложность приведет к потере контроля над обменом с сервером.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32468385
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Наверняка подобная идея посещала 99% разработчиков баз данных. Однако в поцессе ее реализации выясняется, что подобная схема годится только для работы с таблица-справочниками, создание которых по моим прикидкам занимает не более 1 процента времени разработки. Ну и стоит ли огород городить? Написание 3 хп на выборку, обновление | вставку и удаление; и одной формы для выборки-обновления-вставки занимает минут 15-20.

А для создания сложных выборок по соединения нескольких таблиц такая схема абсолютно бесполезна.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32468421
guest_____
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, а как в вашей объектной системе реализованы вложенные объекты?
(например: приходная накладная имеет ссылку на контрагента...)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32468737
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>1) Обращение к SQL серверу возвращает таблицу, значит для выборки всех
>полей объекта необходимо многократно обращаться к серверу.

Это если нужно многократно обращаться к серверу.

>2) Применяется (однопользовательский\локальные данные) подход,
>(многопользовательский\удаленные данные) имеет большие накладные
>расходы, и работать с ним нужно по другому - (а) более экономно к
>запросам, (б) данные на сервере могут меняться другими пользователями.

Моя система сделана на основе системы Онтарио. Я ее расширил, хотя и некоторые вещи переписал. Но существенного изменения нет, просто несколько автоматизировал разработку. Так вот

1. Количество объектов 500 000 записей
2. Количество прав объектов 2 000 000 записей
3. Количество записей в регистре проводок. 8 000 000
4. Таблиц всего 300 штук. Классов чуть больше 100. Процедур 3000 штук.
5. Количество пользователей ~ 50. Это на одной базе. А все баз 6 штук в разных регионах страны. Репликация по каналу интернет идет каждые 2 минуты.

Моя система в худшем случае понизит производительность на 20% из-за вытаскивания метаданных перед данными.

>А для создания сложных выборок по соединения нескольких таблиц такая
>схема абсолютно бесполезна.

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
create procedure DBODoc_Things_Open
  @OID int
as
  select t.ThingOID,
         ThingName = o.Name,
         ThingClass = o.Class,
         t.MeasureOID,
         MeasureName = o1.Name,
         MeasureClass = o1.Class,
         t.Quantity
    from Doc_Things t
           inner join
         Objects o
           on o.OID = t.ThingOID
           inner join
         Objects o1
           on o1.OID = t.MeasureOID
     where
       t.OID = @OID
go


Объекты на клиенте, представлены в виде прокси, т.е. только то что нужно для их идентификации. Это наименование, чтобы показывать в контролах, класс чтобы знать какие метаданные вытаскивать и идентификатор (понятно зачем).

>Привет, а как в вашей объектной системе реализованы вложенные объекты?
>(например: приходная накладная имеет ссылку на контрагента...)

Выше привел пример датасета (многострочная часть документа).
Чтобы открыть объект учета для просмотра, пишем:

var
dbo: TDBObject;
begin
dbo := TDBObject.Create(DBObject.DataSet['Things'].Field['ThingClass'].AsString);
dbo.Retrieve(DBObject.DataSet['Things'].Field['ThingOID'].AsInteger);
dbo.Execute('View');
end;
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32495853
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Набросал доку по своей системе. Кому интересно присылайте мыло, отвечу всем.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32495943
Владимир Иванов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подход хороший, а главное рабочий. Мы его почти 10 лет используем с MS SQL 6.0
http://www.ivn.newmail.ru/ultima3.htm
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32495950
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаю я Ультиму :-)
Ваши траблы я повторять не стал.
Привет Сергею Тарасову.
Я его систему развиваю. :-)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32535029
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оригинально и красиво решил проблему ссылочной целостности в своей системе.

Раньше на каждое поле, являющееся ссылкой на объект, нужно было писать процедуру типа

DBODoc_D_DBOState,

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

Сделал все через метаданные.
При регистрации класса в базе добавляется пользовательский тип основанный на int и имеющий название аналогичное классу, например DBODoc, теперь скрипт создания таблицы документов выглядит так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create table Docs
(
  OID         DBODoc,      -- ссылка на объект владелец
 
  StateOID  DBOState    -- объектное поле (состояние документа)
 
)
go

теперь при удалении объекта "Состояние документа" можно по метаданным найти все таблицы где есть поля этого класса и его наследников, проверить есть ли в этих полях ссылка на удаляемый объект и если есть, то по типу поля OID взять описание класса и ругнуться что в данном объекте есть ссылка на удаляемый объект и удаление отменяется.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32536749
d'n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d'n
Гость
мне интересно. если возможно, вышли на del_nero at pisem.net
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32536852
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще кое-что на тему на сайте

dbobjects.boom.ru
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32543492
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложил исходники на сайте

http://dbobjects.boom.ru
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32545642
Фотография u_gray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Old Nick
>В Оракле например, если создать тип объект унаследованный, то создать таблицу по нему > нельзя. Как это называется. Нахрена тогда наследование? Уж лучше на джаве тогда писать

в Oracle c 9.2 нормальное наследование и отличный полиморфизм. И таблицу можно по унаследованному объекту создавать и методы наследуются и прекрасно работают. Более того, имеет место реализация расширения и сужения объектных типов. И т.д. и т.п.
Только множественного наследования нет, но это и к лучшему.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32546122
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну кое-какие ограничения, т.е. "невозможности" в работе с объектными типами Oracle 9i остаются:

http://www.sql.ru/forum/actualsearch.aspx?search=%EA%EE%ED%F1%F2%F0%F3%EA%F2%EE%F0&a=Denis+Popov&ma=1&bid=3&dt=-1&s=1&so=1
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32546269
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ущербный какой-то этот Оракл. Я знал про объекты в нем, вернее про то как они там реализованы, поэтому и не стал его использовать. Лучше взять чистую реляционную СУБД и сделать объект на MIDDLE WARE.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32546707
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick

Чем лучше то? Тем что огромное количество ресурсов тратится на перемещение данных между БД и app server'ом?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32546838
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это большая ошибка, когда проектируют так что данными манипулирует AppServer. Он должен предоставлять интерфейс клиенту и через него манипулировать методами. А данные вытаскивать только в том случае, если их клиент запрашивает для отображения или изменения.
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32547538
SergueiF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Old Nick

решил посмотреть: описания не скачиваются, а что скачивается -не распаковывается

поэтому, если не лень, поясните еще раз на пальцах:

как я понял:

Есть конструктор объектов, которые хранятся на Сервере

Клиент на Дельфи : создаем TDBObject, связываем с хранилищем на Сервере и имеем форму для редактирования данных

и нарисуйте схему, все-таки коммерческий продукт:)
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32564568
Vladimir Kr.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и что в итоге?

Hibernate?
которому пофиг какая база,
и для которого есть Middlegen чтобы из существующей структуры сделать
XML файлы с описательными метаданными,
с кешированием и работой в кластере,
плюс практически продакшн стандарт
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32564797
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick

Пока это только слова. А хотелось бы более предметно. Например, есть класс MyClass с атрибутами Attr1,.. AtrN и операциями. Что в данном случае будет представлять ваш DBObject? Я так понимаю что-то типа такого

Код: plaintext
1.
2.
3.
4.
class MyClass
{
TDataSet DataSets[ 1 ];
}

Операций я так понимаю не будет? Или они будут сделаны через какой-то контейнер для TStoredProc?Ну и почему такую конструкцию легче держать на клиенте чем на сервере (для Oracle >=9.2). Ведь по-крайней мере вашей БД не всегда можно будет воспользоваться напрямую (в РБД нет полисорфизма)!
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32565122
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, вы заложники своих стереотипов. Данными манипулировать должны только хранимые процедуры или SQL. А компонент на среднем звене должен представлять собой обертку вокруг разрозненного набора таблиц и процедур, чтобы превратить все это в целостную логическую единицу, представляющую собой сущность, которая может не только иметь данные и операции, но интерфейс для работы с ними.
Мой компонент управляет хранимыми процедурами (серверная часть) и формами (клиентская часть).
Сейчас я делаю подробное описание, как с помощью моего ядра сделать прикладное приложение. Это упрощенная клиентская база. Когда будет готово сообщу. Увидите как все просто.

P.S. Я не понимаю зачем в некоторых архитектурах вытаскивают на среднее или клиентское звено таблицу, пересчитывают в ней какие-то данные пусть даже красиво с помощью классов сущностей и потом отправляют обратно на сервер. В какой роли тогда выступает сервер, в роли хранилища?
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32565127
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я перенес сайт на dbobjects.narod.ru
...
Рейтинг: 0 / 0
Люди, свершилось. Я сделал объектное ядро
    #32565162
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old Nick

Данными манипулировать должны только хранимые процедуры или SQL.

Я это не утверждал и не опровергал. Мои стереотипы говорят мне, что операции класса логично разделить на две группы - те что эффективно реализовать на сервере и те что на клиент :)

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

На мой взгляд эта фраза и отражает суть. Т.е. ваше "ядро" призвано объединить разрозненную информацию об объекте (т.е. его методы, некоторые связи и еще какую-то метаинформацию) в то с чем проще работать (даже не проще - а "целостнее" что-ли) Ничего неправильного в этом нет (imho это правильно) - другой вопрос, что и под объектно-ориентированным обычно понимается нечто другое - в частности, как я понял, ваша "целостная логическая единица" не обладает состоянием.
...
Рейтинг: 0 / 0
25 сообщений из 105, страница 2 из 5
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Люди, свершилось. Я сделал объектное ядро
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]