Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Посоветуйте тип баз данных   Найти похожие ветки 

 
DelphiN! ©   (2005-02-11 12:48) [0]

Написал программу, на основе баз данных Paradox 7, Всего в программе 7 баз данных. 5 баз будут иметь средний размер по 500 кб. 1-а из баз в среднем может разрастись до 1-го гигабайта. Еще одна база может разрастись до нескольких гегабайт, также в эту базу довольно часто добавляеться новые значения методом Append компонента ClientDataSet(несколько раз в минуту). Программа ведет очень активную работу с маленькими базами(до 500кб). В среднем проводит циклический поиск(методом сравнения строк) в каждой из маленьких баз по 1-му разу в секунду. 2-е большие базы(до 2-х гигабайта) программа использует редко, и только добавляет туда новые значения, не производя поисков. Со всеми базами работаю через компонент TClientDataSet
 Так вот когда одна из баз возрастает более чем на 1 мегабайт(в данную базу добавляються новые значения методом Append примерно каждые 30 секунд), программа начинает вылетать и виснуть ...

 Что вы можете посоветовать, может Paradox не подходит для больших баз ? Что лучше использовать ? И что может подойти для маленьких, но очень часто используемых баз ?

Заранее благодарен.


 
Desdechado ©   (2005-02-11 13:05) [1]

1. парадокс для таких объемов точно не предназначен
2. "по 1-му разу в секунду" - значит ли это, что поиск должен отрабатывать быстрее всегда, или это требование на среднее время поиска
3. ClientDataSet Напрямую не работает с парадоксом. Что используется в связке с ним?
4. Похоже, что "раз в 30 с добавление в таблицу" - это что-то реал-таймовое пишется, там очень строгие ограничения обычно. И всякие ширпотребовсие СУБД не подойдут.

Информации для того, чтобы рекомендовать что-то, маловато...


 
Sergey13 ©   (2005-02-11 13:22) [2]

ИМХО, не паханое поле для улучшения. 8-)
1. База<>таблица.
2. "методом Append" если не нужно одновременное отображение вставленного, то лучше использовать отдельный запрос с параметром.
3.(методом сравнения строк) - это обязательно? Идентификаторы пошустрее будут наверное.
4.
> может Paradox не подходит для больших баз ?
Да уж не самый лучший выбор.
5.
>Что лучше использовать ? И что может подойти для маленьких, но очень часто используемых баз ?
ФБ например.


 
DelphiN! ©   (2005-02-11 15:05) [3]


> 2. "по 1-му разу в секунду" - значит ли это, что поиск должен
> отрабатывать быстрее всегда, или это требование на среднее
> время поиска


Это обновление значений ListView по таймеру. Я описался поиск проводиться не раз в секунду, а около 400-т раз в секунду. В базе примерно 200 записей. Поиск проводиться сравнением строк.(Таймер поиска срабатывает 1 раз в секунду, но при одном срабатывании может производиться до 400-т поисков).

В большие базы более 1-го гигабайта нужно с переодичностью в 30 секунд добавлять по 1-му значению. При этом по запросам пользователя нужно производить фильтрацию и вывод данных в Грид.

Данные из базы данных в дальнейшем планируется передавать по сети.

Произвожу поиск методом сравнения строк, так как с базами работать умею плохо, и не знаю других методов.

 Что такое ФБ ? Расшифруйте если не затруднит


 
Sergey13 ©   (2005-02-11 15:14) [4]

2 [3] DelphiN! ©   (11.02.05 15:05)
>Что такое ФБ ?
FireBird - Сервер БД, клон InterBase. Текущая версия 1.5.2.


 
Desdechado ©   (2005-02-11 15:48) [5]

[3] - ответа на вопросы не наблюдаю.
Из пояснения понял только, что индексный поиск не используется. Надо использовать. Причем через SQL. Но 400 поисков в секунду - это серьезное ограничение. Чем оно вызвано? Есть ли смысл обновляться каждую секунду? Есть ли смысл обновлять все 400 или достаточно нескольких?


 
Anatoly Podgoretsky ©   (2005-02-11 15:57) [6]

В базе нет записей, поэтому ничего добавить нельзя.


 
DSKalugin ©   (2005-02-11 18:20) [7]

Paradox для решения сетевых задач явно не подходит. Тем более на таких объемах, да еще где скорость чтения / записи имеет роль.
Посмотри в сторону MySQL, Firebird. Это те, которые попроще


 
DelphiN! ©   (2005-02-12 13:12) [8]

