powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Что лучше при работе с большими таблицами
9 сообщений из 34, страница 2 из 2
Что лучше при работе с большими таблицами
    #32488587
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IB то тут каким боком?
...
Рейтинг: 0 / 0
Что лучше при работе с большими таблицами
    #32488695
Nurg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чего ты боялся, все же случилось :))
Зачем тебе десятки тысяч записей на клиенте ?
Ты их ВСЕ собрался распечатать ? На принтере ?
Сильно сомневаюсь...
А генератор отчетов какой используешь ?
И попутно... IBSQL не буферизует записи.
...
Рейтинг: 0 / 0
Что лучше при работе с большими таблицами
    #32488724
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Ежедневно в такие таблицы добавляется порядка 28 000 – 30 000 записей в каждую
...
>>температура это аналоговое значение, полученное с АЦП а практически у все АЦП есть такая фитча к плаванье последнего 1 - 2х разрядов, т.е. даже если температура в точке измерения будет постоянной, то измеренные значения будут колебаться (например 20 ; 20.1; 20.2; 19.8 и т.д.)

Ежедневно по 30000 означает, что 30000/24/60 = 20 записей в минуту, или по одному каждые 3 секунды (если процесс 24-часовой). Спросите у заказчика, так уж ли необходимо помнить каждое значение. Может быть имеет смысл _до_ введения в БД, усреднять скажем каждые 5 значений, и вводить только среднее от этих пять. Врядли температура так быстро будет меняться в рамках 15-20 секунд, чтобы это было важно для дальнейших анализов. Точнее, если реальное изменение температуры меньше или сравнимо с погрешностью измерения, то очень даже имеет смысл делать предварительное усреднение .
...
Рейтинг: 0 / 0
Что лучше при работе с большими таблицами
    #32488842
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для таких задач в IB существуют поля типа массив. Используются крайне редко. Но впервые в СУБД они были созданы в IB для фирмы Боинг и по заказу фирмы Боинг. Снятие телеметрии с сотен тысяч датчиков во время полёта. Затем анализ - где там слабое место у нового Боинга? Что там было до катастрофы, а что время неё???
Мне скоро предстоит такая задача по телеметрии. Тоже массивы юзать буду.
...
Рейтинг: 0 / 0
Что лучше при работе с большими таблицами
    #32488996
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2начинающий ?
Железо скорей всего будет не лучше чем Celeron 1200, 128 ОЗУ, HDD 40 ГБ
да еще эта машина будет загружена другими задачами, кроме сервера FB.
8-)
При таких объемах и задачах у клиента нет 500$ на отдельную машину? И при этом есть желание иметь 24*7*365 работающую систему? ИМХО - из говна пуля.
"Пилите, Шура, пилите. Они золотые." (с) Ильф и Петров

На счет удаления, думаю, его уместно будет делать раз в месяц, а после него делать b/r.
Насчет b согласен, а вот насчет r нет. Зачем ужимать базу при неизбежном последующем росте?
...
Рейтинг: 0 / 0
Что лучше при работе с большими таблицами
    #32491403
Ежедневно по 30000 означает, что 30000/24/60 = 20 записей в минуту, или по одному каждые 3 секунды (если процесс 24-часовой). Спросите у заказчика, так уж ли необходимо помнить каждое значение. Может быть имеет смысл _до_ введения в БД, усреднять скажем каждые 5 значений, и вводить только среднее от этих пять. Врядли температура так быстро будет меняться в рамках 15-20 секунд, чтобы это было важно для дальнейших анализов. Точнее, если реальное изменение температуры меньше или сравнимо с погрешностью измерения, то очень даже имеет смысл делать предварительное усреднение

Дело в том, что в параметр не один их много (1250) пишу я их раз в час
1250*24=30000.

Изначально я считал, что параметры инерционные (да и эксперименты ставил) и собирался писать их минимум раз в 4 часа, а еще лучше раз в 6 часов. А также вычислять производные (скорость изменения параметров ) раз в сутки, исключая тем самым суточные колебания температуры и записывать их в другую таблицу. А измерения и проверку выхода за допустимые пределы выполнять непрерывно. Это было бы разумно. Если с параметром что-то не то, то сработает предупредительная сигнализация, а если совсем плохо то аварийная. Используя выборки предыдущих измеренных значений и производных можно было бы делать выводы о динамике изменения параметра. Этот анализ как я задумывал должен был бы производится для параметров, у которых значение параметра или скорости изменения превысили предупредительный порог. Это бы облегчило бы жизнь операторам. И свело бы объем базы и количество выборок к минимуму.
Но заказчик сказал, что хочет, чтобы все это делалось раз в час не больше.
И хочет, что бы производные считались так же каждый час и ему побарабану то, что на эти производные будут влиять суточные колебания температуры ...
Вот теперь и приходится думать про то что бы хранить данные не в одной таблице, а разбивать их по месяцам ... А так же думать как уменьшить объемы выборок ... Можно конечно сказать, что мол select first 100000 .... а остальные записи отбросить но это не есть гуд.

В общем наверное все же остановлюсь на создании месячных таблиц, запросы вроде не сложные, а если еще не использовать Union а сделать все с помощью XP, т.е. в XP передается дата и время начала и конца диапазона, а ХР эта дата в цикле преобразуется в и мя соответствующей таблицы, потом делается проверка существования таблицы с таким именем, если таблица существует то из нее выбираем данные если нет, то получаем имя следующей таблицы … и так до тех пор пока не дойдем до конца заданного периода.
Еще при таком подходе не будет проблем с сборкой мусора при удалении данных за месяц.

To Zmeishe про массивы я тоже думал, ведь они хранятся как Blob отдельно от таблицы, что позволит уменьшить размер таблицы и следовательно увеличить скорость манипуляций с ней. Тем более, что FibPlus поддерживает работу с массивами. Но все же при работе с ними есть ограничения, да и я ведь только с BDE переезжаю для меня и без массивов все это не просто.

Для работы с большими выборками специально для FibPlus нашел нормальную примочку, которая позволяет изменять место расположение выбираемых данных в памяти или на диске в RunTime. Вероятно буду ее использовать, но не в первой версии прогрммы. Правда автор пишет что делал ее для для Delphi 3,4 и Fib 4.X , но я пробовал она и на Delphi 5 c Fib с 5.x вроде работает (с небольшими косяками). Вообщем если ее немного подправить и выкинуть из нее лишнюю функциональность то для выборки больших объемов данных будет самое то. Вот ссылки может кому пригодится http://stikriz.narod.ru/art/dataset1.htm , http://stikriz.narod.ru/art/dataset2.htm.

В общем всем спасибо. На этом тему закрываем.
...
Рейтинг: 0 / 0
Что лучше при работе с большими таблицами
    #32491477
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не торопись принимать решение.
авторпро массивы я тоже думал, ведь они хранятся как Blob отдельно от таблицы, что позволит уменьшить размер таблицы и следовательно увеличить скорость манипуляций с ней.
Это позволит увеличить скорость манипуляций, но только НЕ с ней.
По правилам хорошего тона с массивами постоянно не манипулируют. В момент вставки массива целиком (это одна строка в таблице) его анализируют и заранее оговорённые результаты (скорость, градиент, производные) сбрасывают в рабочую таблицу. Затем все манипуляции проводят над рабочей таблицей. И если что-то кардинально озадачит, тогда лезут в таблицу-хранилище и лопатят один конкретный массив, а не все массивы за период.
...
Рейтинг: 0 / 0
Что лучше при работе с большими таблицами
    #32491486
f_w_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем всем спасибо. На этом тему закрываем.
А зря! Только задачу обрисовал.
Есть несколько решений, которые можно использовать.
Ну во первых массивы. Если использовать двумерный, то будет одна запись в сутки. Одномерный - 1250.
Во-вторых, упаковка в BLOB. Т.е. считываешь значения с датчиков, упаковываешь в бинарный массив и запихиваешь в BLOB. 24 записи в сутки.
В третьих, VARCHAR(32000). То же, что и с BLOB. Имеются свои плюсы и минусы. Проще, быстрее. Придется бороться с #0. 24 записи в сутки.
Возможны комбинации массивов и VARCHAR.
Но бороться с объемом все равно придется. Как ни пакуй данные, а гигабайты быстренько набегут.
...
Рейтинг: 0 / 0
Что лучше при работе с большими таблицами
    #32492874
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Железо скорей всего будет не лучше чем Celeron 1200, 128 ОЗУ, HDD 40 ГБ
да еще эта машина будет загружена другими задачами, кроме сервера FB.

Может быть, найти и показать заказчику книжку Перельмана "Занимательная арифметика- загадки и диковинки в мире чисел", глава 9, "Как велик миллион" и "Упражнения с миллионом"? Может быть он сумеет понять, что 30000000 и 30000 - это две большие разницы...
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Что лучше при работе с большими таблицами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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