Russian Qt Forum
Сентябрь 22, 2024, 10:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Выбор СУБД  (Прочитано 26427 раз)
ритт
Гость
« Ответ #30 : Октябрь 24, 2008, 15:04 »

нашёл где говорилось про расширенный SQLite: http://www.hwaci.com/sw/sqlite/prosupport.html
возможно что-то изменилось, а может быть я просто запамятовал - при включённом шифровании предсказывается падение производительности примерно вдвое...
данное расширение доступно только за единоразовую выплату 2килобаксов, но имеется небольшая вероятность договориться о скидке с автором напрямую...
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #31 : Октябрь 25, 2008, 22:23 »

Вставлю свои пять копеек.

В любом случае, какую бы базу ты не выбрал, рекомендую внутри своей программы сделать промежуточный класс/набор функций, который будет вначале как минимум тупо перетранслировать SQL запросы в саму SQL систему и обратно. И все SQL запросы в программе писать не напрямую, используя API выбраной SQL системы, а через вот такой промежуточный класс. Ну, и стараться не пользоваться уникальными для конкретной SQL системы запросами, только стандартными.

Таким образом, ты всегда сможешь лехко перейти с одной БД на другую, подправив только промежуточные функции. Плюс, у тебя будет точка управления SQL запросами. А замедления работы из-за такой реализации, практически не будет. Можешь кстати посмотреть, как Котеров сделал свой DbSimple (dklab.ru), на сях делать что-то подобное не обязательно, просто посмотри прототипы его абстрагирующих функций. Именно такой вид будет удобно использовать для своих промежуточных функций.
Записан

Собираю информацию по крупицам
http://webhamster.ru
Rcus
Гость
« Ответ #32 : Октябрь 25, 2008, 23:09 »

Смысл создавать еще один слой совместимости если об этом уже позаботились создатели QT включив в состав модуль QtSql.

А вот с возможностью перехода не все так просто. СУБД выбирают по разным критериям, например легкая интеграция в домен MSSQL, скорость обработки данных Oracle, возможности по работе с нестандартными типами PostgreSQL. Но процедурные расширения языка у всех субд разные (есть стандарт SQL/PSM, но появился он относительно поздно), так что легкого перехода в любом случае не будет.
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #33 : Октябрь 26, 2008, 12:34 »

Смысл создавать еще один слой совместимости если об этом уже позаботились создатели QT включив в состав модуль QtSql.

Ну модуль этот поддерживает не все базы данных, о которых говорилось здесь.

IBM DB2
Borland InterBase Driver
MySQL Driver
Oracle Call Interface Driver
ODBC Driver (includes Microsoft SQL Server)
PostgreSQL Driver
SQLite version 3 or above
SQLite version 2
Sybase Adaptive Server

Например, FireBird в списке нету, хотя, наверно через ODBC его можно использовать. Под виндой. А под линухом что делать, если разработчик хочет кросплатформенности?

Но я вообще-то говорю о другом. QtSql - это по большей части модуль абстракции SQL запросов. А я говорю про точку управления, через которую проходят все действия с SQL запросами. Можно конечно унаследоваться от QSqlDatabase, QSqlQuery и т.д., пожалуйста, но точку управления нужно иметь свою, которую легко менять и адаптировать к изменяющимся условиям.
Записан

Собираю информацию по крупицам
http://webhamster.ru
ритт
Гость
« Ответ #34 : Октябрь 26, 2008, 13:01 »

фб - это то же ибэйз. и в доках даже имеются указания как собирать с птичкой.
наследоваться от QSqlDatabase, QSqlQuery бесполезно, т.к. это всего лишь обёртки, в частности не имеющие даже ни одного виртуального метода.
у меня есть класс - собрат QSqlTableModelPrivate, но предназначенный не для выборки/хранения, а для подготовки/выполнения бд-независимых запросов к таблице...можно его считать "точкой управления"? или "точка" должна ещё знать всякие ширпотребные СП/СФ, особенности GROUP BY и т.п.?
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #35 : Октябрь 26, 2008, 14:13 »

Я приведу пример из практики, правда немного из другой области, но суть остается та же. Делаем мы системы для интерактивных киосков. И вот с производства приходит заявка - сделать возможность настройки киосковых программ так, чтоб все изображение было кверхногами. Там какая-то залипуха с корпусами и новыми мониторами, в обычном положении они не влазят, а в перевернутом - влезают.

У одного товарища программа была вся сделана через один рендер. Он быстро переделал переворот экрана.

У меня было несколько рендеров - рендер трехмерки, рендер шрифтов, рендер спрайтов, и в каждом рендере свои установки для OpenGL матриц и причие специфичные настройки GL контекста. Но я тоже быстро переделал переворот экрана и задумался, а не доделать ли все до конца, и сделать один рендер?

А у другого товарища весь вывод графики размыт по коду и сделан прямыми OpenGL командами, работа шла с абсолютными координатами. Он долбался долго, то один элемент у него не там появится, то другой, то что-то повернуто не так, то исчезает с экрана. Уже хотели ему советовать оставить как есть, только рендерить в память, потом захватывать картинку в текстуру и выдавать перевернутой. Но оказалось что такое решение заметно тормозит. В конце концов перец вроде сделал что нужно, но код превратился вааще в кашу.

Вот от такого развития событий (только с SQL-командами) я и предостерегаю автора топика. Без точек управления проект расползётся так, что модифицировать и развивать его будет большой проблемой.
Записан

Собираю информацию по крупицам
http://webhamster.ru
ритт
Гость
« Ответ #36 : Октябрь 26, 2008, 15:13 »

из данного поста делаю вывод, что мой вспомогательный класс вполне можно назвать "точкой управления" Улыбающийся
я же позиционирую его как "хэлпер" - обёртку над QSqlDriver, позволяющую заменить десятки строк кода на пару строк и получить на выходе абсолютно тот же результат...

пример выше неадекватен в случае скл, т.к. в кутэ имеется QSqlDriver, который содержит ряд методов для построения бд-независимых запросов и манипулации данными - строить все запросы через эти методы - и не придётся ползать по коду и, к примеру, квотить имена таблиц/полей по правилам какой-то другой бд...
правда, есть серьёзный минус в QSqlDriver - напроч отсутствует возможность работы с СП/ЮДФ и т.п. посредством стандартных методов Грустный - в таких случаях всё-равно придётся писать "голые" запросы и править их потом в случае необходимости...
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #37 : Октябрь 30, 2008, 12:07 »

нашел тут в тему про 2000 баксовый драйвер sqlite

Цитировать
_**://www.nulled.ws/showthread.php?t=37558
Сабж: есть приложение которое работает с файлом базы данных. 95% что база данных SQLLite. База зашифрованна (в зашифрованном архиве) и вскрыть его (архив) не получается. В самом архиве по коственным данным база не шифруется. Приложение работает с несколькими такими базами и при работе с каждой из них оно загружает всю базу в оперативку. Это костаенные данные но вероятность их около 95% тоже. Нужно как то сделать дамп из оперативки всей области памяти занятой процессом этого приложения.
Знает ли кто-нибудь софт под это дело? Единственное что я знаю это что можно делать полный аварийный дамп памяти и в принцепе пердставляю как это сделать. Но если таким образом делать дамп процесса со всеми базами которые мне нужны то к финалу есть вероятность что комп сдохнет от моих аварийных завершений его работы
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.14 секунд. Запросов: 23.