powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Объектная надстройка над релационной СУБД
25 сообщений из 438, страница 11 из 18
Объектная надстройка над релационной СУБД
    #32864795
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Кстати, по поводу велосипедов,

;)

> метаданные максимально просто хранить в XML, что автоматом решает проблему

Нет смысла их выносить во внешний файл. Вот сгенерировать конфиг или интерфейс - действительно удобно.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32864864
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хранить в БД, почему обязательно файл
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32864899
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Хранить в БД, почему обязательно файл

Т. е. xml и храним в базе данных? А пользуемся так: сначала выбираем его из базы данных, потом разбираем? Фишка-то в чем? Если файл, то по крайней мере из базы ничего выбирать не надо, это уже быстрее.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865186
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моя СУБД прекрасно работает с xml.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865248
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Моя СУБД прекрасно работает с xml.

Вы считаете, что это достаточный аргумент? Т. е. на здравый смысл наплевать, важно, что _Моя СУБД_ поддерживает фичу N? Ну-ну.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865358
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это норма, а не фича (из культовых субд imho этого нет в ib/fb/yfl и mysql). Я не собираюсь горбатиться ради самоцели "независимость от СУБД". Мы с Вами людим по этому поводу уже говорили.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865417
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Это норма, а не фича

Ссылочку на нормативный документ - в студию.

> (из культовых субд imho этого нет в ib/fb/yfl и mysql).

Не бывает культовых СУБД. Есть тупые религиозные фанатики.

> Я не собираюсь горбатиться ради самоцели "независимость от СУБД".

Ну-ну еще раз.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865429
skorohod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621
2 skorohod
> Что называть единым инфо-пространством?!
Хороший вопрос. ;)
.............
Под единым информационным пространством мне бы хотелось понимать еще и возможность идентификации любой сущности (файл, документ или запись любой внешней базы данных). Соответственно, и потенциальная возможность оперировать (по крайней мере, корректно на нее ссылаться) такой сущностью.


Согласен - это просто вопрос полноты объектного описания окружающей реальности и вполне реализуемо - хватило-бы ума и здоровья.
А вот на счет записей внешних БД! Хорошо, если это справочные (напр. на CD)базы "readonly" - нет проблем, и вполне логично использовать и такой ресурс. А если это "живая" база, да без грамотного словаря, в которой сегодня есть запись, а завтра уже нету, или таблицы появляются-исчезают. Как быть? Как отслеживать корректность ссылок? Использовать уже упоминавшиеся в этом топике средства вроде BuisnesObjects? Или вносить их функциональность в "нашу" систему усложняя метаданные?

guest_20040621
> Кстати, guest_20040621, интересно узнать ваш взгляд на необходимость и форму реализации мультиязычности!

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


А можно здесь описать три возможных способа применительно к объектной-модели БД? Дабы сравнить с ними мое представление.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865480
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Для Вас пунк меню Правка, где можно копировать, вставлять и др норма или фича?!А нормативного документа на это нет.XML существует довольно много лет и если в субд не реализовали его использования, то это их проблемы.Им за это деньги платят.Нет-пошли додальше...
2. Под какой СУБД работаете Вы?
3. НЕ походите на mv с его "калеками"
4. если любите работать - работайте для абстрактных самоцелей (похоже, опять уходим в рекурсию)
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865536
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Согласен - это просто вопрос полноты объектного описания окружающей реальности и вполне реализуемо - хватило-бы
> ума и здоровья.

Я немного не то имел в виду. Нужна не готовая структура для описания внешних объектов, а алгоритм, правила, которые позволяли бы это делать. Структура данных для этого - не самое сложное.

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

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

> Или вносить их функциональность в "нашу" систему усложняя метаданные?

Никто не мешает использовать метаданные (в смысле, конечно, не сами метаданные, а их элементарные объекты), позволяющие описывать не только структуру "внутренней" базы данных. ;)

> А можно здесь описать три возможных способа применительно к объектной-модели БД?

А почему применительно к объектной модели? Мультиязычность сама по себе, объектная модель - сама по себе (т. е. это не связанные вещи; одна без другой вполне себе существует). Важно описать локализованные значения в метаданных.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865547
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> XML существует довольно много лет и если в субд не реализовали его
> использования, то это их проблемы.

