|
|
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
Who am IВопрос с ходу: всегда ли нужен primary key? Да. Who am I Я видел ситуации, когда наличие pk в таблице было просто бессмысленным. Можно привести пример таких ситуаций ? Я видел в своей практике только один случай, когда не нужен был первичный ключ - в таблице, которая была предназначена для временного хранения данных, поступавших из внешней системы для хранения в БД. Данные из этой таблицы приводились потом в порядок и записывались в БД. Эти данные из внешней системы были плохого качества (дублированные), поэтому первичный ключ в этой ситуации был не нужен. А какие ситуации были у вас ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 00:12 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
Vika Vinner Вот чтобы я не делала точно - так это назначала GUID (UUID) ключом в VLDB. На одной колоночке в 6,000,000++ строк только ключ занял 650 GB.... а мог быть всего 150 GB.... Дорого... Integer занимает на 32 разрядных системах - 32 бита, на 64 разрядных - 64 бита. Guid занимает 128 бит. Считаем на 6 млн строк при использовании Guid у нас уходит 768000000 бит или 96000000 байт~91 мб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 09:09 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
Who am IВопрос с ходу: всегда ли нужен primary key? Я видел ситуации, когда наличие pk в таблице было просто бессмысленным. Ну некоторые программы ( MS Access например ) просто отказываются работать с таблицами без primary key. Это вообще один из основных принципов теории реляционных баз данных. А вообще топикстартера должны уволить за нелояльность, поскольку он не верит что банк где он работает сможет вырасти и иметь больше 10000 филиалов ( это только один пример почему такой ключ может привести к проблемам :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 10:27 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
пролетевшийWho am IВопрос с ходу: всегда ли нужен primary key? Я видел ситуации, когда наличие pk в таблице было просто бессмысленным. Ну некоторые программы ( MS Access например ) просто отказываются работать с таблицами без primary key. Это вообще один из основных принципов теории реляционных баз данных. А вообще топикстартера должны уволить за нелояльность, поскольку он не верит что банк где он работает сможет вырасти и иметь больше 10000 филиалов ( это только один пример почему такой ключ может привести к проблемам :-) Для таких таблиц, как банки индексы не нужны.Они будут давать только лишние тормоза ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 11:12 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
пролетевшийА вообще топикстартера должны уволить за нелояльность, поскольку он не верит что банк где он работает сможет вырасти и иметь больше 10000 филиалов ( это только один пример почему такой ключ может привести к проблемам :-) Его хоть за лояльность, а вас, по видимому, за недостаток знаний? :) CHAR(4) - в худшем случае 4 байта. В лучшем 8, а то и больше байт. Сколько в них разных комбинацией поместится сами посчитаете? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 12:15 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
Vika VinnerОКТОГЕНиспользовую UUID. Вполне себе хороший идентификатор. Вот чтобы я не делала точно - так это назначала GUID (UUID) ключом в VLDB. На одной колоночке в 6,000,000++ строк только ключ занял 650 GB.... а мог быть всего 150 GB.... Дорого... 6,000,000 * 16 байт = 96000000 байт ~ 91 мегабайт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 13:46 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
SeVaпролетевшийWho am IВопрос с ходу: всегда ли нужен primary key? Я видел ситуации, когда наличие pk в таблице было просто бессмысленным. Ну некоторые программы ( MS Access например ) просто отказываются работать с таблицами без primary key. Это вообще один из основных принципов теории реляционных баз данных. А вообще топикстартера должны уволить за нелояльность, поскольку он не верит что банк где он работает сможет вырасти и иметь больше 10000 филиалов ( это только один пример почему такой ключ может привести к проблемам :-) Для таких таблиц, как банки индексы не нужны.Они будут давать только лишние тормозаа индексы-то тут причём? разговор про первичный ключ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 14:28 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
egorychSeVaпролетевшийWho am IВопрос с ходу: всегда ли нужен primary key? Я видел ситуации, когда наличие pk в таблице было просто бессмысленным. Ну некоторые программы ( MS Access например ) просто отказываются работать с таблицами без primary key. Это вообще один из основных принципов теории реляционных баз данных. А вообще топикстартера должны уволить за нелояльность, поскольку он не верит что банк где он работает сможет вырасти и иметь больше 10000 филиалов ( это только один пример почему такой ключ может привести к проблемам :-) Для таких таблиц, как банки индексы не нужны.Они будут давать только лишние тормозаа индексы-то тут причём? разговор про первичный ключ А, что первичный ключ индексом не является? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 14:47 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
> А, что первичный ключ индексом не является? Нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 15:42 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
Формально - contraint, но уникальность достигается за счет автоматического создания индекса(по крайней мере, для MS SQL). Вопрос был поставлен не совсем точно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 17:59 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
> по крайней мере, для MS SQL Нет смысла рассматривать диалекты. Оперируйте стандартами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 18:33 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
alexs0ffInteger занимает на 32 разрядных системах - 32 бита, на 64 разрядных - 64 бита. Guid занимает 128 бит. Считаем на 6 млн строк при использовании Guid у нас уходит 768000000 бит или 96000000 байт~91 мб. ОКТОГЕН6,000,000 * 16 байт = 96000000 байт ~ 91 мегабайт. ну, заклевали девушку... Вика, я извиняюсь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 18:39 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
guest_20040621> А, что первичный ключ индексом не является? Нет. является. но "as is", без дополнительных расходов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 18:41 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
> является. но "as is", без дополнительных расходов. Отослать к букварям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 19:20 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
guest_20040621> является. но "as is", без дополнительных расходов. Отослать к букварям? нет, показать РЕАЛЬНУЮ субд, где праймари ки не является индесом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 19:27 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
eNoseВика, я извиняюсь! Коллеги, ключевым словом было VLDB если не было Сразу очевидным. Считать мега - кило - гига - это в принципе конечно хорошо. И никто - обратите внимание - никто не посчитал сколько такой же объект возьмёт будь он интеджер. ... И сравнить отношение. Если таких табличек пару килов на распределённой системе ... И диски на которых они стоят Tier I - там и получится $$$$$... В общем нехорошо если разработчики не обратили внимания на такую мелочь своевременно.. Предлагала же вопрос снять ... С самого начала Цифирьки были мои весьма условные... Так для сведения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 19:43 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
Vika Vinner, Вика, вот ненадо :) Вери лардж дэйтабэйз на то и "вери лардж", что заранее известны порядки количества строк. Если нет специального ограничения по ресурсам (а это редкость при очень больших объемах), то int64 даёт таки преемущества. Да, размер int64 больше GUID(UUID), но и диапазон по-более. Есть резерв для непредвиденного роста объемов. А еще надо учитывать что INT (и его вариации) - сами по себе ключи, ненадо всяких суррогатов в виде хэшей (как в string-ориентированных ключах) и еще (самое главное) - GUID всё-таки вероятностный ключ... Вероятность мала, конечно, но ... она есть! И если база реплицируется без учета этого то возможна коллизия... вроде не должны были, а они совпали. Парадокс? нет. особенности гуида. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 19:54 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
eNoseguest_20040621> является. но "as is", без дополнительных расходов. Отослать к букварям? нет, показать РЕАЛЬНУЮ субд, где праймари ки не является индесом.А действительно, есть ли СУБД, в которых PK != индекс? А если есть - почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 20:03 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
eNoseVika Vinner, Вика, вот ненадо :) Вери лардж дэйтабэйз на то и "вери лардж", что заранее известны порядки количества строк. Если нет специального ограничения по ресурсам (а это редкость при очень больших объемах), то int64 даёт таки преемущества. Да, размер int64 больше GUID(UUID), но и диапазон по-более. Есть резерв для непредвиденного роста объемов. А еще надо учитывать что INT (и его вариации) - сами по себе ключи, ненадо всяких суррогатов в виде хэшей (как в string-ориентированных ключах) и еще (самое главное) - GUID всё-таки вероятностный ключ... Вероятность мала, конечно, но ... она есть! И если база реплицируется без учета этого то возможна коллизия... вроде не должны были, а они совпали. Парадокс? нет. особенности гуида. Есть различные методы выработки. Есть вероятностный, а естьпо mac адресам+ время + соль. Если в системе совпадают эти адреса, это проблемы того, кто пользуется дешёвым китайским оборудованием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 20:04 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
Senya_LА действительно, есть ли СУБД, в которых PK != индекс? есть :) БерклиДБ (в оригинале). Senya_LА если есть - почему? Потому что такова изначальная идеология: пара индекс-хэш. Но это не для guest_20040621, он пусть сам думает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 20:08 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНЕсть различные методы выработки. Есть вероятностный, а естьпо mac адресам+ время + соль. Если в системе совпадают эти адреса, это проблемы того, кто пользуется дешёвым китайским оборудованием. так всё дело в том, то гуиды не гарантируют уникальность вообще. в определении честно указано, то "вероятность совпадения мала", но она всё-таки есть. как я это понимаю, чем больше объем таблицы (в строках) - тем больше вероятность напороться на дубль (в пределах одной железки врядли, но если идет репликация с нескольких серверов...). и уж тем более, если заранее известно, что база - vldb - то использовать гуиды опасно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 20:13 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
eNoseДа, размер int64 больше GUID(UUID), но и диапазон по-более. Есть резерв для непредвиденного роста объемов. это не читать, это я пиво пью :) стормозил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 20:22 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
eNoseесть :) БерклиДБ (в оригинале).Надо же... Поверю на слово, хотя это как-то иррационально. Хотя, может быть и ближе к "чистой науке" :) eNoseeNoseДа, размер int64 больше GUID(UUID), но и диапазон по-более. Есть резерв для непредвиденного роста объемов. это не читать, это я пиво пью :) стормозил :)А я вже начал сомневаться в адекватности восприятия. И не напрасно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 20:36 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
eNose, Если в системе совпадают эти адреса, это проблемы того, кто пользуется дешёвым китайским оборудованием. Вы читать умеете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 20:48 |
|
||
|
Primary key не integer
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНeNose, Если в системе совпадают эти адреса, это проблемы того, кто пользуется дешёвым китайским оборудованием. Вы читать умеете? авторИ если база реплицируется без учета этого то возможна коллизия... умею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2009, 20:51 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36375385&tid=1542924]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 502ms |

| 0 / 0 |
