|
|
|
Что лучше при работе с большими таблицами
|
|||
|---|---|---|---|
|
#18+
IB то тут каким боком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 18:49 |
|
||
|
Что лучше при работе с большими таблицами
|
|||
|---|---|---|---|
|
#18+
Чего ты боялся, все же случилось :)) Зачем тебе десятки тысяч записей на клиенте ? Ты их ВСЕ собрался распечатать ? На принтере ? Сильно сомневаюсь... А генератор отчетов какой используешь ? И попутно... IBSQL не буферизует записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 21:21 |
|
||
|
Что лучше при работе с большими таблицами
|
|||
|---|---|---|---|
|
#18+
>> Ежедневно в такие таблицы добавляется порядка 28 000 – 30 000 записей в каждую ... >>температура это аналоговое значение, полученное с АЦП а практически у все АЦП есть такая фитча к плаванье последнего 1 - 2х разрядов, т.е. даже если температура в точке измерения будет постоянной, то измеренные значения будут колебаться (например 20 ; 20.1; 20.2; 19.8 и т.д.) Ежедневно по 30000 означает, что 30000/24/60 = 20 записей в минуту, или по одному каждые 3 секунды (если процесс 24-часовой). Спросите у заказчика, так уж ли необходимо помнить каждое значение. Может быть имеет смысл _до_ введения в БД, усреднять скажем каждые 5 значений, и вводить только среднее от этих пять. Врядли температура так быстро будет меняться в рамках 15-20 секунд, чтобы это было важно для дальнейших анализов. Точнее, если реальное изменение температуры меньше или сравнимо с погрешностью измерения, то очень даже имеет смысл делать предварительное усреднение . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 23:13 |
|
||
|
Что лучше при работе с большими таблицами
|
|||
|---|---|---|---|
|
#18+
Для таких задач в IB существуют поля типа массив. Используются крайне редко. Но впервые в СУБД они были созданы в IB для фирмы Боинг и по заказу фирмы Боинг. Снятие телеметрии с сотен тысяч датчиков во время полёта. Затем анализ - где там слабое место у нового Боинга? Что там было до катастрофы, а что время неё??? Мне скоро предстоит такая задача по телеметрии. Тоже массивы юзать буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2004, 08:30 |
|
||
|
Что лучше при работе с большими таблицами
|
|||
|---|---|---|---|
|
#18+
2начинающий ? Железо скорей всего будет не лучше чем Celeron 1200, 128 ОЗУ, HDD 40 ГБ да еще эта машина будет загружена другими задачами, кроме сервера FB. 8-) При таких объемах и задачах у клиента нет 500$ на отдельную машину? И при этом есть желание иметь 24*7*365 работающую систему? ИМХО - из говна пуля. "Пилите, Шура, пилите. Они золотые." (с) Ильф и Петров На счет удаления, думаю, его уместно будет делать раз в месяц, а после него делать b/r. Насчет b согласен, а вот насчет r нет. Зачем ужимать базу при неизбежном последующем росте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2004, 10:13 |
|
||
|
Что лучше при работе с большими таблицами
|
|||
|---|---|---|---|
|
#18+
Ежедневно по 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. В общем всем спасибо. На этом тему закрываем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2004, 11:42 |
|
||
|
Что лучше при работе с большими таблицами
|
|||
|---|---|---|---|
|
#18+
Не торопись принимать решение. авторпро массивы я тоже думал, ведь они хранятся как Blob отдельно от таблицы, что позволит уменьшить размер таблицы и следовательно увеличить скорость манипуляций с ней. Это позволит увеличить скорость манипуляций, но только НЕ с ней. По правилам хорошего тона с массивами постоянно не манипулируют. В момент вставки массива целиком (это одна строка в таблице) его анализируют и заранее оговорённые результаты (скорость, градиент, производные) сбрасывают в рабочую таблицу. Затем все манипуляции проводят над рабочей таблицей. И если что-то кардинально озадачит, тогда лезут в таблицу-хранилище и лопатят один конкретный массив, а не все массивы за период. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2004, 12:18 |
|
||
|
Что лучше при работе с большими таблицами
|
|||
|---|---|---|---|
|
#18+
В общем всем спасибо. На этом тему закрываем. А зря! Только задачу обрисовал. Есть несколько решений, которые можно использовать. Ну во первых массивы. Если использовать двумерный, то будет одна запись в сутки. Одномерный - 1250. Во-вторых, упаковка в BLOB. Т.е. считываешь значения с датчиков, упаковываешь в бинарный массив и запихиваешь в BLOB. 24 записи в сутки. В третьих, VARCHAR(32000). То же, что и с BLOB. Имеются свои плюсы и минусы. Проще, быстрее. Придется бороться с #0. 24 записи в сутки. Возможны комбинации массивов и VARCHAR. Но бороться с объемом все равно придется. Как ни пакуй данные, а гигабайты быстренько набегут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2004, 12:22 |
|
||
|
Что лучше при работе с большими таблицами
|
|||
|---|---|---|---|
|
#18+
автор Железо скорей всего будет не лучше чем Celeron 1200, 128 ОЗУ, HDD 40 ГБ да еще эта машина будет загружена другими задачами, кроме сервера FB. Может быть, найти и показать заказчику книжку Перельмана "Занимательная арифметика- загадки и диковинки в мире чисел", глава 9, "Как велик миллион" и "Упражнения с миллионом"? Может быть он сумеет понять, что 30000000 и 30000 - это две большие разницы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2004, 20:20 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32491403&tid=1578783]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
201ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 552ms |

| 0 / 0 |
