Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 Имеет ли смысл связываться с БД?  [new]
tkzv
Member

Откуда:
Сообщений: 3142
Есть программа на си. Она работает с базами данных в своём собственном формате. Структура записи примерно такая:

short index; /* порядковый номер */
short size; /* длина записи */
short length1; /* длина 1-й строки */
char string1[length1]; /* 1-я строка */
short length2; /* длина 2-й строки */
char string2[length2]; /* 2-я строка */
short par1, par2, par3, par4; /* какие-то параметры */
short i1, w1; /* ссылки на другие записи и их веса */
short i2, w2;
...

При заполнении базы программа по мере нахождения связей раздвигает записи и вставляет пары iX-wX.

При пользовании базой:
1) Ищется запись, строки которой соответствуют паре регулярных выражений.
2) Генерируется новая пара регулярных выражений.
3) Записи, на которые ссылается данная, проверяются на соответствие новой паре.
4) Из весов отфильтрованных записей выбирается очередная запись.
И т.д. 2-3-4 в цикле.

Понадобилось заменить short на int и char на wchar_t. При этом возник вопрос: не будет ли лучше вместо возни с арифметикой пойнтеров взять какой-то готовый движок БД, например SQLite?

Размер базы - от тысяч до сотен тысяч записей. Число пар iX-wX может быть равно числу записей, но обычно -- несколько десятков. Единственное требование -- скорость выбора, желательно 700 циклов в секунду на десктопном компьютере. Опыта работы с БД нет.

Имеет ли смысл переносить всё на новый движок? Если да, то какой? Как реализовать таблицу iX-wX?
14 янв 11, 11:47    [10071316]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
tkzv, если работает и все проверено годами - лучше не ничего не менять
если есть проблемы или или будут в перспективе - тогда надо думать

в любом случае информации для совета недостаточно
14 янв 11, 12:24    [10071712]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tkzv
Member

Откуда:
Сообщений: 3142
SergSuper,

Нет, в любом случае надо менять, кроме того есть баги в процедуре создания БД.

Программа -- чья-то дипломная времён МС-ДОСа, занимаюсь этим чисто для развлечения. Какая ещё нужна информация?
14 янв 11, 12:35    [10071832]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
web_fox
Member

Откуда: Киев
Сообщений: 444
tkzv,

да ясный день надо менять на БД. Тем более вы этим занимаетесь для самообразования. Это просто шикарная возможность добавить опыта на невыдуманных задачах. Для образования лучше, что-то начиная с PostgreSQL (бесплатная, похожа на Oracle) и выше (т.е. не mysql и прочие sqlлайта, чтобы не сбить прицел). Для трудоустройства, скорее, лучше Oracle/MSSQL (платные, высоковостребованные).
14 янв 11, 13:29    [10072326]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
ДохтаР
Guest
Аффтар что то недоговаривает :)

tkzv
Есть программа на си.


Но
ни один известный мне компиллер это не не съест

short length1; /* длина 1-й строки */ 
char string1[length1]; /* 1-я строка */
...
Значит либо программы еще нет .
Либо TC знает Си хуже чем тот, кто писал диплом.

:)

зы ИМХО это офтопный вброс .
14 янв 11, 13:58    [10072585]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67390
Блог
tkzv
При заполнении базы программа по мере нахождения связей раздвигает записи и вставляет пары iX-wX.

Увольте такого программиста и никогда не берите такого на работу :)

tkzv
При этом возник вопрос: не будет ли лучше вместо возни с арифметикой пойнтеров взять какой-то готовый движок БД, например SQLite?

Cмотря с какой точки зрения "лучше". Для того, чтобы крутить данные объёмом от нескольких килобайт до нескольких мегабайт, использовать СУБД - дурная идея. Для того, чтобы написать ту же логику простым кодом в хранимой процедуре - может быть осмысленно, только тогда конечно не SQLite.
14 янв 11, 14:03    [10072621]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tkzv
Member

Откуда:
Сообщений: 3142
ДохтаР,

