09.05.2004, 21:03 | #1 |
Участник
|
А "потянет" ли Axapta такой объем данных ?
Хочется узнать принципиальную возможность работы Axapta со следующими объемами данных. Контора занимается ночной развозкой продуктов питания с оптового склада в розничные точки. Основной объем обрабатываемой информации составляют заказы на развозку. Статистика примерно следующая:
- отгрузка 364 дня в году (1 янв. выходной :-) ) - в день 1200 заказов - один заказ в среднем содержит 30 позиций товара + 5 позиций тары - для учета отгрузки по каждой товарной позиции делаем 3 проводки (себестоимость, реализация, НДС) - для учета каждой тарной позиции делаем 2 проводки (вешаем тару на клиента и амортизация тары) итого 356*1200*(30*3+5*2)=43 млн проводок в год с учетом приходных накладных и всего остального дойдет до 50 млн. в год алгоритм списания со склада - FIFO по партиям (партия - сертификат качества со сроком годности товара) количество юзеров 30-35 ситуация осложняется тем, что работа круглосуточная и остановка базы даже на полчаса (например, для "закрытия" склада ) невозможна Были ли внедрения Axapta с такими объемами ? Можно ли прикинуть размер базы данных через год работы ? Буду благодарен за любую информацию. |
|
09.05.2004, 21:50 | #2 |
Учаснег
|
Цитата:
Были ли внедрения Axapta с такими объемами ?
Можно ли прикинуть размер базы данных через год работы ? Внедрения с такими, и даже бОльшими объемами - точно были. За подробными справками и координатами советую обращаться в офис МБС Насчет объема. Рискну сделать смелое предположение. 15 Гб за год. Чисто эмпирически, доказать затруднюсь... Внутренний голос мне подсказывает, что вам надо сразу думать про Оракл. Майкрософт такие, и даже бОльшие объемы потянет - но через пару-тройку лет все равно переходить, так что... Цитата:
ситуация осложняется тем, что работа круглосуточная и остановка базы даже на полчаса (например, для "закрытия" склада ) невозможна
В первое время после старта, во всяком случае, останов возможен очень часто (это из опыта, причем не только и не столько по Аксапте)... Так что продумывайте, что все ж таки будете делать при таких остановах, временные процедуры регистрации заказов и пр... Цитата:
количество юзеров 30-35
Рискну сделать предложение: может вам, ребята, как-то внутренне поделить предприятие и соответственно систему: по региональному (одни обслуживают только сибирь, другие только москву и область, третьи поволжье и пр..) или еще какому-нибудь признаку? В том смысле что сделать не одну, а пять-семь систем. Естественно, с увязкой данных, но не в он-лайне а скажем в конце дня. Плюс центральная, консолидирующая система. А то вы ж замаетесь потом с таким монстром... Вы представьте, сколько будет занимать одна операция вынимания базы из бэкапа - пару-тройку часов.. Цитата:
для учета отгрузки по каждой товарной позиции делаем 3 проводки (себестоимость, реализация, НДС)
- для учета каждой тарной позиции делаем 2 проводки (вешаем тару на клиента и амортизация тары)
__________________
Strictly IMHO & nothing personal |
|
09.05.2004, 21:58 | #3 |
Участник
|
Re: А "потянет" ли Axapta такой объем данных ?
Цитата:
Изначально опубликовано KonSA
Хочется узнать принципиальную возможность работы Axapta со следующими объемами данных. Принципиально да. Дьявол в деталях. См. ниже. Цитата:
Изначально опубликовано KonSA
итого 356*1200*(30*3+5*2)=43 млн проводок в год с учетом приходных накладных и всего остального дойдет до 50 млн. в год Тут, конечно надо прикидывать и делать макет, но в вашем случае можно взять оценочную среднуюю длину записи 400 байт. Получится 50 млн * 10-20 записей * 400 байт= 20..40 Гиг. Естественно, это ОЧЕНЬ ГРУБАЯ оценка. Почему? В Аксапте многие таблицы носят характер черновиков или логов. Например, очень тяжелая в заказах таблица SalesParmLine - это лог всех попыток проведения для каждой строки каждого документа по заказу. Таблица растет очень быстро, но она вряд ли нужна в полном объеме. Ее нужно чистить. Еще пример, заказы - это план. После исполнения (документы) план можно и нужно удалять. Поэтому все заказы со строками тоже можно (и нужно удалять). А тяжелая таблица Строки заказа (Sales Line) имеет среднюю длину больше 500 байт. Поэтому, если базой не заниматься, то размер будет до 50 гигов. Если базой таки заняться по-правильному, то будет около 10 гигов. Но в обоих случаях будет работать нормально. Не в этом проблема. А в этом: Цитата:
Изначально опубликовано KonSA
ситуация осложняется тем, что работа круглосуточная и остановка базы даже на полчаса (например, для "закрытия" склада ) невозможна Да, во время закрытия можно организовать ввод заказов в режиме журнала, но... Именно момент с регламентными процедурами в Аксапте, скорее всего, будет вашим узким местом. |
|
09.05.2004, 21:59 | #4 |
Участник
|
В целом согласен с AKIS'ом.
|
|
09.05.2004, 22:35 | #5 |
Участник
|
Спасибо mazzy и AKIS за ответ, честно говоря, не ожидал в праздник после 21 часа. Есть еще непьющие люди в России :-)
Насчет "непоняток" с количеством юзеров проясню. 30-35 - это без операционисток, которые принимают заказы, там специальная программа для call-центра. С остановками на 30 мин. а неясно выразился. Имелись ввиду не аварийные (незапланированные) остановки, тут контора может пережить остановку на 2-3 часа раз в 2-3 месяца. Я имел ввиду плановые ежедневные, ежемесячные остановки. Отсюда вопрос, нужны ли будут плановые остановки и с какой периодичностью? Можно ли прикинуть, сколько времени будет составляться отчет по реализации за месяц, если для его составления нужно будет перебрать 7-8 млн. проводок ? |
|
09.05.2004, 23:49 | #6 |
Аксакал в отставке
|
Скажите, если Вы не закрываете склады, хотя бы поочередно, то как у вас осуществляется инвентаризация??? :о
На мой взгляд тут надо брать систему, которая рассчитывает FIFO сразу, а не в конце периода.
__________________
Девочка, никогда не произноси слова только за то, что они такие длинные и красивые; говори только то, что знаешь. (Л.Кэрролл "Алиса в стране чудес"). |
|
10.05.2004, 00:09 | #7 |
Модератор
|
Цитата:
Изначально опубликовано AKIS
Внутренний голос мне подсказывает, что вам надо сразу думать про Оракл. Майкрософт такие, и даже бОльшие объемы потянет - но через пару-тройку лет все равно переходить, так что... Цитата:
Изначально опубликовано AKIS
Остановки баз будут, без этого просто никак нельзя. Так что сразу закладывайте кластер с двумя параллельно работающими и взаимно реплицирующимися базами: отвалилась одна, подключилась другая... |
|
10.05.2004, 00:15 | #8 |
Участник
|
Цитата:
Изначально опубликовано Тимур
Скажите, если Вы не закрываете склады, хотя бы поочередно, то как у вас осуществляется инвентаризация??? :о На мой взгляд тут надо брать систему, которая рассчитывает FIFO сразу, а не в конце периода. Какую систему ("рассчитывает FIFO сразу") Вы могли бы порекомендовать? Axapta умеет закрывать склад каждый день ? |
|
10.05.2004, 00:33 | #9 |
Аксакал в отставке
|
Хотите сказать, что закупочные партии продаются целиком, без расщепления на партии продажи?
Ведь путаница бывает: продали один товар, а отгрузили иной. Банальная пересортица. Если же только транспортируете один в один, то это не FIFO, а скорее партионная цена в учете, а FEFO (first expired - first out) складское. Если это к вам не относится, то сорри. Хм. Трудно ответить на вопрос про системы. Если у Вас задача управления запасами, да плюс партионные цены, то, например, BAAN, Oracle, да и Axapta подойдут. Закрывать склад можно теоретически после каждой транзакции - вопрос в производительности. Я бы посоветовал Вам передать реальные данные вашей компании для расчета на Axapta.
__________________
Девочка, никогда не произноси слова только за то, что они такие длинные и красивые; говори только то, что знаешь. (Л.Кэрролл "Алиса в стране чудес"). |
|
10.05.2004, 01:28 | #10 |
Учаснег
|
Извините, конечно, за назойливость, но я все-таки не понял вот это:
Цитата:
30-35 - это без операционисток, которые принимают заказы, там специальная программа для call-центра.
- Склад? - Финансы/Бухгалтерию? - Закупщиков? - Плановиков отдела продаж (которые расчитывают потребности)? Потом, насчет этой самой "специальной программы". А как вы думаете передавать из нее данные в Аксапту? Программно? А резервировать товар тогда как (оперативные складские остатки-то, как я понимаю, все равно в Аксапте будут, и нигде более). Насчет закрытий склада - полностью согласен с предыдущими ораторами. Для справки: мы закрываем склад за предыдущий месяц в первых числах следующего. База сейчас 14 Гб (это "чистый вес", без транзакшн логов). Примерно 80% складских транзакций идут с учетом партии-места хранения - это, считай, их удесятеряет, т.е. вместо отпуска 100 штук отпускается 10 раз по 10, в разных партиях. На закрытие уходит порядка 7 часов, и с каждым месяцем это время чуть-чуть но подрастает. Во время закрытия теоретически работать можно, практически - система становится ооочень медленной. Правда и сервера у нас не ахти... Каждый день - закрывать можно (вернее, пересчитывать себестоимость, это то же самое закрытие только без физической блокировки старых данных) - но возможны разные "веселые" цифры коррекции себестоимости, в 3-й версии алгоритм пересчета... хм... не полностью отлажен еще, с ним надо осторожно...
__________________
Strictly IMHO & nothing personal |
|
10.05.2004, 04:00 | #11 |
Учаснег
|
Re: Re: А "потянет" ли Axapta такой объем данных ?
Цитата:
Изначально опубликовано mazzy
Например, очень тяжелая в заказах таблица SalesParmLine - это лог всех попыток проведения для каждой строки каждого документа по заказу. . Я лично был бы ОЧЕНЬ благодарен
__________________
Strictly IMHO & nothing personal |
|
10.05.2004, 14:53 | #12 |
Участник
|
Вопрос распадается на два. 1. Какие таблицы являются тяжелыми 2. Какие таблицы можно удалять безболезненно 1. Тяжелые таблицы можно посмотреть в MS SQL командой DBCC SHOwCONTIG WITH TableResults, а в Orcale, например, в утилите TOAD. 2. Безболезнено можно удалять таблицы, у которых свойство TableContent установлено в WorksheetLine и WorksheetHeader. См. руководство разработчика. Ключевое слово "Table groups: What they are". К сожалению, таким простым способом можно определить не все таблицы (У SalesParmLine, например, это свойство равно Transaction). Насчет почему не наснесет урон SalesParmLine - в Аксапте 3.0 процедуру очистки наконец включили в главное меню (Главное меню \ Расчеты с клиентами \ Периодические операции \ Очистка \ Очистка истории обработки заказов). Детальное обоснование требует отдельной статьи. Полный список таблиц, которые в стандартной версии можно безболезненно удалять, постараемся сделать позже в рамках создания советов. |
|
10.05.2004, 15:22 | #13 |
Учаснег
|
Сергей, большое спасибо!
Тяжелые таблицы я вроде и сам нашел: Tools-> Development Tools -> Number of records. У меня среди рекордсменов оказались NumberSeqenceList, NumberSequenceTTS - и конечно InventSettlement... Это те, у которых количество записей зашкаливает далеко за миллион... Некоторые я сообразил, как чистить (в смысле - в каком случае...), но по некоторым сомневаюсь.... Так что за "полный список" буду благодарен вдвойне!
__________________
Strictly IMHO & nothing personal |
|
10.05.2004, 15:44 | #14 |
Участник
|
NumberSeqence?
У вас много непрерывных нумераторов? В форме Number Seqence есть кнопочка Clean Up. Поставьте это задание в периодический пакет. Выполняйте периодически. По поводу тяжелости. тяжелыми могут быть не только таблицы с большым количеством записей. Тяжелыми могут быть таблицы с большой средней длиной записи и с громадными индексами. Тяжелая таблица - это такая таблица, по которой генерируется много операций чтения/записи на сервере. Тут надо смотреть скорее не колическо записей, а на размер занимаемый таблицей и индексами на диске |
|
10.05.2004, 16:44 | #15 |
Учаснег
|
Да, непрерывных числовых последовательностей у нас много Так сделали еще до меня, при первоначальной настройке... Я сейчас потихоньку от них избавляюсь, т.к. вижу что трешка их "не любит" (в частности, уже не первый раз наблюдаю как она пытается брать "свободные" номера, которые на самом деле несвободные...).
А как Цитата:
Изначально опубликовано mazzy
смотреть а на размер занимаемый таблицей и индексами на диске
__________________
Strictly IMHO & nothing personal |
|
10.05.2004, 17:33 | #16 |
Участник
|
в свою очередь, не понял вопроса.
|
|
10.05.2004, 18:09 | #17 |
Учаснег
|
Я, может, туплю и задаю совсем детские вопросы, но...
База данных MS SQL представляет собой физически три файла: один собствено БД и два - логи. В Enterprise Manager-e узнать "размер занимаемый таблицей и индексами на диске" - где и как? Не знаю...
__________________
Strictly IMHO & nothing personal |
|
10.05.2004, 18:26 | #18 |
Участник
|
Я же писал
[sql]DBCC SHOwCONTIG WITH TableResults[/sql] стоит прочитать BOL по этой команде. Правда это в Query Analyzer. Если хочется именно в EM, то нужно переключиться в режим просмотра TaskPad и перейти на закладку Tables. Правда это менее удобно на мой взгляд, поскольку таблицу, полученную командой DBСС, можно перегнать в Excel и делать там что хочешь... Хм... похоже и по этому поводу можно совет писать... Стоит походиьт по сайтам администраторов СУБД типа www.sql.ru, www.databases.ru и почитать там про оптимизацию... |
|
10.05.2004, 22:30 | #19 |
Модератор
|
Цитата:
Изначально опубликовано AKIS
Я, может, туплю и задаю совсем детские вопросы, но... База данных MS SQL представляет собой физически три файла: один собствено БД и два - логи. В Enterprise Manager-e узнать "размер занимаемый таблицей и индексами на диске" - где и как? Не знаю... SELECT @pagesizeKB = low / 1024 FROM master.dbo.spt_values WHERE number = 1 AND type = 'E' SELECT table_name = OBJECT_NAME(o.id), rows = i1.rowcnt, reservedKB = (ISNULL(SUM(i1.reserved), 0) + ISNULL(SUM(i2.reserved), 0)) * @pagesizeKB, dataKB = (ISNULL(SUM(i1.dpages), 0) + ISNULL(SUM(i2.used), 0)) * @pagesizeKB, index_sizeKB = ((ISNULL(SUM(i1.used), 0) + ISNULL(SUM(i2.used), 0)) - (ISNULL(SUM(i1.dpages), 0) + ISNULL(SUM(i2.used), 0))) * @pagesizeKB, unusedKB = ((ISNULL(SUM(i1.reserved), 0) + ISNULL(SUM(i2.reserved), 0)) - (ISNULL(SUM(i1.used), 0) + ISNULL(SUM(i2.used), 0))) * @pagesizeKB FROM sysobjects o LEFT OUTER JOIN sysindexes i1 ON i1.id = o.id AND i1.indid < 2 LEFT OUTER JOIN sysindexes i2 ON i2.id = o.id AND i2.indid = 255 WHERE OBJECTPROPERTY(o.id, N'IsUserTable') = 1 OR (OBJECTPROPERTY(o.id, N'IsView') = 1 AND OBJECTPROPERTY(o.id, N'IsIndexed') = 1) GROUP BY o.id, i1.rowcnt ORDER BY 3 DESC сразу оговорюсь, авторство - не мое |
|
11.05.2004, 00:33 | #20 |
Учаснег
|
Спасибо, Сергей и Vadik!
У меня нынче проблема похуже.... Умирает мой сервер, совсем... http://www.sql.ru/forum/actualthread...id=1&tid=91942
__________________
Strictly IMHO & nothing personal |
|
Теги |
sql, производительность |
|
|