Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Посоветуйте тип баз данных [D6, Win2k, WinXP]


Страницы:   1 2 3 4

DelphiN! ©   (2005-02-11 12:48:00) 

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

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

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


Danilka   (2005-02-15 13:20:00) [61]

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


Digitman   (2005-02-15 13:16:00) [62]

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


Digitman   (2005-02-15 13:12:00) [63]

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


DelphiN!   (2005-02-15 13:05:00) [64]

А нет, ошибся в последней формулеровке (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;


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


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


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


Digitman   (2005-02-15 12:42:00) [66]


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


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

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


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


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

Так что ли ?


sniknik   (2005-02-15 12:42:00) [67]

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

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


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

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


DelphiN!   (2005-02-15 12:23:00) [69]

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


DelphiN!   (2005-02-13 12:41:00) [70]

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


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

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

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


DelphiN!   (2005-02-12 13:12:00) [72]

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


DSKalugin   (2005-02-11 18:20:00) [73]

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


Anatoly Podgoretsky   (2005-02-11 15:57:00) [74]

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


Desdechado   (2005-02-11 15:48:00) [75]

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


Sergey13   (2005-02-11 15:14:00) [76]

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


DelphiN!   (2005-02-11 15:05:00) [77]


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


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

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

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

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

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


Sergey13   (2005-02-11 13:22:00) [78]

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


Desdechado   (2005-02-11 13:05:00) [79]

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

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


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо