Форум: "Базы";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизПосоветуйте тип баз данных Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.042 c