А чем отличается MySql от Sql ? Что лучше ?


 
DSKalugin ©   (2005-02-12 14:00) [9]

MySql - это СУБД (Система управления базами данных),
а Sql - это язык (Structured Query Language), который применяется в этих СУБД
MySql самая простая и быстрая по скорости чтения данных, основное применение нашла в WEB

полезно также ознакомиться с сайтом www.sql.ru
MySql - www.mysql.ru


 
DelphiN! ©   (2005-02-13 12:41) [10]

Не посоветуете какуюнибудь документацию(для обучения). Использование MySQL в Delphi


 
DelphiN! ©   (2005-02-15 12:23) [11]

А в чем отличия MSSql и MySql ? Что лучше ?


 
Sergey13 ©   (2005-02-15 12:27) [12]

2[11] DelphiN! ©   (15.02.05 12:23)
>А в чем отличия MSSql и MySql ? Что лучше ?
Разница во второй букве. "S" лучше, потому что она заглавная. 8-)


 
sniknik ©   (2005-02-15 12:42) [13]

> А в чем отличия MSSql и MySql ?
продукты разных производителей, с разным подходом, реализацией, способами хранения/форматами данных,интерфейсами (передача данных), пользовательскими интерфейсами служебных программ ... , разное практически все. обьеденяет только sql, и то в минимуме, только для того чтобы сказать поддержан стандарт t.sql/... (но самом деле и от стандарта отличия находили)

> Что лучше ?
а что лучше гоночный велосипед или горный? (для езды в пустыне... ;о)))


 
Digitman ©   (2005-02-15 12:42) [14]


> поиск проводиться .. около 400-т
> раз в секунду


"Абалдеть !"(с)

чуть ли не каждые 2-3 мс слать SELECT-запросы  - врагу не пожелаешь результаты работы такого алгоритма ..


> обновление значений ListView по таймеру


это что ж получается - таймер у тебя сигналит с периодом в 2-3 мс, и по каждому сигналу ты делаешь очередной запрос к БД, а рез-ты запроса выводишь в TListView ? Из-за боязни, что юзер упустит какие-то изменения в БД, произошедшие за последние 2-3 мс ?

Так что ли ?


 
DelphiN! ©   (2005-02-15 12:57) [15]


>
>  [14] Digitman ©   (15.02.05 12:42)


Нет.   Есть база текущих сеансов, в ней храниться время окончания сеанса. Есть таймер, с интервалом в 1-у секунду, при каждом срабатывании таймера перебирается вся таблица пользователей(сейчас 100 человек), и для каждого пользователя ищется его значение в базе сеансов(в базе сеансов может быть значений столько же, сколько и пользователей). Вот и получается, что поисков в базе сеансов = колличеству пользователей, в то время как колличество записей в базе сеансов при максимальной нагрузке = колличеству записей в табилце пользователей. Из этого получаем : колличество стравнений строк = колличество пользователей * на колличество сеансов(при максимальной нагрузке сейчас это 100 * 100)


 
DelphiN! ©   (2005-02-15 13:05) [16]

А нет, ошибся в последней формулеровке (100 * 100). Она выглядит не так, потаму-что поиск проводиться примерно следующим образом :


i := 0;
b := false;
while (i <= BASA.RecordCount)and(not b) do
begin
 Inc(i);
 BASE.RecNo := i;
 if LCmpStrI(PChar(Base.FieldByName("Field").AsString),PChar(Value))<>0 then
   b := true;
end;
if b then
 Result := Base.FieldByName("Field").AsString
else
 Result := "";
end;


 
Digitman ©   (2005-02-15 13:12) [17]

и каков же тайный смысл "базы сеансов" ?


 
Digitman ©   (2005-02-15 13:16) [18]

и как, кстати, насчет транзакций ?
в смысле - юзер, зарегистрированный в "таблице пользователей" некоей базы А, открывает "базу сеансов" В, делает в ней изменения (фиксирующие начало сеанса) и "отваливается" по причинам нечаянного выдергивания уборщицей ТетьГлашей шнурка из розетки ?


 
Danilka ©   (2005-02-15 13:20) [19]

[16] DelphiN! ©   (15.02.05 13:05)
Ох.
Во-первых, в различных СУБД есть свои средства для доступа к информации о текущих сеансах, пользователе и пользователях.
Во-вторых, об индексах ничего не слышал, разумеется?
Советую для начала книгу почитать по СУБД, прежде чем огороды городить.
Неплохая, прямо для тебя, лежит вот-здесь:
http://www.podgoretsky.com/classics.html
Там есть книга в формате Ворда и ПДФ: "Понимание SQL, Лебедева В.Н., Мартин Грубер".
Затем, когда почитаешь ее, хотя-бы несколько глав, уже можно попытаться представить задачу, и подбирать под нее сервер СУБД.


 
Digitman ©   (2005-02-15 13:35) [20]

боюсь, автор не различает понятия "таблица" как объект базы данных и собственно "база данных" (возможно, но не обязательно включающая кроме всего прочего и таблицы как объекты) ..

с этого бы и начать ему ..
да с транзакциями подружиться, коль скоро о многопольз. среде речь зашла ..
а не таймеры плодить ..


 
DelphiN! ©   (2005-02-15 14:39) [21]


>  [20] Digitman ©   (15.02.05 13:35)


После изменения базы данных кассиром база сразу сохраняется. А без таймеров тут не обойтись, так как никаких событий в базе не происходит, нужно просто обновлять значения ListView-a, по текущим значениям в базе(так как время меняется)


 
Digitman ©   (2005-02-15 14:49) [22]


> После изменения базы данных кассиром база сразу сохраняется


что за бред ?
что значит "база сразу сохраняется" ?
у тебя полнейшая каша в голове !


> без таймеров тут не обойтись, так как никаких событий в
> базе не происходит,


а НАХРЕНА какие-то события нужны ?

я так понимаю - "кассирские" события в базе нужны не иначе как бандитам, для того чтобы в ран-тайм отследить внесение некоей суммы куда-то ...

"нормальный" же юзер, "не подверженный влиянию криминала", получив исключение при подтверждении т/акции, и безо всякиз хрЕновых таймеров поймет, что состоянии некоего "аккумулятора" изменилось с момента старта им, изером, т/акции

короче, бросай все нафих и срочно устраняй вопиющие пробелы в своих знаниях в теории/механизмах многопользовательских СУБД


 
Johnmen ©   (2005-02-15 14:52) [23]

>DelphiN! ©   (15.02.05 14:39) [21]

А зачем ListView ?
И зачем так часто ?


 
Digitman ©   (2005-02-15 14:57) [24]

бред сивой кобылы

а если не бред, то задача (сложная !!!) решается реализацией 3-хзвенной арх-ры СУБД


 
msguns ©   (2005-02-15 15:20) [25]

Не, пацаны, а что, собственно, хотим затолкать в БД ? Базар о каких-то обновлениях, поисках, "сеансах" и т.д. Что за объект такой, где есть такая личность, как "кассир" ?
Похоже, что это магазин ? Или прачечная ? А, может, кинозал ? А если, не дай Бог, бандитская шайка, где после каждого "дела" (которых может быть до 400 в сек) "кассир" выдает братве капусту ?
Откуда дрова-то ? И для кого (чего) ?


 
msguns ©   (2005-02-15 15:21) [26]

Не, пацаны, а что, собственно, хотим затолкать в БД ? Базар о каких-то обновлениях, поисках, "сеансах" и т.д. Что за объект такой, где есть такая личность, как "кассир" ?
Похоже, что это магазин ? Или прачечная ? А, может, кинозал ? А если, не дай Бог, бандитская шайка, где после каждого "дела" (которых может быть до 400 в сек) "кассир" выдает братве капусту ?
Откуда дрова-то ? И для кого (чего) ?


 
Digitman ©   (2005-02-15 15:27) [27]


> msguns ©   (15.02.05 15:20) [25]


дело темное ..

"Адназначна !"(с) Жир


 
DelphiN! ©   (2005-02-15 15:30) [28]

Программа управления компьютерным клубом, по типу программы Locker(кто такую знает)


 
msguns ©   (2005-02-15 15:36) [29]

Ух ты !!! А откуда эта цифра: "400 сравнений в сек" ?
Это типа сервер отслеживает клики гамеров, например, в SC, и, ежели кто-то и протоссов паланул пси-шторму, то админу на экране светится:
 Гамер № 123б (РС №20а) шторманул гамера № 07х (РС №13л), в результате чего последний потерял 16 собак, а 4 гидрала уковыляли в ближайший орешник поправлять пошатнувшееся здоровье.


 