Если такого типа данных нет в стандарте, то его реализация - отсебятина. А кому какая моча в голову ударила и по какому поводу - у меня нет ни желания, ни времени разбираться.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865585
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никто и не собирается его реализовывать вручную: я выбираю СУБД под задачу (чтобы при этом меньше напрягаться как в материальном, так и во временном смысле), а не задачу под СУБД. Вы не ответили на вопрос о СУБД, на которой работаете Вы.В стандарте w3c есть xml.

Заранее сорри, НО топик называется по-другому, а Вы довольно успешно сбиваете всех на какие-то левые разговоры. Поздравляю. Вам с таким талантом в психотерапевты идти.

Удачных выходных, господа. Берегите мозги.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865634
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Вы не ответили на вопрос о СУБД, на которой работаете Вы.

К обсуждению это отношения не имеет.

> В стандарте w3c есть xml.

Вот когда в sql стандартах появится тип данных xml, появится и предмет для обсуждения.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865706
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skorohod2 vybegallo

> Есть такой старый анекдот
> Сидит чукча на дереве и пилит под собой ветку. Прохожий ему
> - что ты делаешь, ты же упадешь !
> чукча продолжает пилить, падает, встает - "Колдун, однако !"
> Я понятно намекаю ?

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

-- Ничего, ничего, -- сказал Выбегалло. -- Это вам не Португалия.
Критики не любите. Лет триста назад я бы с тобой тоже не особенно
церемонился, кафолик недорезанный.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865732
skorohod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 guest_20040621
> Я немного не то имел в виду. Нужна не готовая структура для описания
> внешних объектов, а алгоритм, правила, которые позволяли бы это
> делать. Структура данных для этого - не самое сложное.

Я о подобных правилах не слышал. УМЛ наверно сюда очень слабо вписывается! Вы предлагаете их здесь выработать? Результат наверное "потянул-бы" на всеобщий стандарт. Только боюсь, что ничего не получится из этого. Т.е. придется каждому обходиться "встроенной" в голову логикой, знанием предметной области, и умнием проводить декомпозицию.
Возможно спасла бы положение единая общедоступная библиотека примитивов / субмоделей / моделей, (не алгоритмы и правила а "правильные" образцы) но сейчас это даже более несбыточно, чем голубая/розовая мечта :)

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

> В общем случае - никак. Я не знаю такого способа. Но можно решить более
> узкую задачу (например, для баз данных без физического удаления записей;
> изменения состава/имен таблиц трактовать как версионность).

Можно динамику структуры и данных трактовать как версионность, но все равно останется задача КОНТРОЛЯ всего описанного в модели внешнего окружения. Если позволяют аппаратные ресурсы и не смущает разбухание объектной модели - то я особых проблем не вижу (возм. за исключением совместимости) - пусть машина работает, и перелопачивает все хоть каждые 5 минут.

>> Или вносить их функциональность в "нашу" систему усложняя метаданные?

> Никто не мешает использовать метаданные (в смысле, конечно, не сами
> метаданные, а их элементарные объекты), позволяющие описывать не только
> структуру "внутренней" базы данных. ;)

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

>> А можно здесь описать три возможных способа применительно к объектной-модели БД?

> А почему применительно к объектной модели? Мультиязычность сама по
> себе, объектная модель - сама по себе (т. е. это не связанные вещи; одна
> без другой вполне себе существует). Важно описать локализованные
> значения в метаданных.

Да, не связанные, но мне интересна Ваша позиция именно в частном случае реализации мультиязычности в системе с объектной моделью. Как бы вы описали эти локализованные значения?
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32865905
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Т.е. придется каждому обходиться "встроенной" в голову логикой, знанием предметной области, и умнием проводить
> декомпозицию.

Н-да, действительно сложновато получается. :(

> Возможно спасла бы положение единая общедоступная библиотека примитивов / субмоделей / моделей, (не алгоритмы и
> правила а "правильные" образцы) но сейчас это даже более несбыточно, чем голубая/розовая мечта :)

Хорошая мысль про библиотеку примитивов.

> Как бы вы описали эти локализованные значения?

Так "в лоб" и описал бы. Структура метаинформации к сожалению будет зависеть от способа локализации. Т. е. если выбрать вариант с одной таблицей и множеством полей для разных языков, получится что-то вроде:

system_language;
model_object;
model_object_attribute;
...
rel_object;
...
model_object_attribute_internationalisation;
...
rel_system_language;
rel_object_attribute;
...

Если локализация со связанной таблицей, то будут, соответственно, источник, локализуемое поле, приемник, локализующее поле.

Если честно, я не дошел еще до описания локализации, так что набросал на скорую руку.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32866033
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
adisk VybegalloTo adisk :

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

Что ж.
Возможно еще не дорос.
Прекрасно осознаю, что будет падение производительности.
Будет ли оно столь ощутимым? Думаю нет.

Ну что ж, раз никто из авторов не рискнул хлебнуть супца собственного приготовления - пришлось протестировать собственноручно.
Напомню задачу :
Дано :
таблица customers, 100 000 записей
customer_id int
customer_desc char(50)

Таблица orders, 1 000 000 записей
order_id int
customer_id int
order_desc char(50)
order_cost decimal (9,2)
order_date date
order_flag char(1)

Требуется :
найти сумму отгруженных договоров (order_flag="Y") с 1.1.2004 по 31.12.04 по каждому покупателю и описание покупателя.

select customer_id, customer_desc , sum(order_cost) from customers, orders
where customers.customer_id = orders.customer_id
and order_flag = "Y"
and order_date between "01/01/2004" and "12/31/2004"
group by 1, 2

-----
Результат решения "в лоб" -
от
No indexes, order_date between 1/1/04 and 12/31/04
optimized uses dynamic hash join
real 0m36.64s
user 0m1.31s
sys 0m0.16s
до
---- 3 : indexes on c.customer_id, o.customer_id, o.order_date ,
real 1m13.51s
user 0m1.72s
sys 0m0.14s

т.е от 36 до 74 секунд.

Нарисовал я рекомендуемую схему, загнал тестовые данные, построил индексы, статистику обновил. Нарисовал запрос (естественно, с использованием view), запустил...

real 37m26.49s
user 0m0.04s
sys 0m0.06s

:-)))))))

Наблюдается небольшое падение производительности - всего лишь в 30-60 раз !

--------- скрипт для желающих проверить лично -----

create table data_s
(id serial,
id_s int,
id_p int,
data varchar(50)) extent size 1000000 next size 200000;

create table data_i
(id serial,
id_s int,
id_p int,
data int) extent size 100000 next size 20000;

create table data_dc
(id serial,
id_s int,
id_p int,
data decimal(12,2)) extent size 100000 next size 20000;

create table data_dt
(id serial,
id_s int,
id_p int,
data date) extent size 100000 next size 20000;

create table data_c
(id serial,
id_s int,
id_p int,
data char(1)) extent size 100000 next size 20000;

create table attr
(id int,
value char(50));

insert into attr values (1, "customer_id");
insert into attr values (2, "customer_desc");
insert into attr values (3, "order_id");
insert into attr values (4, "customer_id2");
insert into attr values (5, "order_desc");
insert into attr values (6, "order_cost");
insert into attr values (7, "order_date");
insert into attr values (8, "order_flag");


create view vcustomers as
select a.data as customer_id, b.data as customer_desc
from data_i a, data_s b
where a.id_p = b.id_p
and a.id_s in (select id from attr where value = "customer_id")
and b.id_s in (select id from attr where value = "customer_desc");

create view vorders as
select a.data as order_id, b.data as customer_id, d.data as order_cost,
e.data as order_date, f.data as order_flag
from data_i a, data_i b, data_dc d, data_dt e, data_c f
where
a.id_p = b.id_p
and a.id_p = d.id_p
and a.id_p = e.id_p
and a.id_p = f.id_p
and a.id_s = 3
and b.id_s = 4
and d.id_s = 6
and e.id_s = 7
and f.id_s = 8;

--drop procedure ins_cust;
create procedure ins_cust (nm int)
define i int;
define c char(30);

for i = 1 to nm
insert into data_i values (0, 1, i, i);
let c = "Customer desc" || i;
insert into data_s values (0, 2, i, c);
end for
end procedure;

create procedure ins_orders (nprev int, nm int)
define i, j int;
define c char(30);
define cost decimal (12,2);
define dt date;