Я записал эту структуру так, чтобы было понятнее. Естественно, задавать размер массива переменной как выше нельзя. Реально там делается

char * Base;
Base = malloc(какое-то большое число);

и идёт работа с пойнтерами, указывающими куда-то в Base[].
14 янв 11, 14:50    [10073026]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tkzv
Member

Откуда:
Сообщений: 3142
softwarer
Увольте такого программиста и никогда не берите такого на работу :)
Обоснование в комментариях -- нужно меньше памяти, быстрее читается, чем альтернативы. База создаётся или модифицируется достаточно редко.

Да, изменять такую программу -- то ещё удовольствие :)

softwarer
Cмотря с какой точки зрения "лучше". Для того, чтобы крутить данные объёмом от нескольких килобайт до нескольких мегабайт, использовать СУБД - дурная идея.
С каких объёмов перестаёт быть дурной?

softwarer
Для того, чтобы написать ту же логику простым кодом в хранимой процедуре - может быть осмысленно, только тогда конечно не SQLite.
Где есть хранимые процедуры?
14 янв 11, 14:57    [10073089]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
roden
Member

Откуда:
Сообщений: 741
tkzv

softwarer
Для того, чтобы написать ту же логику простым кодом в хранимой процедуре - может быть осмысленно, только тогда конечно не SQLite.
Где есть хранимые процедуры?

Для РСУБД проще сказать где их нет.
Посмотрите здесь в разделе Other objects колонка Procedure
14 янв 11, 16:05    [10073804]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tkzv
Member

Откуда:
Сообщений: 3142
roden
Для РСУБД проще сказать где их нет.
Посмотрите здесь http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems в разделе Other objects колонка Procedure
:)

Спасибо. Нет в CUBRID, MS Access, MS SQL Server Compact, SQLite. 2-й всерьёз не рассматривал, про 1-й и 3-й впервые слышу :)

Что они дадут в моём случае? Только ускорение их обработки? Где про них лучше прочитать?
14 янв 11, 16:27    [10073978]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
ДохтаР
Guest
tkzv

char * Base;
Base = malloc(какое-то большое число);

.


В таком раскладе

tkzv
занимаюсь этим чисто для развлечения.

я бы рекомендовал Oracle.

tkzv
и идёт работа с пойнтерами, указывающими куда-то в Base


Похожим образом Oracle работает с SGA .
Это не Лари Элисона случайно диплом:)

При должном подходе и усидчивости у Вас есть шанс
сталь хорошим специалистом и в С и в oracle.
:)

з.ы. В каждой шуте есть доля шутки :)
з.ы.ы И всетаки Вы от нас что то скрываете .
14 янв 11, 16:47    [10074143]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tkzv
Member

Откуда:
Сообщений: 3142
ДохтаР
И всетаки Вы от нас что то скрываете .
Ага. На самом деле, программа была изначально на ассемблере, и только потом её перевели на си :)
14 янв 11, 17:41    [10074586]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
roden
Member

Откуда:
Сообщений: 741
tkzv

Спасибо. Нет в CUBRID, MS Access, MS SQL Server Compact, SQLite. 2-й всерьёз не рассматривал, про 1-й и 3-й впервые слышу :)

Что они дадут в моём случае? Только ускорение их обработки? Где про них лучше прочитать?

Кто они?
Если Вы об использовании хранимых процедур, то в большей степени это дополнительный опыт плюс последующее облегчение Вашего труда.
14 янв 11, 18:01    [10074778]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
ДохтаР
Guest
tkzv
ДохтаР
И всетаки Вы от нас что то скрываете .
Ага. На самом деле, программа была изначально на ассемблере, и только потом её перевели на си :)


Ну да , конечно ,
регулярные выражения ко всему прочему заявленному на асемблере ,
это не простой диплом,
Это минимум 5 человеко-семестров отладки :)

Я преклоняюсь перед усидчивостью этого студента ( автора диплома)
писавшего все перечисленное в первом посте темы на асемблере под ДОС-ом.


