|
|
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
Есть программа на си. Она работает с базами данных в своём собственном формате. Структура записи примерно такая: 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.01.2011, 11:47 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
tkzv, если работает и все проверено годами - лучше не ничего не менять если есть проблемы или или будут в перспективе - тогда надо думать в любом случае информации для совета недостаточно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 12:24 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
SergSuper, Нет, в любом случае надо менять, кроме того есть баги в процедуре создания БД. Программа -- чья-то дипломная времён МС-ДОСа, занимаюсь этим чисто для развлечения. Какая ещё нужна информация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 12:35 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
tkzv, да ясный день надо менять на БД. Тем более вы этим занимаетесь для самообразования. Это просто шикарная возможность добавить опыта на невыдуманных задачах. Для образования лучше, что-то начиная с PostgreSQL (бесплатная, похожа на Oracle) и выше (т.е. не mysql и прочие sqlлайта, чтобы не сбить прицел). Для трудоустройства, скорее, лучше Oracle/MSSQL (платные, высоковостребованные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 13:29 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
Аффтар что то недоговаривает :) tkzv Есть программа на си. Но ни один известный мне компиллер это не не съест Код: plaintext 1. 2. Значит либо программы еще нет . Либо TC знает Си хуже чем тот, кто писал диплом. :) зы ИМХО это офтопный вброс . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 13:58 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
tkzvПри заполнении базы программа по мере нахождения связей раздвигает записи и вставляет пары iX-wX. Увольте такого программиста и никогда не берите такого на работу :) tkzvПри этом возник вопрос: не будет ли лучше вместо возни с арифметикой пойнтеров взять какой-то готовый движок БД, например SQLite? Cмотря с какой точки зрения "лучше". Для того, чтобы крутить данные объёмом от нескольких килобайт до нескольких мегабайт, использовать СУБД - дурная идея. Для того, чтобы написать ту же логику простым кодом в хранимой процедуре - может быть осмысленно, только тогда конечно не SQLite. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 14:03 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
ДохтаР, Я записал эту структуру так, чтобы было понятнее. Естественно, задавать размер массива переменной как выше нельзя. Реально там делается char * Base; Base = malloc(какое-то большое число); и идёт работа с пойнтерами, указывающими куда-то в Base[]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 14:50 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
softwarerУвольте такого программиста и никогда не берите такого на работу :) Обоснование в комментариях -- нужно меньше памяти, быстрее читается, чем альтернативы. База создаётся или модифицируется достаточно редко. Да, изменять такую программу -- то ещё удовольствие :) softwarerCмотря с какой точки зрения "лучше". Для того, чтобы крутить данные объёмом от нескольких килобайт до нескольких мегабайт, использовать СУБД - дурная идея. С каких объёмов перестаёт быть дурной? softwarerДля того, чтобы написать ту же логику простым кодом в хранимой процедуре - может быть осмысленно, только тогда конечно не SQLite. Где есть хранимые процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 14:57 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
tkzv softwarerДля того, чтобы написать ту же логику простым кодом в хранимой процедуре - может быть осмысленно, только тогда конечно не SQLite. Где есть хранимые процедуры? Для РСУБД проще сказать где их нет. Посмотрите здесь в разделе Other objects колонка Procedure ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 16:05 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
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.01.2011, 16:27 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
tkzv char * Base; Base = malloc(какое-то большое число); . В таком раскладе tkzvзанимаюсь этим чисто для развлечения. я бы рекомендовал Oracle. tkzvи идёт работа с пойнтерами, указывающими куда-то в Base Похожим образом Oracle работает с SGA . Это не Лари Элисона случайно диплом:) При должном подходе и усидчивости у Вас есть шанс сталь хорошим специалистом и в С и в oracle. :) з.ы. В каждой шуте есть доля шутки :) з.ы.ы И всетаки Вы от нас что то скрываете . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 16:47 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
ДохтаРИ всетаки Вы от нас что то скрываете . Ага. На самом деле, программа была изначально на ассемблере, и только потом её перевели на си :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 17:41 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
tkzv Спасибо. Нет в CUBRID, MS Access, MS SQL Server Compact, SQLite. 2-й всерьёз не рассматривал, про 1-й и 3-й впервые слышу :) Что они дадут в моём случае? Только ускорение их обработки? Где про них лучше прочитать? Кто они? Если Вы об использовании хранимых процедур, то в большей степени это дополнительный опыт плюс последующее облегчение Вашего труда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 18:01 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
tkzvДохтаРИ всетаки Вы от нас что то скрываете . Ага. На самом деле, программа была изначально на ассемблере, и только потом её перевели на си :) Ну да , конечно , регулярные выражения ко всему прочему заявленному на асемблере , это не простой диплом, Это минимум 5 человеко-семестров отладки :) Я преклоняюсь перед усидчивостью этого студента ( автора диплома) писавшего все перечисленное в первом посте темы на асемблере под ДОС-ом. зы Хватит нас водить за нос :) На паскале была программа , Да. ? Дедал это ты ? зыы Думаю жизнь когда то или отучит Вас врать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 18:26 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
ДохтаР, это не дедал, это программист, которому достался его код в наследство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 19:20 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНДохтаР, это не дедал, это программист, которому достался его код в наследство.логин от этого форума ему тоже в наследство достался? То-то я смотрю, годных вбросов в последнее время нету :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 19:30 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
ДохтаРДедал это ты ? Нет, не он. ДохтаРрегулярные выражения ко всему прочему заявленному на асемблере , Если быть точным, там несколько вариантов strncmp(), один из которых считает совпадающими определённые пары букв, по таблице. Так "ш" оказывалось эквивалентно "[жЖшШщЩ]". Как это реализовать иначе, чем через регулярное выражение? ДохтаРЭто минимум 5 человеко-семестров отладки :)Энтузиаст с большим опытом, значит. Там порядка 2000 строк ассемблера. ДохтаРХватит нас водить за нос :)Такую б настойчивость, да в мирных целях... ДохтаРНа паскале была программа , Да. ? А что такого страшного в паскале? Но нет, паскаля там нет и не было. Хотя сходство в структуре стрингов есть :) ОКТОГЕНэто не дедал, это программист, которому достался его код в наследство.Да кто такой этот Дедал? Его имя в реале известно? Место учёбы? Вебсайт? tanglirлогин от этого форума ему тоже в наследство достался? Я сегодня здесь впервые зарегистрировался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2011, 02:37 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
rodenЕсли Вы об использовании хранимых процедур, то в большей степени это дополнительный опыт плюс последующее облегчение Вашего труда. Да, о них. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2011, 02:38 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
tkzvОКТОГЕНэто не дедал, это программист, которому достался его код в наследство.Да кто такой этот Дедал? Его имя в реале известно? Место учёбы? Вебсайт?да всё про него известно и там , и здесь . ЗЫ. Вы уж извините за тупой стёб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2011, 08:25 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
Итого пока насоветовали изучить для самообразования PostgreSQL и хранимые процедуры. Негусто, но сойдёт для начала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2011, 23:33 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
В другом месте подсказали: БД использует связи "от многих ко многим", следует все iX и wX вынести в отдельную таблицу, с 4 колонками: индекс, индекс в 1-ой таблице, iX, wX. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 19:50 |
|
||
|
Имеет ли смысл связываться с БД?
|
|||
|---|---|---|---|
|
#18+
tkzvИтого пока насоветовали изучить для самообразования PostgreSQL и хранимые процедуры. Негусто, но сойдёт для начала. Postgres для такой задачи слишком наворочен и медленнен. Имхо лучше что-то типа firebird. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 20:00 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=37058745&tid=1552722]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 133ms |

| 0 / 0 |