for i = 1 to nm
for j = 1 to 10
insert into data_i values (0, 3, (nprev + i), i); -- order_id
insert into data_i values (0, 4, i, i); -- customer_id
let c = "Order desc" || i || "_" || j; -- order_desc
insert into data_s values (0, 5, i, c);
let cost = i * 1.0;
insert into data_dc values (0, 6, i, cost); -- order_cost
let dt = today - (i / 100);
insert into data_dt values (0, 7, i, dt); -- order_date
if (mod (i,2) = 0) then
insert into data_c values (0, 8, i, "Y");
else
insert into data_c values (0, 8, i, "N");
end if
end for
end for
end procedure;

execute procedure ins_cust (100000);

execute procedure ins_orders(1000000, 100000);


create index is1 on data_s (id_p);
create index is2 on data_s (id_s);

create index ii1 on data_i (id_p);
create index ii2 on data_i (id_s);

create index idc1 on data_dc (id_p);
create index idc2 on data_dc (id_s);

create index idt1 on data_dt (id_p);
create index idt2 on data_dt (id_s);

update statistics;

select customer_id, customer_desc , sum(order_cost) from vcustomers, vorders
where vcustomers.customer_id = vorders.customer_id
and order_flag = "Y"
and order_date between "01/01/2004" and "12/31/2004"
group by 1, 2
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32866137
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vybegalloА если
Код: plaintext
1.
2.
3.
4.
5.
create view vcustomers as
select a.data as customer_id, b.data as customer_desc
from data_i a, data_s b
where a.id_p = b.id_p
and a.id_s =  1 
and b.id_s =  2 
И построить вместо
Код: plaintext
1.
create index is1 on data_s (id_p);
create index is2 on data_s (id_s)
как один индекс для IOT(правильно ? бишь кластерный) по (id_p, id_s) для всех таблиц свойств ?
А также для таблицы data_dt не забыть проиндексировать еще и по полю Data, если конечно не выбирается практически весь диапазон.
Кстати, а какой смысл поля serial в данном контексте ?
Проверил бы сам, но под рукой только MSSQL, а переводить лениво :)
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32866149
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChA vybegalloА если
Код: plaintext
1.
2.
3.
4.
5.
create view vcustomers as
select a.data as customer_id, b.data as customer_desc
from data_i a, data_s b
where a.id_p = b.id_p
and a.id_s =  1 
and b.id_s =  2 
И построить вместо
Код: plaintext
1.
create index is1 on data_s (id_p);
create index is2 on data_s (id_s)
как один индекс для IOT(правильно ? бишь кластерный) по (id_p, id_s) для всех таблиц свойств ?
А также для таблицы data_dt не забыть проиндексировать еще и по полю Data, если конечно не выбирается практически весь диапазон.
Кстати, а какой смысл поля serial в данном контексте ?
Проверил бы сам, но под рукой только MSSQL, а переводить лениво :)

Да я еще поиграюсь в понедельник с индексами. Запустил update statistics high, так он мне новый план построил - на 1 час 4 минуты :-)
Проиндексировать по дате есть смысл, но если прикинуть всю систему в целом, скажем, 100 таблиц, и все сливают свои даты в одну таблицу...
view так же переделал, но тестировать уже не было времени - уж больно я задачу упростил этими id_s = 3 :-) вместо where id_s in (select ... from attr ...).
Короче, нашим юным пионерам есть о чем задуматься в плане производительности.

