Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1109921070
Оля
2005-03-04 10:24
2005.03.20
Чтение строки из TMemorystream


1-1109948969
Denya
2005-03-04 18:09
2005.03.20
TWebBrowser


3-1108438042
папик
2005-02-15 06:27
2005.03.20
Лог SQL запросов к MS SQL


6-1105480714
bulkas
2005-01-12 00:58
2005.03.20
Непрочитанные сообщения


14-1109668797
ex080D:07BBh
2005-03-01 12:19
2005.03.20
Что будете дарить на 8 марта своим девушкам?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский