AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.02.2010, 17:08   #1  
art06 is offline
art06
Участник
Аватар для art06
 
192 / 10 (1) +
Регистрация: 11.08.2006
Добрый день.

Суть задачи - уменьшить размер базы за счет переноса данных из 4 таблиц (32,339,5802,17) из рабочей базы в "Архивную", и изменить нумерацию в поле Entry No.

Есть база данных на Торговой Точке. Таблице32 (339,5802,17) начинает нумерацию операций (поле Entry No.) с 50 000 000. Рассчитано что на этот магазин достаточно 9 999 999 записей (по крайней мере на ближайшие несколько лет). Есть база Центарльного Офиса куда попадают все операции с Торговой точки.
Предполагаем что мы подошли к операции под номером 59 999 999. Больше нет возможности использовать номера (60 000 000 и т.д. так как этот диапазон предназначен для другой Торговой Точки). По задаче мне необходимо:

1. весь прошлый год (2006,2007,2008 на ТТ и в ЦО одновременно ) перебросить в "архивные базы" (это примерно 7 млн. записей)
2. произвести перенумерацию оставшихся записей (те записи которые шли под номером 57 000 001 перенумеровать в 50 000 000)

Возможно у кого - то были подобные задачи ? Возможно есть какие - то наработки ?
Старый 10.02.2010, 17:32   #2  
Romul is offline
Romul
Участник
 
186 / 11 (1) +
Регистрация: 26.12.2007
Цитата:
Сообщение от art Посмотреть сообщение
Суть задачи - уменьшить размер базы за счет переноса данных из 4 таблиц (32,339,5802,17) из рабочей базы в "Архивную", и изменить нумерацию в поле Entry No.
Выглядит жутковато. Вам ведь не только эти книги переносить надо, по-хорошему, но и сопутствующие сущности: измерения по операциям, документы (если все правильно делать), еще ряд книг...
По крайней мере, мне это видится так. Возможно, что-то не понял...
Старый 10.02.2010, 20:49   #3  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от art Посмотреть сообщение
Суть задачи - уменьшить размер базы за счет переноса данных из 4 таблиц (32,339,5802,17) из рабочей базы в "Архивную", и изменить нумерацию в поле Entry No.
Поссмотри как в 3.60 - 3.70 сделана компрессия. Они вроде почти не сбоила при сжатии (по ЛОТ и серийникам немного повозились.). По аналогии можно сделать 5802, 17, 12401, измерения. Правда стандартно будет долго работать.
Цитата:
Есть база данных на Торговой Точке. Таблице32 (339,5802,17) начинает нумерацию операций (поле Entry No.) с 50 000 000. Рассчитано что на этот магазин достаточно 9 999 999 записей (по крайней мере на ближайшие несколько лет). Есть база Центарльного Офиса куда попадают все операции с Торговой точки.
Предполагаем что мы подошли к операции под номером 59 999 999. Больше нет возможности использовать номера (60 000 000 и т.д. так как этот диапазон предназначен для другой Торговой Точки). По задаче мне необходимо:

1. весь прошлый год (2006,2007,2008 на ТТ и в ЦО одновременно ) перебросить в "архивные базы" (это примерно 7 млн. записей)
2. произвести перенумерацию оставшихся записей (те записи которые шли под номером 57 000 001 перенумеровать в 50 000 000)
Готового у меня нет, но идея простая. Остановить перенос (и элементы генерации данных для переноса), создать дополнительные таблицы, где кроме Entry No. например добавить "итерация Но." и сделать перенос (а может и сначала компрессию), а остальное перенумеровать.
Уточнение - через НАВ будет долго и нужно смотреть все связи по 32, например связка с 339.

P.S. Для себя бы я сделал как сделана компрессия 3.60 - 3.70 (ЗА 4-ку не помню), но в дополнительную таблицу.
Старый 11.02.2010, 09:09   #4  
jopagames2 is offline
jopagames2
Участник
 
151 / 11 (1) +
Регистрация: 11.02.2010
Цитата:
Сообщение от art Посмотреть сообщение
Добрый день.

Суть задачи - уменьшить размер базы за счет переноса данных из 4 таблиц (32,339,5802,17) из рабочей базы в "Архивную", и изменить нумерацию в поле Entry No.

Есть база данных на Торговой Точке.
...
так как этот диапазон предназначен для другой Торговой Точки
Добрый день.

У вас, я так понял, не одна Торговая Точка, а несколько.
Т.е. сначала надо всё аккуратно перенумеровать сначала по 7 млн.опер в каждой ТТ, а потом всё еще раз правильно перенумеровать в Центральном офисе 7+7+? = минимум 14 млн. операций?
И всё это надо же несколько раз запускать и перепроверять что там куда перенумеровалось

Проще завести новую базу - честно. (мы именно так себе делали "обрезание")
Только лучше переносить не по счётчику операций, а по дате. (с 01.01.2010, например)

Для начала повыкидывать всяких Дядей Васей, которые пять лет назад что-то покупали один раз со всеми их операциями\действиями\контактами и прочим мусором.

А перенести в новую базу ТОЛЬКО список клиентов\поставщиков с ненулевыми балансами -- раз.
(Ну, естественно, оставив в новой базе "активно покупающих" клиентов с нулевым балансом )
Все Фин.операции и Клиент.операции до 01.01.10 всё тупо "заархивировать" в одну операцию, а остальное переносить.
Ну, не совсем в одну, конечно Понятно, что кроме "Фин Счет Но." нужно смотреть на всякие там "Источник Но." и разбивать такие операции отдельно, если нужно.

Потом перенести товарную базу -- два.
Опять же повыкидывать товары, которые уже долгое время не привозились\продавались.

Ну, и остальное ФинКнига, ТоварКнига и пр. тут уж надо ручками дописать перенос - никуда не от этого не деться. Тоже до 01.01 всё пытаться "сливать в одну"

Зато! Зато уменьшение базы составит 70-80% (проверено)
У нас из 8 Гб (native) осталось меньше гига. Всё летает просто.

В "архив", естественно никто так никогда и не заглянул, хотя поначалу возмущались: "Как это можно старых клиентов удалять?"

А оказалось, что можно и нужно
Старый 11.02.2010, 13:08   #5  
art06 is offline
art06
Участник
Аватар для art06
 
192 / 10 (1) +
Регистрация: 11.08.2006
Спасибо за все ответы и советы.
Еще один маленький вопрос - а, если переделать во всех необходимых таблицах поле Entry No. с Integer на BigInteger ? (для того чтобы избежать окончания выделенного диапазона для Торговых точек)
Старый 11.02.2010, 13:23   #6  
Romul is offline
Romul
Участник
 
186 / 11 (1) +
Регистрация: 26.12.2007
Цитата:
Сообщение от art Посмотреть сообщение
Спасибо за все ответы и советы.
Еще один маленький вопрос - а, если переделать во всех необходимых таблицах поле Entry No. с Integer на BigInteger ? (для того чтобы избежать окончания выделенного диапазона для Торговых точек)
1. Ручной мердж объектов в случае появления новой функциональности на этих таблицах в очередном релизе...
2. Нерабочие флоуфилды, завязанные с данным Entry No. в измененных таблицах...
3. .....................

Дождитесь уж, пока МС это сам сделает версии эдак в 2022-й, 2078-й...
Старый 11.02.2010, 14:53   #7  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Зачем же bigint? Неужели все 4 294 967 296 операций между точками поделили?
Полагаю самое время начать раздавать отрицательные диапазоны.
Хотя на мой взгляд вариант от jopagames2 на перспективу самый правильный.
Старый 17.05.2016, 04:43   #8  
iva_idv is offline
iva_idv
Участник
 
6 / 10 (1) +
Регистрация: 08.10.2014
Цитата:
Сообщение от rmv Посмотреть сообщение
Зачем же bigint? Неужели все 4 294 967 296 операций между точками поделили?
Полагаю самое время начать раздавать отрицательные диапазоны.
Хотя на мой взгляд вариант от jopagames2 на перспективу самый правильный.
Подскажите, пробовал ли кто использовать в качестве номеров операций отрицательные значения? Есть ли в этом случае подводные камни?
Теги
архивирование

 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:17.