зы Хватит нас водить за нос :)
На паскале была программа , Да. ?
Дедал это ты ?

зыы Думаю жизнь когда то или отучит Вас врать.
14 янв 11, 18:26    [10074913]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
ОКТОГЕН
Member

Откуда:
Сообщений: 2496
ДохтаР, это не дедал, это
программист, которому достался его код в наследство.
14 янв 11, 19:20    [10075117]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tanglir
Member

Откуда:
Сообщений: 28966
ОКТОГЕН
ДохтаР, это не дедал, это
программист, которому достался его код в наследство.
логин от этого форума ему тоже в наследство достался? То-то я смотрю, годных вбросов в последнее время нету :))
14 янв 11, 19:30    [10075163]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tkzv
Member

Откуда:
Сообщений: 3142
ДохтаР
Дедал это ты ?
Нет, не он.

ДохтаР
регулярные выражения ко всему прочему заявленному на асемблере ,
Если быть точным, там несколько вариантов strncmp(), один из которых считает совпадающими определённые пары букв, по таблице. Так "ш" оказывалось эквивалентно "[жЖшШщЩ]". Как это реализовать иначе, чем через регулярное выражение?

ДохтаР
Это минимум 5 человеко-семестров отладки :)
Энтузиаст с большим опытом, значит. Там порядка 2000 строк ассемблера.

ДохтаР
Хватит нас водить за нос :)
Такую б настойчивость, да в мирных целях...
ДохтаР
На паскале была программа , Да. ?
А что такого страшного в паскале? Но нет, паскаля там нет и не было. Хотя сходство в структуре стрингов есть :)

ОКТОГЕН
это не дедал, это
программист, которому достался его код в наследство.
Да кто такой этот Дедал? Его имя в реале известно? Место учёбы? Вебсайт?

tanglir
логин от этого форума ему тоже в наследство достался?
Я сегодня здесь впервые зарегистрировался.
15 янв 11, 02:37    [10076698]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tkzv
Member

Откуда:
Сообщений: 3142
roden
Если Вы об использовании хранимых процедур, то в большей степени это дополнительный опыт плюс последующее облегчение Вашего труда.
Да, о них. Спасибо.
15 янв 11, 02:38    [10076699]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tanglir
Member

Откуда:
Сообщений: 28966
tkzv
ОКТОГЕН
это не дедал, это
программист, которому достался его код в наследство.
Да кто такой этот Дедал? Его имя в реале известно? Место учёбы? Вебсайт?
да всё про него известно и там, и здесь.
ЗЫ. Вы уж извините за тупой стёб
15 янв 11, 08:25    [10076781]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tkzv
Member

Откуда:
Сообщений: 3142
Итого пока насоветовали изучить для самообразования PostgreSQL и хранимые процедуры. Негусто, но сойдёт для начала.
18 янв 11, 23:33    [10093798]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
tkzv
Member

Откуда:
Сообщений: 3142
В другом месте подсказали: БД использует связи "от многих ко многим", следует все iX и wX вынести в отдельную таблицу, с 4 колонками: индекс, индекс в 1-ой таблице, iX, wX.
10 фев 11, 19:50    [10216809]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
Random_Goodman
Member [заблокирован]

Откуда:
Сообщений: 3708
tkzv
Итого пока насоветовали изучить для самообразования PostgreSQL и хранимые процедуры. Негусто, но сойдёт для начала.

Postgres для такой задачи слишком наворочен и медленнен. Имхо лучше что-то типа firebird.
10 фев 11, 20:00    [10216837]     Ответить | Цитировать Сообщить модератору
 Re: Имеет ли смысл связываться с БД?  [new]
Random_Goodman
Member [заблокирован]

Откуда:
Сообщений: 3708
сли для обучения - беритесь либо за MS SQL, либо за Оракл (не забудьте помолиться перед заплывом), короче что-то имеющее реальную востребованность на российском рынке.
10 фев 11, 20:02    [10216846]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить