powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД. Сливание многих БД в одну.
22 сообщений из 22, страница 1 из 1
Проектирование БД. Сливание многих БД в одну.
    #37118428
Sokoloid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простой пример, есть головная организация, есть филиалы. Софт и там и там одинаковый, структура БД тоже. Есть задача организовать слив всех БД филиалов в БД головной конторы. Какое решение лучше применить?

1. Добавить еще один ключ абсолютно во все таблицы БД, который будет "ID филиала"
2. Создавать отдельную БД на каждую контору, в софте сделать возможность выбора с какой БД работать
3. Одна БД, но разный префикс таблиц, например так же по ID филила

Какие еще решения возможны? Какое предпочтительней?
Кол-во филиалов может быть до 100 и более. Таблиц в одной БД ~100
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37118549
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sokoloid Какие еще решения возможны?Решений вагон и маленькая тележка
Sokoloid Какое предпочтительней?Зависит от ваших критериев предпочтительности
Sokoloid Какое решение лучше применить?Лобовой совет от балды - держите бакапы баз в центре, собирайте логи от баз с филиалов и применяйте их на кучу бакапов, а затем делайте с ними что хотите.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37118637
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SokoloidКакое предпочтительней?
Следующая задача после "слива" будет - считать всякого рода отчёты по общим данным, потом править некоторые данные в центре и рассылать изменения в филиалы. Поэтому предпочтительнее решения, подразумевающие нахождение в одной таблице данных всех филиалов. Это облегчит также все операции апгрейда структуры и всю сложную бизнес-логику, которая наверняка появится - не завтра так послезавтра. Исключением из этого может быть случай использования СУБД, плохо работающей с суммарным объёмом данных в одной таблице.

Тянуть всюду ID филиала - дурная и тупая работа. После того как Вы всюду его сунете и поправите все запросы на его использование, заказчик захочет возможность сослаться из "московской" строчки на "ростовскую" - например, принять в Москве платёжку от заказчика, филиал которого купил что-то в вашем ростовском отделении. Вы посмотрите на структуру и обнаружите, что если таблица ссылается на 5 других, в ней нужно иметь 6 разных полей "ID филиала", сунув каждое в свой внешний ключ и ещё раз очень-очень аккуратно переписав запросы... Поэтому с моей точки зрения однозначно, метод генерации ID записей должен обеспечивать уникальность в пределах организации. Я предпочитаю вариант create sequence ID start with <номер филиала> increment by 1000.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37118919
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sokoloid,

Для начала посмотреть в возможности софта. В том же 1С это делается на уровне софта а не БД.
А вообще если хотите получить ответ - научитесь задавать вопрос. Это к тому что неуказан ни софт, ни БД, ни размер таблиц БД и самой БД, ...
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37119140
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SokoloidКакие еще решения возможны?
Слить все в одну базу, обеспечив уникалность ИД, и правильно раздать права доступа.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37119666
Sokoloid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Софт вебовый, база MySQL.
Ну допустим обеспечиваю я уникальность ID в любой таблице, НО мне нужно четко знать чьи данные я смотрю. Т.е. например переключаю контекст на филиал №1 и у меня отображаются данные только по нему, переключаю на №2 и смотрю только по нему. Такой вариант мне слабо видится только при уникальном ID или сводится опять к тому же - править все запросы.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37119713
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sokoloid,

Как вариант преобразовать ID:
10002345 в B0102345, а в фильтре по филиалу смотреть where left(id,3)='B01'
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37119721
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sokoloid,

Весь вопрос - потенет ли мускул такой объем с необходимым вам качеством...
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37119732
Sokoloid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой БобрSokoloid,

Как вариант преобразовать ID:
10002345 в B0102345, а в фильтре по филиалу смотреть where left(id,3)='B01'
Чем тогда это отличается от варианта 1 который я описал в начале, т.е. обязательность уникальности ID не требуется, а добавляется еще одно поле ID-филиала (ваше B01) и делается составной первичный ключ ID + ID-филиала?
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37119739
Sokoloid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой БобрSokoloid,

Весь вопрос - потенет ли мускул такой объем с необходимым вам качеством...
Это как раз не пугает, т.к. partitioning еще никто не отменил, работал с хорошей скорость на >2млд записях.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37119997
Фотография Chop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут еще вопрос по данным...
есть данные - общие для всех филиалов
например Контрагенты, Города, ПланСчетов итд
тупо слить их в одну кучу просто добавив ид или префикс не получится,
вернее получится, но получится свалка данных
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37121114
Sokoloid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Chopтут еще вопрос по данным...
есть данные - общие для всех филиалов
например Контрагенты, Города, ПланСчетов итд
тупо слить их в одну кучу просто добавив ид или префикс не получится,
вернее получится, но получится свалка данных
Да, как раз и получится свалка данных, возможно даже дублирующихся, но в контексте конкретного филиала это будут уникальные данные.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37121415
Фотография Chop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SokoloidДа, как раз и получится свалка данных, возможно даже дублирующихся, но в контексте конкретного филиала это будут уникальные данные.а смысл тогда сливать в одну БД?
поставь их рядом
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37121809
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SokoloidЧем тогда это отличается от варианта 1 который я описал в начале, т.е. обязательность уникальности ID не требуется, а добавляется еще одно поле ID-филиала (ваше B01) и делается составной первичный ключ ID + ID-филиала?
Тем что ненужно менять структуру базы. Единственное проследить за правильностью формирования новых id на филиалах. Но с другой стороны на большом объеме фильтр по отдельному полю будет работать гораздо быстрее. Поэтому тут нужно выбрать между скоростью и изменением структуры базы. Если нужно сделать быстро, то мой вариант, если есть время - переделывать структуру.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37121818
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще вариант для конкретного филиала определить границы id, тогда это тоже непотребует изменения структуры и будет работать быстро про фильтровании.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37121825
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос дублей решается таблицей соответствия в общей базе. Можно частично автоматизировать по ОКПО, ИНН, Наименованию, ... В общем это решаемый вопрос.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37121874
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрНо с другой стороны на большом объеме фильтр по отдельному полю будет работать гораздо быстрее.
Сомневаюсь, что в реальных случаях будет хоть какая-то разница. В запросах наподобие select /*+ first_rows(100) */ * from request where server_id = :server_id and status = 'open' order by request_date фильтрация по серверу будет последней операцией.

Злой БобрЕсть еще вариант для конкретного филиала определить границы id, тогда это тоже непотребует изменения структуры и будет работать быстро про фильтровании.
Ага, работал я в конторе с таким вариантом. К моменту моего прихода они уже накатали код, который циклил id и искал дырки в нумерации. В результате среди прочего принципиально не работали операторы insert select. Ну а потом таки появилась табличка, в которой надо было держать куда больше данных, чем отвели id-шников, и наступил локальный коллайдер.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37121897
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

Можешь несомневаться. При большой выборке отбор по индексированному отдельному полю работает быстрее. Проверялось на MSSQL.

Это проблема людей которые ступили. При грамотном подходе такого непроисходит даже в теории.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37121934
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрМожешь несомневаться. При большой выборке отбор по индексированному отдельному полю работает быстрее. Проверялось на MSSQL.
Ты что с чем сравнивал, уважаемый проверяющий? :)

Злой БобрЭто проблема людей которые ступили. При грамотном подходе такого непроисходит даже в теории.
Ага, ага. Можно вкратце грамотную теорию?
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37122089
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerТы что с чем сравнивал, уважаемый проверяющий? :)
Поскольку уважаемый Бобр занят важными делами, позволю себе краткую иллюстрацию. Сделано на Oracle, но принципы одинаковы для любой СУБД.

Создадим условия для проверки. Таблица с данными по разным "филиалам", один большой - Москва, остальные маленькие.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
SQL> create table data (
   2     id integer not null,
   3     server_id integer not null,
   4     data_date date not null,
   5     data_value varchar2( 10 ));

Table created

Executed in  0 , 016  seconds

SQL> insert into data
   2     select rownum, case when mod (rownum,  100 ) <  50  then  0  else mod (rownum,  100 ) end,
   3     sysdate + rownum/ 1440 , 'aaaaaaaa'
   4     from dual
   5     connect by level <=  1000000 ;

 1000000  rows inserted

Executed in  4 , 984  seconds

SQL> alter table data add primary key (id);

Table altered

Executed in  1 , 531  seconds

SQL> create index i_data_server on data (server_id);

Index created

Executed in  0 , 844  seconds

SQL> create index i_data_date on data (data_date);

Index created

Executed in  3 , 125  seconds

SQL> exec dbms_stats.gather_schema_stats (ownname => user);

PL/SQL procedure successfully completed

Executed in  6 , 515  seconds

Посмотрим, как будет выполняться обычный запрос какой-нибудь списочной формы, "документы по этому серверу в порядке по дате". Чтобы максимизировать шансы server_id, без других фильтров.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SQL> explain plan for
   2     select /*+ first_rows(100) */ *
   3     from data
   4     where server_id =  0 
   5     order by data_date;

Explained

Executed in  0 , 016  seconds

SQL> select * from table (dbms_xplan.display());

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------
Plan hash value:  1426867570 
-------------------------------------------------------------------------------------------
| Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT            |             |    101  |   2424  |     37    ( 0 )|  00 : 00 : 01  |
|*   1  |  TABLE ACCESS BY INDEX ROWID| DATA        |  19638  |   460K|     37    ( 0 )|  00 : 00 : 01  |
|    2  |   INDEX FULL SCAN           | I_DATA_DATE |   5151  |       |     16    ( 0 )|  00 : 00 : 01  |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    1  - filter("SERVER_ID"= 0 )

 14  rows selected

Executed in  0 , 015  seconds

Вот незадача - сервер почему-то не хочет использовать "отдельное поле server_id", ему пофиг, что по нему быстро фильтруется. Почему же это? Заставим его таки использовать индекс:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
SQL> explain plan for
   2     select /*+ first_rows(100) index(data i_data_server)*/ *
   3     from data
   4     where server_id =  0 
   5     order by data_date;

Explained

Executed in  0  seconds

SQL> select * from table (dbms_xplan.display());

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------
Plan hash value:  3277673813 
------------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name          | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT             |               |  19638  |   460K|       |   4255    ( 1 )|  00 : 00 : 52  |
|    1  |  SORT ORDER BY               |               |  19638  |   460K|  1400K|   4255    ( 1 )|  00 : 00 : 52  |
|    2  |   TABLE ACCESS BY INDEX ROWID| DATA          |  19638  |   460K|       |   4112    ( 1 )|  00 : 00 : 50  |
|*   3  |    INDEX RANGE SCAN          | I_DATA_SERVER |  19638  |       |       |     40    ( 3 )|  00 : 00 : 01  |
------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    3  - access("SERVER_ID"= 0 )

 15  rows selected

Executed in  0 , 016  seconds

Ну вот и ответ, почему. Потому что с точки зрения сервера так будет в 50 раз дольше. Проверим ещё для немосковского филиала:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SQL> explain plan for
   2     select /*+ first_rows(100) */ *
   3     from data
   4     where server_id =  55 
   5     order by data_date;

Explained

Executed in  0  seconds

SQL> select * from table (dbms_xplan.display());

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------
Plan hash value:  1426867570 
-------------------------------------------------------------------------------------------
| Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT            |             |    101  |   2424  |     37    ( 0 )|  00 : 00 : 01  |
|*   1  |  TABLE ACCESS BY INDEX ROWID| DATA        |  19638  |   460K|     37    ( 0 )|  00 : 00 : 01  |
|    2  |   INDEX FULL SCAN           | I_DATA_DATE |   5151  |       |     16    ( 0 )|  00 : 00 : 01  |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    1  - filter("SERVER_ID"= 55 )

 14  rows selected

Executed in  0 , 016  seconds

Ну да, конечно, никакой разницы. Ладно, предположим, что мы криво собрали статистику, и сервер не любит server_id из-за этого. Попробуем учесть перекос в данных:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> exec dbms_stats.gather_table_stats (ownname => user, tabname => 'DATA', 
  2    method_opt => 'for all columns size auto');

PL/SQL procedure successfully completed

Executed in  3 , 891  seconds

SQL> select column_name, num_buckets from user_tab_columns where table_name = 'DATA';

COLUMN_NAME                    NUM_BUCKETS
------------------------------ -----------
ID                                        1 
SERVER_ID                                51 
DATA_DATE                                 1 
DATA_VALUE                                1 

Executed in  0 , 015  seconds

Отлично, есть гистограммы по server_id, вот теперь-то он точно будет использоваться!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
SQL> explain plan for
   2     select /*+ first_rows(100) */ *
   3     from data
   4     where server_id =  0 
   5     order by data_date;

Explained

Executed in  0  seconds

SQL> select * from table (dbms_xplan.display());

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------
Plan hash value:  1426867570 
-------------------------------------------------------------------------------------------
| Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT            |             |    100  |   2400  |      4    ( 0 )|  00 : 00 : 01  |
|*   1  |  TABLE ACCESS BY INDEX ROWID| DATA        |   497K|    11M|      4    ( 0 )|  00 : 00 : 01  |
|    2  |   INDEX FULL SCAN           | I_DATA_DATE |    201  |       |      3    ( 0 )|  00 : 00 : 01  |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    1  - filter("SERVER_ID"= 0 )

 14  rows selected

Executed in  0 , 015  seconds

SQL> explain plan for
   2     select /*+ first_rows(100) index(data i_data_server)*/ *
   3     from data
   4     where server_id =  0 
   5     order by data_date;

Explained

Executed in  0  seconds

SQL> select * from table (dbms_xplan.display());

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------
Plan hash value:  3277673813 
------------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name          | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT             |               |   497K|    11M|       |   107K  ( 1 )|  00 : 21 : 36  |
|    1  |  SORT ORDER BY               |               |   497K|    11M|    34M|   107K  ( 1 )|  00 : 21 : 36  |
|    2  |   TABLE ACCESS BY INDEX ROWID| DATA          |   497K|    11M|       |   104K  ( 1 )|  00 : 20 : 54  |
|*   3  |    INDEX RANGE SCAN          | I_DATA_SERVER |   497K|       |       |    958    ( 2 )|  00 : 00 : 12  |
------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    3  - access("SERVER_ID"= 0 )

 15  rows selected

Executed in  0 , 016  seconds

SQL> explain plan for
   2     select /*+ first_rows(100) */ *
   3     from data
   4     where server_id =  55 
   5     order by data_date;

Explained

Executed in  0 , 015  seconds

SQL> select * from table (dbms_xplan.display());

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------
Plan hash value:  1426867570 
-------------------------------------------------------------------------------------------
| Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT            |             |    100  |   2400  |     72    ( 2 )|  00 : 00 : 01  |
|*   1  |  TABLE ACCESS BY INDEX ROWID| DATA        |   9813  |   229K|     72    ( 2 )|  00 : 00 : 01  |
|    2  |   INDEX FULL SCAN           | I_DATA_DATE |  10175  |       |     29    ( 0 )|  00 : 00 : 01  |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    1  - filter("SERVER_ID"= 55 )

 14  rows selected

Executed in  0 , 016  seconds

SQL> explain plan for
   2     select /*+ first_rows(100) index(data i_data_server)*/ *
   3     from data
   4     where server_id =  55 
   5     order by data_date;

Explained

Executed in  0  seconds

SQL> select * from table (dbms_xplan.display());

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------
Plan hash value:  3277673813 
------------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name          | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT             |               |   9813  |   229K|       |   2136    ( 1 )|  00 : 00 : 26  |
|    1  |  SORT ORDER BY               |               |   9813  |   229K|   712K|   2136    ( 1 )|  00 : 00 : 26  |
|    2  |   TABLE ACCESS BY INDEX ROWID| DATA          |   9813  |   229K|       |   2063    ( 1 )|  00 : 00 : 25  |
|*   3  |    INDEX RANGE SCAN          | I_DATA_SERVER |   9813  |       |       |     21    ( 0 )|  00 : 00 : 01  |
------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
    3  - access("SERVER_ID"= 55 )

 15  rows selected

Executed in  0 , 015  seconds 
Странно.... стало ещё хуже. Сервер по-прежнему использует совсем другой индекс, да ещё и пугает совсем дикими цифрами.

Дальнейшие пояснения требуются?
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37122499
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SokoloidСофт вебовый, база MySQL.
Ну допустим обеспечиваю я уникальность ID в любой таблице, НО мне нужно четко знать чьи данные я смотрю. Т.е. например переключаю контекст на филиал №1 и у меня отображаются данные только по нему, переключаю на №2 и смотрю только по нему.
Раздать права доступа. Подключился от филиал №1 и видишь только свое и общее.
...
Рейтинг: 0 / 0
Проектирование БД. Сливание многих БД в одну.
    #37125407
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer, тут теоретики ещё варианты могут предложить:
1. создать индекс по двум полям (сервер, дата)
2. использовать другой сервер СУБД, который эффективнее умеет индексы по разным полям между собой "скрещивать", прежде чем в данные лезть :) ...

Но я не теоретик, поэтому не согласен с "Сделано на Oracle, но принципы одинаковы для любой СУБД"...

ТС, может для MySQL и правильный напрашивающийся вывод "будет ещё хуже чем, на Оракл" - но стоит проверять такие предположения... Тем более softwarer любезно выложил почти готовые скрипты для проверки предположения на MySQL...
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД. Сливание многих БД в одну.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]