Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Кстати, по поводу велосипедов, ;) > метаданные максимально просто хранить в XML, что автоматом решает проблему Нет смысла их выносить во внешний файл. Вот сгенерировать конфиг или интерфейс - действительно удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 12:22 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Хранить в БД, почему обязательно файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 12:46 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Хранить в БД, почему обязательно файл Т. е. xml и храним в базе данных? А пользуемся так: сначала выбираем его из базы данных, потом разбираем? Фишка-то в чем? Если файл, то по крайней мере из базы ничего выбирать не надо, это уже быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 13:02 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Моя СУБД прекрасно работает с xml. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 14:38 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Моя СУБД прекрасно работает с xml. Вы считаете, что это достаточный аргумент? Т. е. на здравый смысл наплевать, важно, что _Моя СУБД_ поддерживает фичу N? Ну-ну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 14:51 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Это норма, а не фича (из культовых субд imho этого нет в ib/fb/yfl и mysql). Я не собираюсь горбатиться ради самоцели "независимость от СУБД". Мы с Вами людим по этому поводу уже говорили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 15:23 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Это норма, а не фича Ссылочку на нормативный документ - в студию. > (из культовых субд imho этого нет в ib/fb/yfl и mysql). Не бывает культовых СУБД. Есть тупые религиозные фанатики. > Я не собираюсь горбатиться ради самоцели "независимость от СУБД". Ну-ну еще раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 15:40 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
guest_20040621 2 skorohod > Что называть единым инфо-пространством?! Хороший вопрос. ;) ............. Под единым информационным пространством мне бы хотелось понимать еще и возможность идентификации любой сущности (файл, документ или запись любой внешней базы данных). Соответственно, и потенциальная возможность оперировать (по крайней мере, корректно на нее ссылаться) такой сущностью. Согласен - это просто вопрос полноты объектного описания окружающей реальности и вполне реализуемо - хватило-бы ума и здоровья. А вот на счет записей внешних БД! Хорошо, если это справочные (напр. на CD)базы "readonly" - нет проблем, и вполне логично использовать и такой ресурс. А если это "живая" база, да без грамотного словаря, в которой сегодня есть запись, а завтра уже нету, или таблицы появляются-исчезают. Как быть? Как отслеживать корректность ссылок? Использовать уже упоминавшиеся в этом топике средства вроде BuisnesObjects? Или вносить их функциональность в "нашу" систему усложняя метаданные? guest_20040621 > Кстати, guest_20040621, интересно узнать ваш взгляд на необходимость и форму реализации мультиязычности! В общем случае imho обязательно. Немного задач, которые реально позволяют без нее обойтись. Форма - традиционная (любой из трех возможных способов на выбор). Наличие/отсутствие локализованных значений регистрируется в метаописании как один из признаков. А можно здесь описать три возможных способа применительно к объектной-модели БД? Дабы сравнить с ними мое представление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 15:42 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
1. Для Вас пунк меню Правка, где можно копировать, вставлять и др норма или фича?!А нормативного документа на это нет.XML существует довольно много лет и если в субд не реализовали его использования, то это их проблемы.Им за это деньги платят.Нет-пошли додальше... 2. Под какой СУБД работаете Вы? 3. НЕ походите на mv с его "калеками" 4. если любите работать - работайте для абстрактных самоцелей (похоже, опять уходим в рекурсию) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 16:01 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Согласен - это просто вопрос полноты объектного описания окружающей реальности и вполне реализуемо - хватило-бы > ума и здоровья. Я немного не то имел в виду. Нужна не готовая структура для описания внешних объектов, а алгоритм, правила, которые позволяли бы это делать. Структура данных для этого - не самое сложное. > А если это "живая" база, да без грамотного словаря, в которой сегодня есть запись, а завтра уже нету, или таблицы > появляются-исчезают. Как быть? Как отслеживать корректность ссылок? В общем случае - никак. Я не знаю такого способа. Но можно решить более узкую задачу (например, для баз данных без физического удаления записей; изменения состава/имен таблиц трактовать как версионность). > Или вносить их функциональность в "нашу" систему усложняя метаданные? Никто не мешает использовать метаданные (в смысле, конечно, не сами метаданные, а их элементарные объекты), позволяющие описывать не только структуру "внутренней" базы данных. ;) > А можно здесь описать три возможных способа применительно к объектной-модели БД? А почему применительно к объектной модели? Мультиязычность сама по себе, объектная модель - сама по себе (т. е. это не связанные вещи; одна без другой вполне себе существует). Важно описать локализованные значения в метаданных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 16:22 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> XML существует довольно много лет и если в субд не реализовали его > использования, то это их проблемы. Если такого типа данных нет в стандарте, то его реализация - отсебятина. А кому какая моча в голову ударила и по какому поводу - у меня нет ни желания, ни времени разбираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 16:27 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Никто и не собирается его реализовывать вручную: я выбираю СУБД под задачу (чтобы при этом меньше напрягаться как в материальном, так и во временном смысле), а не задачу под СУБД. Вы не ответили на вопрос о СУБД, на которой работаете Вы.В стандарте w3c есть xml. Заранее сорри, НО топик называется по-другому, а Вы довольно успешно сбиваете всех на какие-то левые разговоры. Поздравляю. Вам с таким талантом в психотерапевты идти. Удачных выходных, господа. Берегите мозги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 16:41 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Вы не ответили на вопрос о СУБД, на которой работаете Вы. К обсуждению это отношения не имеет. > В стандарте w3c есть xml. Вот когда в sql стандартах появится тип данных xml, появится и предмет для обсуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 17:00 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
skorohod2 vybegallo > Есть такой старый анекдот > Сидит чукча на дереве и пилит под собой ветку. Прохожий ему > - что ты делаешь, ты же упадешь ! > чукча продолжает пилить, падает, встает - "Колдун, однако !" > Я понятно намекаю ? Амвросий Амбруазович! Я тут посмотрел по форуму... Вы оказывается не только в нашем топике проверяете, чтобы народ на нужных ветках сидел и в руки ничего лишнего не брал. Как, не тяжело за всеми сразу следить??? На пенсию не пора еще? Я понятно намекаю ? -- Ничего, ничего, -- сказал Выбегалло. -- Это вам не Португалия. Критики не любите. Лет триста назад я бы с тобой тоже не особенно церемонился, кафолик недорезанный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 17:38 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
2 guest_20040621 > Я немного не то имел в виду. Нужна не готовая структура для описания > внешних объектов, а алгоритм, правила, которые позволяли бы это > делать. Структура данных для этого - не самое сложное. Я о подобных правилах не слышал. УМЛ наверно сюда очень слабо вписывается! Вы предлагаете их здесь выработать? Результат наверное "потянул-бы" на всеобщий стандарт. Только боюсь, что ничего не получится из этого. Т.е. придется каждому обходиться "встроенной" в голову логикой, знанием предметной области, и умнием проводить декомпозицию. Возможно спасла бы положение единая общедоступная библиотека примитивов / субмоделей / моделей, (не алгоритмы и правила а "правильные" образцы) но сейчас это даже более несбыточно, чем голубая/розовая мечта :) >> А если это "живая" база, да без грамотного словаря, в которой сегодня >> есть запись, а завтра уже нету, или таблицы >> появляются-исчезают. Как быть? Как отслеживать корректность ссылок? > В общем случае - никак. Я не знаю такого способа. Но можно решить более > узкую задачу (например, для баз данных без физического удаления записей; > изменения состава/имен таблиц трактовать как версионность). Можно динамику структуры и данных трактовать как версионность, но все равно останется задача КОНТРОЛЯ всего описанного в модели внешнего окружения. Если позволяют аппаратные ресурсы и не смущает разбухание объектной модели - то я особых проблем не вижу (возм. за исключением совместимости) - пусть машина работает, и перелопачивает все хоть каждые 5 минут. >> Или вносить их функциональность в "нашу" систему усложняя метаданные? > Никто не мешает использовать метаданные (в смысле, конечно, не сами > метаданные, а их элементарные объекты), позволяющие описывать не только > структуру "внутренней" базы данных. ;) Я с этим уже выше согласился, можно, просто не нравится что придется в модели описывать чужие базы, приложения, хотя если очень нужно и денежку заплатят ... :) >> А можно здесь описать три возможных способа применительно к объектной-модели БД? > А почему применительно к объектной модели? Мультиязычность сама по > себе, объектная модель - сама по себе (т. е. это не связанные вещи; одна > без другой вполне себе существует). Важно описать локализованные > значения в метаданных. Да, не связанные, но мне интересна Ваша позиция именно в частном случае реализации мультиязычности в системе с объектной моделью. Как бы вы описали эти локализованные значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 17:57 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Т.е. придется каждому обходиться "встроенной" в голову логикой, знанием предметной области, и умнием проводить > декомпозицию. Н-да, действительно сложновато получается. :( > Возможно спасла бы положение единая общедоступная библиотека примитивов / субмоделей / моделей, (не алгоритмы и > правила а "правильные" образцы) но сейчас это даже более несбыточно, чем голубая/розовая мечта :) Хорошая мысль про библиотеку примитивов. > Как бы вы описали эти локализованные значения? Так "в лоб" и описал бы. Структура метаинформации к сожалению будет зависеть от способа локализации. Т. е. если выбрать вариант с одной таблицей и множеством полей для разных языков, получится что-то вроде: system_language; model_object; model_object_attribute; ... rel_object; ... model_object_attribute_internationalisation; ... rel_system_language; rel_object_attribute; ... Если локализация со связанной таблицей, то будут, соответственно, источник, локализуемое поле, приемник, локализующее поле. Если честно, я не дошел еще до описания локализации, так что набросал на скорую руку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 20:58 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2005, 23:56 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
vybegalloА если Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. А также для таблицы data_dt не забыть проиндексировать еще и по полю Data, если конечно не выбирается практически весь диапазон. Кстати, а какой смысл поля serial в данном контексте ? Проверил бы сам, но под рукой только MSSQL, а переводить лениво :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2005, 08:08 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
ChA vybegalloА если Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. А также для таблицы data_dt не забыть проиндексировать еще и по полю Data, если конечно не выбирается практически весь диапазон. Кстати, а какой смысл поля serial в данном контексте ? Проверил бы сам, но под рукой только MSSQL, а переводить лениво :) Да я еще поиграюсь в понедельник с индексами. Запустил update statistics high, так он мне новый план построил - на 1 час 4 минуты :-) Проиндексировать по дате есть смысл, но если прикинуть всю систему в целом, скажем, 100 таблиц, и все сливают свои даты в одну таблицу... view так же переделал, но тестировать уже не было времени - уж больно я задачу упростил этими id_s = 3 :-) вместо where id_s in (select ... from attr ...). Короче, нашим юным пионерам есть о чем задуматься в плане производительности. Я, кстати, не хочу сказать, что такая схема всегда и обязательно зло. Скажем, кто-то на форуме постил задачу - требуется учесть атрибуты товаров, причем товаров много, и атрибуты у них разнообразные. Ну не заводить же 1000 таблиц для каждого товара отдельно ? Имеет смысл атрибуты слить в одну таблицу. Но при этом надо ясно понимать и отдавать себе отчет в том, какой геморрой в плане запросов и производительности тебе предстоит - а не эти вот заявления "думаю, падение производительности будет неощутимым". Ты, блин, не думай - ты попробуй ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2005, 09:04 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Кстати, продолжая тему, кластерным, пожалуй, лучше делать не (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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2005, 18:45 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
guest_20040621 > Т.е. придется каждому обходиться "встроенной" в голову логикой, знанием предметной области, и умнием проводить > декомпозицию. Н-да, действительно сложновато получается. :( > Возможно спасла бы положение единая общедоступная библиотека примитивов / субмоделей / моделей, (не алгоритмы и > правила а "правильные" образцы) но сейчас это даже более несбыточно, чем голубая/розовая мечта :) Хорошая мысль про библиотеку примитивов. > Как бы вы описали эти локализованные значения? Так "в лоб" и описал бы. Структура метаинформации к сожалению будет зависеть от способа локализации. Т. е. если выбрать вариант с одной таблицей и множеством полей для разных языков, получится что-то вроде: system_language; model_object; model_object_attribute; ... rel_object; ... model_object_attribute_internationalisation; ... rel_system_language; rel_object_attribute; ... Если локализация со связанной таблицей, то будут, соответственно, источник, локализуемое поле, приемник, локализующее поле. Если честно, я не дошел еще до описания локализации, так что набросал на скорую руку. Читая Ваши посты я пришел к выводу, что Вы заняты задачей, во многом пересекающейся с поднимаемыми тут вопросами. Не поделитесь хотя-бы в общих словах (как я это выше изложил о своей ситуации) - в чем эта задача? Что есть, что надо получить? Может присутствующим здесь в чем-то поможет осмысление вашей задачи?! По поводу многоязычности я спросил потому, что (по моему опыту) есть на самом деле немного задач, где она нужна в полном объеме. Опять-же, как пример, могу привести единую коммерческую систему (БД), имеющую он-лайн клиентов в России, СНГ, Ю.Азии, З.Азии, З.Европе, В.Европе с головным офисом в Москве. Здесь "многоязычность" реализована русско-(для СНГ) и англо-язычными интерфейсами и двуязычными справочниками. В ходе разработки и поддержки системы никто не смог придумать веских агрументов для перевода данных и GUI на итальянский, венгерский, польский, турецкий, вьетнамский, казахский... языки. Всех вполне устроили русский и английский! Навскидку могу "придумать", что полная многоязычность может понадобиться в международных образовательных проектах вроде библиотек, справочных БД, "баз знаний" и т.д. Там разработчикам придется делать абсолютно равноценную реализацию всех языков и тогда возникнет проблема алфавитной сортировки по множеству языков, которую корректно можно будет решить только на распределенных БД - на каждом сервере БД свой национальный collation и своя часть данных системы на национальном языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2005, 11:35 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Не поделитесь хотя-бы в общих словах Что-то типа маленькой информационной системки "на каждый день". ;) > По поводу многоязычности я спросил потому, что (по моему опыту) есть на самом > деле немного задач, где она нужна в полном объеме. Думаю, что в полном объеме ее никто и не будет реализовывать (imho нормальная реализация должна включать в себя возможность несинхронного альтернативного перевода, а это не тривиальная задача с громоздкой структурой). > Здесь "многоязычность" реализована русско-(для СНГ) и англо-язычными > интерфейсами и двуязычными справочниками. Я сталкивался с таким подходом. > Всех вполне устроили русский и английский! Пример из жизни: [национальные] информационные агентства. Основная лента новостей - естественно, на родном языке. _Часть_ дублируется на английском. А нужны все сообщения. Вариант реализации: регистрируем все сообщения, переводим на нужный язык - частично. Дешевле потому как. Но - ничего из потенциально значимого не теряем. > полная многоязычность может понадобиться в международных образовательных > проектах вроде библиотек, справочных БД, "баз знаний" и т.д. Здесь будет важен интерфейс. Базу знаний принципиально не сделать полноценно многоязычной. > возникнет проблема алфавитной сортировки по множеству языков, Не думаю. > которую корректно можно будет решить только на распределенных БД - на > каждом сервере БД свой национальный collation и своя часть данных системы > на национальном языке. Хм... в общем случае - не согласен. Как один из возможных вариантов - возражений нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2005, 13:33 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> Что-то типа маленькой информационной системки "на каждый день". ;) А, это Вы, Штирлиц! :) >> По поводу многоязычности я спросил потому, что (по моему опыту) >> есть на самом деле немного задач, где она нужна в полном объеме. > Думаю, что в полном объеме ее никто и не будет реализовывать (imho > нормальная реализация должна включать в себя возможность несинхронного > альтернативного перевода, а это не тривиальная задача с громоздкой > структурой). На счет громоздкости и нетривиальности - позвольте не согласиться! С О-надстройкой могут быть довольно простые варианты решения и с несинхронным переводом тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2005, 15:39 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
> На счет громоздкости и нетривиальности - позвольте не согласиться! > С О-надстройкой могут быть довольно простые варианты решения и с > несинхронным переводом тоже. Теоретически. А реально структура данных и без того получилась достаточно сложной. К тому же полноценная локализация - не главная задача в данном случае. Т. е. что-то будет переводиться, но без лингвистических изысков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2005, 18:06 |
|
||
|
Объектная надстройка над релационной СУБД
|
|||
|---|---|---|---|
|
#18+
Очередные результаты тестирования. Ничего утешительного для любителей простых схем и сложных запросов : 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); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2005, 21:36 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32864795&tid=1545998]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 369ms |

| 0 / 0 |
