Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > DB vs. Текстовый фйл


Автор: TeX 15.12.2008, 08:55
Здравствуйте, уважаемые !
Создал тему здесь, т.к. не знаю куда написать.
Суть такая, пишу систему контроляигровым залом, загвоздка стала в выборе средства хранения информации о времени и статусе сеанса. Выбор такой или хранить все в таблице базы данных, которая отображается в DBGrid-e, и каждую секунду пробегать по базе данных и увеличивать на одну секунду время сеанса. Или же отображать данные в обычном StringGrid-e в нем же увеличивать время каждую секунду, но при этом эту информацию дублировать в текстовом файле или в ini файле, чтоб при сбое информация о сеансах не потерялась.
Так вот вопрос в чем, что будет меньше потреблять системных ресурсов и что быстрее и надежнее ? Если использовать базу данных, не будет ли для нее напряжной такая нагрузка?
Если есть какие-то еще варианты - предлагайте ! 

Автор: Akella 15.12.2008, 09:02
Цитата(TeX @  15.12.2008,  08:55 Найти цитируемый пост)
каждую секунду пробегать по базе данных и увеличивать на одну секунду время сеанса.

 smile зачем?

Добавлено через 1 минуту и 45 секунд
Цитата(TeX @  15.12.2008,  08:55 Найти цитируемый пост)
в обычном StringGrid-e в нем же увеличивать время каждую секунду


Цитата(TeX @  15.12.2008,  08:55 Найти цитируемый пост)
эту информацию дублировать в текстовом файле или в ini файле


Цитата(TeX @  15.12.2008,  08:55 Найти цитируемый пост)
чтоб при сбое информация о сеансах не потерялась.

 smile думаю, что ты не прав в том, что каждую секунду собираешься писать в базу и/или в файл

Добавлено через 2 минуты и 33 секунды
а что, просто время начала + оплаченную продолжительность сеанса нельзя записать в базу?

Добавлено через 3 минуты и 27 секунд
я бы на твоём месте поискал в сети программы для контроля игровых залов и посмотрел, как там реализовано

Автор: Frees 15.12.2008, 09:13
Цитата(TeX @  15.12.2008,  10:55 Найти цитируемый пост)
каждую секунду пробегать по базе данных и увеличивать на одну секунду время сеанса

можно хранить просто время окончания сеанса, и зачем тебе точность до секунд? может минут достаточно будет?

Автор: TeX 15.12.2008, 09:40
Секунды нужны чисто для спецэффектов, в Grid-e  подразумевается прогрессбар чтоб нагляднее было сколько осталось.
Хотя можно и поминутно это все делать.
Те исходники программ, что я нашел в сети не блещут хорошим решением данного вопроса. Все используют базу данных для хранения информации.
И тогда попутный вопрос, как лучше увеличивать время по таймеру или в отдельном потоке (в потоках).

Автор: Frees 15.12.2008, 09:48
тогда по идее на диске у тебя должно лежать номер машинки и время старта окончания сеанса дак это можно грузить сохранять при помощи обычного TStringList тока не каждую секунду а только при изменений времени окончания и старта

а уже прогресс рисуеш в проге анализиру текущее время время старта и время окончания
если ничего больше хранить не надо то храни в тексте

ну а если ты захочеш например на клиентских машинках видеть такой же прогресс, или вести историю кто когда сколько за машинками сидел то тогда лучше какуюнить сетевую БД использовать

Автор: TeX 15.12.2008, 10:14
Скажем так, это будет таблица в которой будет храниться инфа о текущих сеансах. Какая машина, когда сеанс начался, сколько прошло, когда закончится и сколько оплатили. Вот его надо будет дергать для увеличения прошедшего времени и отображения информации. Ну я думаю продвинутого DBGrid-a, будет вполне достаточно, если обновлять раз в минуту. Нагрузка не будет такой сильной. 

Автор: Frees 15.12.2008, 11:29
Цитата(TeX @  15.12.2008,  12:14 Найти цитируемый пост)
Какая машина, когда сеанс начался, сколько прошло, когда закончится и сколько оплатили

сколько прошло хранить не надо!!! это вычисляемое значение текущее время минус время старта получаеш сколько прошло

Добавлено через 3 минуты и 49 секунд
попробуй TClientDataSet использовать он умеет в фаил сохронять и загружать а сколько прошло времени сделать вычислимым полем!
и DBGrid будет обновлятся вместе с ним

Автор: TeX 15.12.2008, 11:56
Тогда как лучше время увеличивать ? В таймере или в потоке с засыпанием потока на 40 секунд скажем.

Автор: Frees 15.12.2008, 12:28
Цитата(TeX @  15.12.2008,  13:56 Найти цитируемый пост)
Тогда как лучше время увеличивать ?

не увеличивать а перещитывать !! ИМХО в таймере лучше будет

Автор: Akella 15.12.2008, 12:52
Цитата(TeX @  15.12.2008,  09:40 Найти цитируемый пост)
Те исходники программ, что я нашел в сети не блещут хорошим решением данного вопроса. 

ты думаешь, что если ты будешь каждую секунду читать писать/ в базу то твоя будет блестать?

Добавлено через 1 минуту и 43 секунды
ну не понимаю, ну зачем в базу писать посекундно, хоть даже для наглядности, если можно всё отображать в реальном времени

Автор: TeX 15.12.2008, 13:17
Цитата(Akella @ 15.12.2008,  12:52)
Цитата(TeX @  15.12.2008,  09:40 Найти цитируемый пост)
Те исходники программ, что я нашел в сети не блещут хорошим решением данного вопроса. 

ты думаешь, что если ты будешь каждую секунду читать писать/ в базу то твоя будет блестать?

Добавлено @ 12:54
ну не понимаю, ну зачем в базу писать посекундно, хоть даже для наглядности, если можно всё отображать в реальном времени

Одним слдовом, на основании ответов определился с тем как нужно все делать.
Спасибо за ответы. Тему можно закрыть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)