Я, кстати, не хочу сказать, что такая схема всегда и обязательно зло. Скажем, кто-то на форуме постил задачу - требуется учесть атрибуты товаров, причем товаров много, и атрибуты у них разнообразные. Ну не заводить же 1000 таблиц для каждого товара отдельно ? Имеет смысл атрибуты слить в одну таблицу. Но при этом надо ясно понимать и отдавать себе отчет в том, какой геморрой в плане запросов и производительности тебе предстоит - а не эти вот заявления "думаю, падение производительности будет неощутимым". Ты, блин, не думай - ты попробуй !
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32866452
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, продолжая тему, кластерным, пожалуй, лучше делать не (id_p, id_s), а (id_s, id_p), тогда свойства с одним номером будут рядом.
vybegalloview так же переделал, но тестировать уже не было времени - уж больно я задачу упростил этими id_s = 3 :-) вместо where id_s in (select ... from attr ...)Не совсем, дело в том, что в подобных схемах используется автогенерация запросов или view, когда в них сразу подставляется номера свойств. Их описание никого из пользователей не интересует. Что-то вроде упомянутого выше
Код: plaintext
1.
2.
3.
4.
5.
create view vcustomers
as select
a.data as customer_id,
b.data as customer_desc
from data_i a, data_s b
where a.id_p = b.id_p and a.id_s =  1  and b.id_s =  2 
То что производительность падает, никаких сомнений, хотя при определенном тьюнинге не так разительно. В общем, надо очень дружить с оптимизатором :)Разумеется, если заменить таблицу с сотней полей на слияние сотни таблиц, то тут и к бабке не ходить :) Но в реальности объектов с сотнями полей бывает не так уж много, обычно подобно Вашему примеру. В таких случаях применяется еще один способ оптимизации, когда свойства из одной и той же таблицы можно получать одним проходом путем группировки. Что-то типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create view vorders as
SELECT order_id, customer_id
FROM (
  SELECT id_p
  , MAX(CASE id_s WHEN  3  THEN a.data END) as order_id
  , MAX(CASE id_s WHEN  4  THEN a.data END) as customer_id
  FROM data_i
  GROUP BY id_p
)  a, data_dc d, data_dt e, data_c f
where d.id_p = a.id_p
and e.id_p = a.id_p
and f.id_p = a.id_p
and d.id_s =  6 
and e.id_s =  7 
and f.id_s =  8 ;
Самая большая проблема при реализации подобных схем, это то, что в лоб там делать ничего нельзя, хоронить будут на бис... :) И сложность запросов чаще всего превышает условно стандартную, подчас сильно, а это минус, особенно для неопытных разработчиков, которым видится революция. Она же их и похоронит как героев :) Хотя, есть конечно и определенные плюсы, но это лучше под пиво... :)
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32869604
skorohod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621
> Т.е. придется каждому обходиться "встроенной" в голову логикой, знанием предметной области, и умнием проводить
> декомпозицию.

Н-да, действительно сложновато получается. :(

> Возможно спасла бы положение единая общедоступная библиотека примитивов / субмоделей / моделей, (не алгоритмы и
> правила а "правильные" образцы) но сейчас это даже более несбыточно, чем голубая/розовая мечта :)

Хорошая мысль про библиотеку примитивов.

> Как бы вы описали эти локализованные значения?

Так "в лоб" и описал бы. Структура метаинформации к сожалению будет зависеть от способа локализации. Т. е. если выбрать вариант с одной таблицей и множеством полей для разных языков, получится что-то вроде:

system_language;
model_object;
model_object_attribute;
...
rel_object;
...
model_object_attribute_internationalisation;
...
rel_system_language;
rel_object_attribute;
...

Если локализация со связанной таблицей, то будут, соответственно, источник, локализуемое поле, приемник, локализующее поле.

Если честно, я не дошел еще до описания локализации, так что набросал на скорую руку.

Читая Ваши посты я пришел к выводу, что Вы заняты задачей, во многом пересекающейся с поднимаемыми тут вопросами.
Не поделитесь хотя-бы в общих словах (как я это выше изложил о своей ситуации) - в чем эта задача? Что есть, что надо получить? Может присутствующим здесь в чем-то поможет осмысление вашей задачи?!

По поводу многоязычности я спросил потому, что (по моему опыту) есть на самом деле немного задач, где она нужна в полном объеме.
Опять-же, как пример, могу привести единую коммерческую систему (БД), имеющую он-лайн клиентов в России, СНГ, Ю.Азии, З.Азии, З.Европе, В.Европе с головным офисом в Москве. Здесь "многоязычность" реализована русско-(для СНГ) и англо-язычными интерфейсами и двуязычными справочниками. В ходе разработки и поддержки системы никто не смог придумать веских агрументов для перевода данных и GUI на итальянский, венгерский, польский, турецкий, вьетнамский, казахский... языки. Всех вполне устроили русский и английский!
Навскидку могу "придумать", что полная многоязычность может понадобиться в международных образовательных проектах вроде библиотек, справочных БД, "баз знаний" и т.д. Там разработчикам придется делать абсолютно равноценную реализацию всех языков и тогда возникнет проблема алфавитной сортировки по множеству языков, которую корректно можно будет решить только на распределенных БД - на каждом сервере БД свой национальный collation и своя часть данных системы на национальном языке.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32870016
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Не поделитесь хотя-бы в общих словах

Что-то типа маленькой информационной системки "на каждый день". ;)

> По поводу многоязычности я спросил потому, что (по моему опыту) есть на самом
> деле немного задач, где она нужна в полном объеме.

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

> Здесь "многоязычность" реализована русско-(для СНГ) и англо-язычными
> интерфейсами и двуязычными справочниками.

Я сталкивался с таким подходом.

> Всех вполне устроили русский и английский!

Пример из жизни: [национальные] информационные агентства. Основная лента новостей - естественно, на родном языке. _Часть_ дублируется на английском. А нужны все сообщения. Вариант реализации: регистрируем все сообщения, переводим на нужный язык - частично. Дешевле потому как. Но - ничего из потенциально значимого не теряем.

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

Здесь будет важен интерфейс. Базу знаний принципиально не сделать полноценно многоязычной.

> возникнет проблема алфавитной сортировки по множеству языков,

Не думаю.

> которую корректно можно будет решить только на распределенных БД - на
> каждом сервере БД свой национальный collation и своя часть данных системы
> на национальном языке.

Хм... в общем случае - не согласен. Как один из возможных вариантов - возражений нет.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32870429
skorohod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Что-то типа маленькой информационной системки "на каждый день". ;)
А, это Вы, Штирлиц! :)

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

На счет громоздкости и нетривиальности - позвольте не согласиться!
С О-надстройкой могут быть довольно простые варианты решения и с несинхронным переводом тоже.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32870887
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> На счет громоздкости и нетривиальности - позвольте не согласиться!
> С О-надстройкой могут быть довольно простые варианты решения и с
> несинхронным переводом тоже.

Теоретически. А реально структура данных и без того получилась достаточно сложной. К тому же полноценная локализация - не главная задача в данном случае. Т. е. что-то будет переводиться, но без лингвистических изысков.
...
Рейтинг: 0 / 0
Объектная надстройка над релационной СУБД
    #32871137
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очередные результаты тестирования.
Ничего утешительного для любителей простых схем и сложных запросов :
real 50m53.88s
user 0m0.05s
sys 0m0.07s

Самое пикантное, что SELECT остался прежним, только вместо реальных таблиц приходится использовать вьюхи. Поскольку сложность написания запросов "влоб", без view, зашкаливает за пределы разумного. Стоило ли огород городить ?


Изменения, внесенные в схему :
1. create view vcustomers as
select a.data as customer_id, b.data as customer_desc
from data_i a, data_s b
where a.id_p = b.id_p
and a.id_s = 1 --in (select id from attr where value = "customer_id")
and b.id_s = 2; --in (select id from attr where value = "customer_desc");

create view vorders_ip (id_p, order_id, customer_id) as
SELECT id_p
,MAX(CASE id_s WHEN 3 THEN data END)
,MAX(CASE id_s WHEN 4 THEN data END)
FROM data_i
GROUP BY id_p;

create view vorders as
select
v.order_id,
v.customer_id,
d.data as order_cost,
e.data as order_date,
f.data as order_flag
from vorders_ip v, data_dc d, data_dt e, data_c f
where d.id_p = v.id_p
and e.id_p = v.id_p
and f.id_p = v.id_p
and d.id_s = 6
and e.id_s = 7
and f.id_s = 8;

3.
create index is1 on data_s (id_p, id_s);
create index is2 on data_s (id_s, id_p);

create index ii1 on data_i (id_p, id_s);
create index ii2 on data_i (id_s, id_p);

create index idc1 on data_dc (id_p, id_s);
create index idc2 on data_dc (id_s, id_p);

create index idt1 on data_dt (id_p, id_s);
create index idt2 on data_dt (id_s, id_p);
...
Рейтинг: 0 / 0
25 сообщений из 438, страница 11 из 18
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Объектная надстройка над релационной СУБД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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