|
|
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
m1andryUUID_SHORT() не стоит использовать... код подразделения нужно вводить... как минимум в центральную БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 09:30:07 |
|
||
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
Arm79m1andryUUID_SHORT() не стоит использовать... код подразделения нужно вводить... как минимум в центральную БД Тоже сомневаюсь насчет него, так как неясна природа создания этого "случайно уникального" числа, но подкупает то, что тип поля INT, т.е. не прийдется перелопачивать весь код для внесения изменений с работой по ID типа String. А как по-вашему мнению, почему UUID_SHORT() не стоит использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 12:10:16 |
|
||
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
m1andry... не прийдется перелопачивать весь код для внесения изменений с работой по ID типа String. У меня плейсхолдеры на ID везде ?i, но это то, что на поверхности. Пока не до конца осознаю, во что еще может вылиться смена первичного ключа на String. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 12:12:27 |
|
||
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
Arm79не стоит использовать... Вот кстати еще один повод для сомнений. Никак не пойму, отчего в MySQL столько мелочей-недоработок? Почему нет возможности стандартными средствами хранить дерево в таблицах, а нужно мудрить костыли с Nested Tree? Почему до 5.5 только на одно поле Timestamp можно было вешать CURRENT_TIMESTAMP? Почему не оптимизирована работа с UUID (хранение, индексация, кластеризация и т.д.)? Но это так, крик души) Кстати, не посоветуете какой-нибудь простенький класс для работы с Nested Tree? Может сталкивались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 12:17:49 |
|
||
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
А вот кстати по поводу кластеризации, оказывается в UUID_SHORT можно настраивать порядок формирования значения , т.е. что бы сначала шел timestamp вместо server_id, ну и наоборот. Скажите пожалуйста, где выставляется этот самый server_id? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 12:23:04 |
|
||
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
m1andryА как по-вашему мнению, почему UUID_SHORT() не стоит использовать? Из-за этого: The value of UUID_SHORT() is guaranteed to be unique if the following conditions hold: * The server_id of the current host is unique among your set of master and slave servers * Server_id is between 0 and 255 * You do not set back your system time for your server between mysqld restarts * You do not invoke UUID_SHORT() on average more than 16 million times per second between mysqld restarts Не переводить время, ограничения на ServerId, требование уникальности имени северов только в рамках вашей системы. В общем, если это не смущает, то можно выбирать. m1andryНикак не пойму, отчего в MySQL столько мелочей-недоработок? Покупайте Oracle или MS SQL :-) m1andryПочему нет возможности стандартными средствами хранить дерево в таблицах, а нужно мудрить костыли с Nested Tree? Это какие такие "стандартные" средства? Nested Tree - это лишь тип дерева, который реализуется везде. Чем вас не устраивает стандартные Id - ParentId? m1andryПочему не оптимизирована работа с UUID (хранение, индексация, кластеризация и т.д.)? Почему не оптимизирована? Вы с чем сравниваете то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 14:30:43 |
|
||
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
Если нужны какие-то тонко-настроеные права доступа, то имеет смысл создать отдельную колонку created_by или,например source_db_id. Вычислять на лету источник из ГУИД , я думаю, будет небыстро (по сравнению с отдельной проиндексированой колонкой) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2014, 16:17:32 |
|
||
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
javajdbcЕсли нужны какие-то тонко-настроеные права доступа, то имеет смысл создать отдельную колонку created_by или,например source_db_id. Вычислять на лету источник из ГУИД , я думаю, будет небыстро (по сравнению с отдельной проиндексированой колонкой) Подскажете, какое Ваше мнение насчет UUID() в качестве PK? Все-таки CHAR(30), насколько удачно применять строчный первичный ключ? Не будет заметной потери в производительности, если есть куча JOIN ON ID=parentID? И также куча таблиц-связок одна-ко-многим (ID1, ID2), опять же, занимаемое место, или можно пренебречь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 14:37:40 |
|
||
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
Arm79m1andryПочему не оптимизирована работа с UUID (хранение, индексация, кластеризация и т.д.)? Почему не оптимизирована? Вы с чем сравниваете то? Сравниваю с обычным INT, или ошибаюсь? INT PK при AI пишется в индексе в конец, так как ID идет по возрастающей, а вот что будет с UUID, который постоянно генерируется с бухты-барахты? Как вообще реализуется в крупных проектах PK? INT или делают и UUID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 14:40:18 |
|
||
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
m1andryСравниваю с обычным INT, или ошибаюсь? INT PK при AI пишется в индексе в конец, так как ID идет по возрастающей, а вот что будет с UUID, который постоянно генерируется с бухты-барахты? Как вообще реализуется в крупных проектах PK? INT или делают и UUID? Смысл сравнивать с Int? Разумеется, ключ с последовательным рядом гораздо предпочтительнее. Для Guid в MS SQL сделали функцию NewSequentialId , которая возвращает уникальные возрастающие значения. Для MySql мне такой функции неизвестно. С другой стороны, и я писал об этом ранее, недостатки GUID в данном контексте исправляются периодической переиндексацией. Как в остальных крупных проектах мне неизвестно, но у меня GUID на всех таблицах (сущностях), которые могут участвовать в интеграции (включая репликацию), а это пользователи, заказы; а int - на незначащих таблицах. Например, разосланные e-mail, или записи в журнале событий, или классификаторы (словари), если нет натурального ключа, или идентификаторы объявлений... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 14:51:19 |
|
||
|
Как организовать связь между звездой: Центральная база - Много второстепенных баз
|
|||
|---|---|---|---|
|
#18+
m1andryjavajdbcЕсли нужны какие-то тонко-настроеные права доступа, то имеет смысл создать отдельную колонку created_by или,например source_db_id. Вычислять на лету источник из ГУИД , я думаю, будет небыстро (по сравнению с отдельной проиндексированой колонкой) Подскажете, какое Ваше мнение насчет UUID() в качестве PK? Все-таки CHAR(30), насколько удачно применять строчный первичный ключ? Не будет заметной потери в производительности, если есть куча JOIN ON ID=parentID? И также куча таблиц-связок одна-ко-многим (ID1, ID2), опять же, занимаемое место, или можно пренебречь? Волею судьбы у меня был только единичный случай работы ГУИД, посему сравнивать не могу. Мой пост был скорее про логику -- по вашим словам надо как то различать записи пришедших в центр из разных баз. Это дополнительная задача к очевидной задачи уникальности ИД в интегрированом контексте. Вариантов примерно 3: 1. ид -- ГУИД или ГУИД+сервер_ид, исходную базу расшифровывать из ГУИД 2. ид -- составнойй ключ = локальный автоинкремент и сервер_ид 3. ид -- ГУИД и отдельное поле сервер_ид Вариант 1 мне кажется неуклюжим -- необходимо расшифровывать на лету, плохая производительность Вариант 2. составной ключ не очень удобен для многих фрейворков. Вариант 3 обеспечивает оба функционала -- возможно слегка избыточная информация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2014, 19:20:33 |
|
||
|
|

start [/forum/topic.php?fid=47&startmsg=38678095&tid=1834612]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 410ms |

| 0 / 0 |
