Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопросы по доступу к метаданным
|
|||
|---|---|---|---|
|
#18+
1.А старые значения ID восстановить нельзя? Если будете при загрузке менять ID, это слишком большая проблема, оно вам точно надо? 2. Попробовать использовать естественные ключи вместо суррогатных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 05:58 |
|
||
|
Вопросы по доступу к метаданным
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.1.А старые значения ID восстановить нельзя? Если будете при загрузке менять ID, это слишком большая проблема, оно вам точно надо? Да, мне тоже хотелось бы восстановить старые значения ID. Но этого сделать не получается. При явном указании значения поля ID в insert-запросе вылетает ошибка про невозможность пользовательского задания автогенерируемого значения. Дело в том, что в исходной (экспортируемой в скрипт) таблице код ID в общем случае не обязательно идет последовательно, после длительной работы пользователей с таблицей очень вероятно, что значения поля ID будут разрежены. Сохранив эту таблицу в скрипт (даже со знаениями полей ID) возникает проблема последующей загрузки скрипта в таблицу (пускай даже чистую). На это накладывается требование сохранения связей между таблицами. Блок А.Н.2. Попробовать использовать естественные ключи вместо суррогатных. К сожалению я не знаю как настроить relationship между классами на основе значений естественных ключей. К тому же не хочется добалять дополнительные PK когда и так есть ID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 13:39 |
|
||
|
Вопросы по доступу к метаданным
|
|||
|---|---|---|---|
|
#18+
Если решить проблему дублирования ID ... то указать ID в INSERT можно, достаточно завести поле ID и назначить его IDKEY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 13:59 |
|
||
|
Вопросы по доступу к метаданным
|
|||
|---|---|---|---|
|
#18+
Andrey Bark Блок А.Н.3,4 Наверняка есть классы в пакете %Dictionary, которые вам помогут. Но лично мне удобней ползать по глобалам ^oddDEF, ^oddCOM Спасибо за наводку, почитаю. Блок А.Н.5 не понял, что вы имеет в виду. Возможно вы путаете ID и OREF объекта? OREF меняется при каждом открытии объекта и идентифицирует его только в пределах процесса. ID постоянен (его кажется вообще нельзя изменить легальным методами) Речь именно про ID. Представим что у нас в базе лежат данные для двух связанных по релатионшипу класов. Мы экспортируем эти данные в какой-либо файл, вместе со значениями полей ID. После этого пользователь продолжает работать с базой. И внутренние значения ID продолжают расти. После этого нам нужно загрузить в базу ранее сохраненные данные, но так чтобы сязи между ними не потерялись. Но при их добавлении они получат уже новые значения ID. При этом Cache не позволяет (насколько я понял) принудительно задавать/изменять значения поля ID. Встает вопрос: Как грамотно сохранить связи между объектами? И как их потом загружать? В Cache' есть синхронизация объектов. Для реализации синхронизации в Cache' есть поддержка GUID. Глобальный уникальный идентификатор как раз позволяет решить проблему, которую Вы описываете. Почитайте документацию на эту тему . Советую использовать GUID! Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 14:25 |
|
||
|
Вопросы по доступу к метаданным
|
|||
|---|---|---|---|
|
#18+
То, что значения ID идут разреженно - доказывать не нужно Andrey Bark Блок А.Н.1.А старые значения ID восстановить нельзя? При явном указании значения поля ID в insert-запросе вылетает ошибка про невозможность пользовательского задания автогенерируемого значения. А у меня получается. Хотя у нас идешники не совсем стандартные. Они тоже автоинкрементные, но генерятся "руками". Andrey Bark Блок А.Н.2. Попробовать использовать естественные ключи вместо суррогатных. К сожалению я не знаю как настроить relationship между классами на основе значений естественных ключей. К тому же не хочется добалять дополнительные PK когда и так есть ID. Ну в общем то вы делаете индекс по любому уникальному (идентифицирующему) полю, говорите в свойствах что это idkey - и все, работаете так же, это поле теперь как ID (если не так сказал - пусть поправят). С такими (естественными) ключами не возникнет проблем связности (правда там другие проблемы, но эти проблемы возникнут в любой СУБД). Правда если у вас есть уже работающая система - этот способ не подойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 14:51 |
|
||
|
Вопросы по доступу к метаданным
|
|||
|---|---|---|---|
|
#18+
VadimF В Cache' есть синхронизация объектов. Для реализации синхронизации в Cache' есть поддержка GUID. Глобальный уникальный идентификатор как раз позволяет решить проблему, которую Вы описываете. Почитайте документацию на эту тему . Советую использовать GUID! Вадим Вот ... хоть какой то пример на пальцах.... но все равно остается неясным ... как например сделать что бы синхронизировались только выбранные таблицы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 20:13 |
|
||
|
Вопросы по доступу к метаданным
|
|||
|---|---|---|---|
|
#18+
VadimFВ Cache' есть синхронизация объектов. Для реализации синхронизации в Cache' есть поддержка GUID. Глобальный уникальный идентификатор как раз позволяет решить проблему, которую Вы описываете. Почитайте документацию на эту тему. Советую использовать GUID! Спасибо за совет, посмотрел. Это конечно все очень хорошо,мощно и интересно. Но применять средство поддержки репликации баз для решения простых задач импорта/экспорта данных по-моему это как из пушки по воробъям. Хочется более простого решения. PtnЕсли решить проблему дублирования ID ... то указать ID в INSERT можно, достаточно завести поле ID и назначить его IDKEY. Проблемы дублирования ID у меня нет, я готов предварнительно очищать глобалы с данными. Интересно только, сохраняется ли при таком подходе внутреннее поле %ID ? И как-то переделывать все классы базы данных не хотелось бы. Но большое спасибо за очень ценный совет. Блок А.Н.Ну в общем то вы делаете индекс по любому уникальному (идентифицирующему) полю, говорите в свойствах что это idkey - и все, работаете так же, это поле теперь как ID (если не так сказал - пусть поправят). С такими (естественными) ключами не возникнет проблем связности (правда там другие проблемы, но эти проблемы возникнут в любой СУБД). Правда если у вас есть уже работающая система - этот способ не подойдет. Спасибо. Ваш пост совместно с постом уважаемого Ptn проянили механизм настриваемого для ID поля. Это наверно лучшее решения, единственная проблема в том, механизм импорта/экспорта данных с сохранением связности объектов хотелось бы иметь более-менее универсальный, по возможности не сильно привязанный к описаниям классов. Предполагалось описания классов получать динамически, выявлять какое поле является ID, и сохранять это в строки вида Код: plaintext 1. 2. Итого: GUID - тяжеловесно, собственный естественный ключ с IDKEY - хорошо, но требует предварительной модификации классов. Хотелось бы универсального решения без изменения структуры базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 19:08 |
|
||
|
Вопросы по доступу к метаданным
|
|||
|---|---|---|---|
|
#18+
Сделайте свой суррогатный ключ, тот же автоинкрементный ID. Для всех связанных классов ничего не изменится - старые ID не потеряются. Правда классы все равно придется модифицировать, например ту же процедуру выдачи нового ID. Примерно так у нас сделано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 20:02 |
|
||
|
Вопросы по доступу к метаданным
|
|||
|---|---|---|---|
|
#18+
%ID Существует всегда - это декларативная сущность. Занимался я у нас проблемой разнонаправленных бэкапов... могу сказать следующее... Анализируя описание классов - всегда можно построить схему, не всегда просто но можн, где в классе ссылки на объект, где ID где еще какой прикол. Если интересует именно полноый перенос базы - то проще рещить бэкапами или переносом глобалов. В противном случае у вас неизбежно в файле восстоновления должны появится UPDATE-ы и DELETE-ы... что приводит нас к третей проблеме .... Либо встраивать систему трассировки, что бы вести журнал изменениий таблицы... либо учится определять неизменые/изменненые строки ... что с ростом базы будет выполнять все труднее и труднее по экспоненте... Вот если бы "научится" работать на низком уровне с системной таблицей синхронизаций GUID.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2007, 22:25 |
|
||
|
|

start [/forum/topic.php?fid=39&startmsg=34770589&tid=1559231]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 413ms |

| 0 / 0 |
