Привет Николай

Уникальность ид-шников - это только часть проблемы, как зачастую тонко
подмечает в своих "бугага" Дима Коваленко :))
Например, нужен план действий, на случай, когда одна сущность одновременно
внесена в разных базах...

Эти вопросы здесь не поднимаю. Интересуют не проблемы логической целостности, они в целом не привязаны к реализации сервера, мне кажется. Что MS, что Firebird - по барабану. К тому же, это уже должен программист сам думать и решать - это его хлеб, так ведь? А вот какие могут быть технические проблемы в Firebird-базе (например с производительностью запросов в такой базе) при варианте, когда ключевой индекс формируется не обычным 1,2,3,4...., а описанным способом, 1001,2001,3001,...,1002,2002,4001 и тд, решающим, видимо, те же задачи, что и первичный ключ на GUID, в принципе.

Хотя, пожалуй, выяснить это можно и самостоятельно - взять да нагенерить пару-тройку миллионов записей разными способами, а потом покрутить полученные результаты да сравнить. Главное - не упустить бы чего эдакого, о чем и не подозреваешь. А переделывать базу будет уже поздняк метаться...



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

Фантастика какая-то :))

Ну значит, видимо, проблем не будет :)


VB> Короче: есть подозрение, что абсолютно незнакомый мне термин "свойство
VB> монотонного возрастания" как раз про эти проблемы с вариантом 1 :)

Да нет, просто когда кадый последующий ид-шник больше предыдущего - очень
просто, хоть и не совсем верно по канонам, определять последнюю запись,

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



когда,
например, есть версионирование сущностей:

id_object
id_object_ver
object_name


Ох, я близко даже понять не могу, о чем Вы говорите. Не знаете ли Вы каких ссылок интересных на эту тему, подучиться немного?

По крайней мере ясно, что у тех, кто с GUID работает как ключевыми полями, этот вопрос не всплывает.

С уважением
Владимир


Ответить