Страница: 1 | 2 | 3 |
Вопрос: Ведём лог файл...
Добавлено: 05.01.09 12:14
Автор вопроса: werber | Web-сайт:
Ответы
Всего ответов: 42
Номер ответа: 31
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #31
Добавлено: 08.01.09 02:05
Это удобно если софтина сама по себе юзает базу.. но не станешь же ты только из за логов базу за собой таскать!
Номер ответа: 32
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #32
Добавлено: 08.01.09 02:10
Почему таскать? Просто вместо создания txt-файла создается mdb. ODBC-драйвер к access есть везде, где есть windows и не только.
Номер ответа: 33
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #33
Добавлено: 08.01.09 02:24
Анализ лога это отдельная история по моему.
И вообще это все равно что с пушки стрелять по воробьям.
Номер ответа: 34
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #34
Добавлено: 08.01.09 02:29
"таскать" - это я образно выразился... читать - юзать
все равно.. имхо, юзать базу для этих целей - это лишнее... этоне та информация которая требует хранения и всей мощи базы данных.
Номер ответа: 35
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #35
Добавлено: 08.01.09 03:09
Ни на что не претендую, но чем это элементарщина сложнее предыдущих?
Номер ответа: 36
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #36
Добавлено: 08.01.09 04:18
чисто теоритически - никакой разницы, но!!!
- существует гораздо бОльшая(в сравнении с файловыми операциями) вероятность отсутствия/кривизны имеющегося (установленного) и используемого в системе драйвера для работы с базой.. будь то odbc, dao или ado. А при отсутствии таковых(гипотетически) делает логирование вообще невозможным.
- при частом логировании тебе надо будет часто вызывать/использовать CreateObject.. а ты сам прекрасно знаешь, что этот метод в совокупности с поздним связыванием далеко не самый быстрый способ получить экземпляр объекта.
- при достижении критического размера базы(читаем лога) ты будешь удалять записи, после чего для физического удаления записей тебе надо будет выполнить метод Compact, а для этого, в свою очередь, ты должен будешь открыть базу в режиме монопольного доступа, что тоже является не самой быстрой операцией. Кроме того, метод Compact подразумевает создание новой копии.. а это значит что после выполнения этого метода тебе придется удалять старую базу и переименовывать новую. А если учесть тот факт, что после достижения критического размера тебе придется выполнять эти операции каждый раз(при добавлении каждой записи), то ситуация складывается весьма не радостная.
- ну и наконец, каким образом ты планируешь вычислять размер данных(для вычисления критического размера) и количество строк подлежащих удалению, чтобы размер базы не превышал заданный после сжатия?
Номер ответа: 37
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #37
Добавлено: 08.01.09 05:13
Из чувства противоречия можно и поспорить.
-При том кол-ве библиотек, требуемых для корректного запуска мало-мальски приличного приложения на VB, боязнь поломки ADO является параноей.
-CreateObject при внимательном рассмотрении кода вызывается только 1 (один) раз при первом вызове процедуры за все время логирования.
-Метод Compact со своим монопольным доступом ни чем не хуже монопольного доступа при "Open For As".
-Лично я не планирую вычислять размер базы данных так, чтобы он (шаг-вправо-шаг-влево-расстрел) был гарантированно не более 10Mb + 4Kb + 1bt
Использовать не фиксированое число записей, а гистерезис.
Номер ответа: 38
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #38
Добавлено: 08.01.09 08:02
И кстати, насчет монопольного доступа.
На кой черт, каждый раз вызывать Open fileName For Append As #fileNumber?
Надо объявить Static fileNumber as Integer
Открыть его единожды и дописывать.
If FileNumber Then
Print #FileNumber, ...
Exit Sub
End If
Освободится сам при выходе проги.
Номер ответа: 39
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #39
Добавлено: 08.01.09 12:29
я в этом нисколько и не сомневался)) Я лишь выразил свой взгляд на предложенный тобой вариант. А спорить тут можно до бесконечности...
во-первых, ты держишь соеденение постоянно открытым и вообще на закрываешь его, что не есть гуд
во вторых, ты не выполнишь Compact без создания новой копии БД, что потребует создания от тебя нового соеденения,удаления и переименования файла бд и т.д...
но в конечном итоге эта задача имеет много решений, и которое из них лучшее зависит от конкретной ситуации. поэтому продолжать спор, имхо, тут лишнее.
Номер ответа: 40
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #40
Добавлено: 08.01.09 12:38
Согласен, просто все уперлись в Open fileName, надо ж было показать "транссексуальный" вариант.
Предлагаю забить.
Номер ответа: 41
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #41
Добавлено: 08.01.09 13:54
+1
Номер ответа: 42
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #42
Добавлено: 08.01.09 17:11
Теоретики блин!
А Палач вот возьмет да и напишет bas модуль с функцией на все случаи жизни