Форум — Ответы ( К темам )
? | Михаил: Проблемы с BDE, или...? (14-04-2003 17:32:05) |
Кто-нибудь подскажет, что это может быть: имеется таблица paradox, при работе сней через TTable в BCB 6, во время отключения света/падения напряжения, портятся primary индекс (автоинкремент.) | |
Георгий (14-04-2003 19:09:10) | |
ооо! знакомая история. Решил так: 1.взял с заказчика денег и сделал свой функцианальный аналог BDE... 2.плюнул на BDE а если серьёзно: не смог добиться надёжного хранения данных в таблицах Paradox при условии возможности внезапного отключения питания — обычно разрушается структура таблиц. причём не обязательно при отключении питиния в момент записи — можно в цикле читать из таблицы и нажать на ресет и в результате таблица разрушена. также обнаружил, что таблицы Paradox организованы по принципу хеш таблиц — когда записей > 10 000 резко (на порядок) ухудшается время доступа. Буду признателен, если кто-нибудь покажет (докажет) обратное. | |
Владимир (14-04-2003 19:48:23) | |
Знакомая история. Надо переходить на что-то более надежное, например InterBase (FireBird) Частичное спасение — особенно если база данных предназначена для нескольких пользователей и лежит на сервере — купить Источник Бесперебойного Питания. Причем индексы в таблице Paradox могут разрушаться и просто при многополь- зовательской работе, при чтении/вставке в таблицу одновременно несколькими пользователями. И даже хуже того — иногда повреждаются (нарушается структура) самих .db файлов, а это куда хуже — их уже не восстановить, в отличие от индексов, частичное спасение — периодическое архивирование базы данных (.db файлов) (1 раз в час или как позволяют ресурсы) И если все-таки придется работать именно с Paradox (нет возможности перейти на нормальную базу типа FireBird), стоит написать программу к вашей базе, которая: 1. удаляет индексы у ваших .db таблиц, 2. удаляет файл pdoxusers.net 3. если есть — удаляет файлы .lck 4. восстанавливает индексы у .db таблиц (индексирует таблицы) Разумеется делать это можно, когда все пользователи отключены от таблиц (базы), либо предватрительно выгнав их из программ, работающих с этой базой. | |
Георгий (14-04-2003 21:00:41) | |
Владимир: А как InterBase реагирует на reset посередине транзакции? поддерживается она транзакции как таковые? какой обьём могут без существенного падения производительности обрабатывать? структура таблиц InterBase (B+ дерево или разновидности хеш таблиц)? Какова доля полезной нагрузки в таблицах (у Paradox ~70%)? Сколько (select * from table where time > чего то) может делать по сравнению с Paradox? (при работе на локальной машине) Какие средства контроля и восстановления (при разрушении файла) предлагает? | |
Владимир (14-04-2003 23:16:49) | |
>> А как InterBase реагирует на reset посередине транзакции?>> поддерживается она транзакции как таковые? Конечно, полная поддержка транзакций. ВСЕ изменения, происходящие в рамках транзакции или утверждаются в базе (Commit) или откатываются (Rollback) В случае Reset посреди транзакции, ВСЕ изменения, произведенные в рамках этой транзакции НЕ будут утверждены в базе.>> какой обьём могут без существенного падения производительности обрабатывать? C базой ~650-750 Мб на ~30 компьютерах - Никаких тормозов, нормальная скорость совместной работы, конечно достаточно серьезные требования к серверу, где установлена база (P4 2400, 512 Мб ОЗУ, RAID, SCSI винчестеры), нормальная 100 сеть, остальные компьютеры достаточно скромные — максимум Celeron 300-600, 32-128 Мб ОЗУ. И очень серьезные требования к разработке программного обеспечения - очень тщательная разработка структуры базы: таблиц, полей, индексов, хранимых процедур, триггеров, связей между таблицами. Достаточно серьезная нагрузка именно на триггеры и хранимые процедуры (и соответственно — на мощный сервер) А значит необходимо и приличное знание SQL и языка хранимых процедур. Отличие от Paradox в этом значительное. Лучшая версия сервера на сегодня: Firebird-1.0.2.908 Компоненты прямого доступа (без BDE) к C++Builder и Delphi — FIBPlus Визуальное средство работы с базой — IBExpert (создание/удаление/изменение базы данных и всех ее объектов — таблиц, процедур, триггеров и т.д.) Структура базы данных, инструменты работы и способы ее восстановления подробно описываются в книге: "Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil" А.Ковязин, С.Востриков (Изд. "Кудиц-Образ") 2002 Скоро обещают новый выпуск этой книги, уже с диском с соответсвующими инструментами и примерами программ к книге. | |
Георгий (15-04-2003 00:48:20) | |
Спасибо. когда увидел издательство чуть не подавился — я в этой конторе УИР прохожу, а их ген. дир. у нас курс лекций по комп. сетям вёл... Кстати как мелким шрифтом пишешь и в разные цвета раскрашиваешь? и ещё — у меня закралось смутное подозрение, что я х*йнёй страдал делая замену BDE — судя по всему можно было IB взять — сколько оно стоит? | |
Владимир (15-04-2003 09:48:59) | |
Что касается шрифта, то у меня включен html — у других он выключен, во избежании проблем. Сам сервер/клиент Firebird-1.0.2.908, как и IBExpert — бесплатные, можно скачать из Downloads, или с "родных" сайтов для FireBird: http://sourceforge.net/project/showfiles.php?group_id=9028 и для IBExpert: http://ibexpert.com/download, платные компоненты FIBPlus (http://devrace.com/fibplus), при желании можно и их найти, также можно пользоваться и другими компонентами для работы из C++Builder (поставляются с ним — вкаладка InterBase, или другие,например, IBX, посмотрите разные варианты на http://ibase.ru ) | |
Георгий (15-04-2003 10:01:11) | |
Т.е. нормальная Клиент / серверная СУБД, поддреживающая транзакции (хотя бы сериализуемые) ничего не стоит? А зачем 1-2 года назад все бросились MySQL использовать? Кстати как она себя ведёт при повреждении части файла (ну например берём HEX редактор, лезем в файл БД и что-нибудь правим)? | |
Владимир (15-04-2003 10:29:30) | |
Денег хотят за InterBase 7 и Yaffil, а FireBird — пока бесплатный (это 3 клона InterBase) Что касается MySQL — по всей видимости для работы с Internet, например 99% форумов в сети — на MySQL (как и этот форум) При повреждении части файла — смотря что повреждено. Структура базы — в книге. | |
Alexander (15-04-2003 11:55:11) | |
Правильно ли я понял, что Interbase — единственная более-менее приличная и не слишком сложная СУБД для Windows по нормальной цене ? Просто мне казалось, что либо бесплатные использовать, вроде MySQL, либо Oracle ставить. Конечно, теперь и Interbase в виде FireBird бесплатный, однако никто гарантий надежности его не давал.
| |
Владимир (15-04-2003 20:49:27) | |
Нет, не единственная, и потом что значит — приличная ? Если нужна очень мощная база, надежная, свыше 100 компов — то конечно это Oracle но если официально ее покупать — цена намного выше, хотя у нас в стране практически никто ничем официальным(законно купленным) не пользуется На любом компьютерном рынке можно купить диски за 70-100 руб с кучей баз данных: Oracle, MS SQL, Sybase, Informix и другие... Но и ресурсов Oracle требует ого-го.., иначе будет все тормозить. Также, насколько я знаю, из не слишком сложных СУБД многие пользуются MS SQL Что касается личного опыта использования InterBase и потом FireBird на предприятии с ~30-40 компьютерами в течение нескольких последних ЛЕТ !!!, с базой размером от 250 до 750 Mb, на сервере под Windows NT, то выводы следующие: 1/ Глючат ранние версии InterBase 5.6 в сочетании с программами с ранними версиями Delphi 3/4, возможно дело в BDE, через которую шла связь, и в каких-то ошибках и сервера и Delphi. 2/ FireBird в сочетании с C++Builder 5/6 и FIBPlus глюков практически не дает, надо лишь отслеживать некоторые известные баги. 3/ За все время работы файл базы данных .gdb ни разу не повреждался. 4/ Сервер InterBase (FireBird) иногда глючит (зависает) — причина неизвестна, происходит это приблизительно 1 раз в 1-2 месяца, при этом надо лишь остановить InterBase (стоит под Windows NT как служба) и запустить заново и все работает нормально, при этом потери данных не происходит и файл базы не повреждается. ОДНАКО с таким столкнулись и при работе с Oracle ! , что его также крайне редко, но приходится остановить и запустить заново. 5/ Периодически надо делать backup/restore базы — также 1 раз в 1 — 2 месяца, полезная вещь. 6/ Ну и понятно — ежедневно — точнее каждую ночь — когда никто не работает, архивация базы данных, на всякий случай, винчестер не железный. А гарантий надежности Вам никто не даст и с любой другой базой данных. |