Digitman ©   (2005-02-15 15:48) [30]


> DelphiN! ©   (15.02.05 15:30) [28]


ты пашешь огород, на котором сам не знаешь что растет ..
извини уж ..

юросай нафих свои "клубоадминскопрограммерские" потуги и садись штудировать теорию .. без нее все что ты сейчас делаешь выглядит попросту дурью ..


 
DelphiN! ©   (2005-02-15 15:57) [31]

А как вы предлагаете обновлять время на мониторе кассира, ведь нужно показывать сколько времени на каком компьютере осталось в ListView, а чтобы узнать сколько времени осталось на компьютере скажем под номером 15, нужно найти его сеанс в базе данных сеансов и пересчитать время (отнять текущее время от времени окончания).  Вот каждую секунду и обнавляется оставшееся время, деньги, последнее время отклика и много чего еще ... для каждого из 80-ти компьютеров


 
Desdechado ©   (2005-02-15 16:11) [32]

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


 
Desdechado ©   (2005-02-15 16:12) [33]

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


 
Johnmen ©   (2005-02-15 16:13) [34]

>DelphiN! ©   (15.02.05 15:57) [31]

Ну, вобщем, Digitman © уже сказал про бред.
От себя добавлю, что такие системы делаются ПРИНЦИПИАЛЬНО не так.


 
Digitman ©   (2005-02-15 16:26) [35]


> как вы предлагаете обновлять время на мониторе кассира

уж точно не ТАК


> нужно показывать сколько времени на каком компьютере осталось
> в ListView


да кассиру ПО КОЛЕНО (!!!!!!!!!!!), ListView у тебя там или ХренВью !!
ему, если уж на то пошло, и ежели он, кассир, не спит и пялится всю свою смену в монитор, важно получить диал.окно, что некий юзер Пупкин прос.ал на сей момент все бабки и нго пора гнать в три шеи !


 
msguns ©   (2005-02-15 17:16) [36]

>DelphiN! ©   (15.02.05 15:57) [31]
Юзера, кассиры, листвью, номера, сеансы - все в одну тарелку.
Ты это.. Определись сначала с объектами: что такое "сеанс", "номер" и т.д. Потом набросай схемку "документооборота", т.е. взаимодействие между объектами, какую инфу и как часто они должны друг другу передавать.
В рез-те у тебя должна появиться общая модель информационных потоков. После этого надо "приложить" эту модель к теории Баз Данных.

И только после этого можно приступать к проектированию интерфейса клиент-сервер. Что там будет, листвью или листбокс или хренбокс - это даже не десятое, а стодесятое дело ;)


 
Johnmen ©   (2005-02-15 17:22) [37]

>msguns ©   (15.02.05 17:16) [36]

Причём базы данных вообще сбоку, если речь о мониторинге в компьютерном клубе...


 
msguns ©   (2005-02-15 17:28) [38]

>Johnmen ©   (15.02.05 17:22) [37]
>Причём базы данных вообще сбоку, если речь о мониторинге в компьютерном клубе...

Нет, Жень, не совсем так. Хранить надо все данные о "сеансах" за достаточно длительное время. Хотя бы для той же бухгалтерии.


 
Johnmen ©   (2005-02-15 17:33) [39]

>msguns ©   (15.02.05 17:28) [38]

Под "сбоку", я имел в виду именно хранение.
Но ведь это не основное в данной системе. Хотя бухи, м.б., думают иначе...:)


 
Sergeich   (2005-02-15 17:36) [40]

2DelphiN!
есть предложение записывать результаты поиска(100*100) в базу, чтобы быстрее получить вожделенные гигабайты. База такого учреждения, тем более на парадохе не потянет больше 10M. И то к тому времени хозяин уже чебуреками будет торговать или шкурками черепах.



Страницы: 1 2 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.053 c
1-1110025832
Володя
2005-03-05 15:30
2005.03.20
ошибка


3-1108617284
Submarine
2005-02-17 08:14
2005.03.20
Проблемка с выбором последней записи


6-1105980897
Piter
2005-01-17 19:54
2005.03.20
Как можно узнать о разрыве RAS соединения


14-1109618597
Pietro
2005-02-28 22:23
2005.03.20
как послать Mail?


14-1109578444
Ev_genus
2005-02-28 11:14
2005.03.20
Вопрос фанатам и долгожителям