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

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Написание СУБД или какую БД выбрать  (Прочитано 25221 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #15 : Сентябрь 18, 2007, 16:53 »

Соответственно для многопользовательской работы в сети тебе нужен запущенный сервер.
А прикрутить совсем просто - собираешь плагин и вперёд. ;-)
Прикрутить как раз таки не так легко. 2 дня пытался собрать плагин, да так и не собрал. Одна из проблем - либы в птице не подходят для mingw.
Всё довольно просто:
1) Ставишь себе птица полнстью (лучше SuperServer 2.0.1)
2) В директории $(QT4)\src\plugins\sqldrivers\ibase\ заменяешь файл ibase.pro на вот это:
Код:
TARGET	 = qsqlibase

HEADERS = ../../../sql/drivers/ibase/qsql_ibase.h
SOURCES = main.cpp \
  ../../../sql/drivers/ibase/qsql_ibase.cpp

unix:!contains( LIBS, .*gds.* ):!contains( LIBS, .*libfb.* ):LIBS    *= -lgds

win32:!contains( LIBS, .*gds.* ):!contains( LIBS, .*fbclient.* ) {
INCLUDEPATH += C:\Lang\Firebird\Firebird_2_0\include
LIBS += -LC:/Lang/Firebird/Firebird_2_0/lib
!win32-borland:LIBS *= -lfbclient_ms
win32-borland:LIBS  += fbclient_bor.lib
}

include(../qsqldriverbase.pri)
3) Меняешь пути в строках с INCLUDEPATH и LIBS на свои
4) Собираешь плагин и радуешься. ;-)

По поводу сервера и базы - ты можешь поставить сервер firebird-а на любую машину в сети.
Главное выбери такую чтоб сама машина была поживче, а её загрузка - поменьше.
Остальные будут обращаться к ней за данными.
А когда твоя система станет большой и необходимой всей конторе, у тебя появятся реальные доводы в споре с админом. ;-)
Попробовал собрать, но не получилось. Мне нужен статический плагин, поэтому конфигурю кутю с -qt-sql-ibase. Изменил ibase.pro как описано, но при сборке выпало с ошибкой. Подправил файлик src/sql/drivers/drivers.pri, т.е. прописал
INCLUDEPATH += C:\Lang\Firebird\Firebird_2_0\include
LIBS += -LC:/Lang/Firebird/Firebird_2_0/lib
!win32-borland:LIBS *= -lfbclient_ms
win32-borland:LIBS  += fbclient_bor.lib
Все собралось без проблем, но!!! Софтины, которые используют QtSql4.dll перестали запускаться. Т.е. что-то пошло не так и либа сформировалась неверно. Что делать???
Qt 4.3.1
Mastdie XP Pro
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Вячеслав
Гость
« Ответ #16 : Сентябрь 18, 2007, 19:08 »

Эта , никогда не приходилось работать с (не sql) 1с на сетевом диске ? Sqlite и то лучше .... А если как сказано много клиентов - сделать сначала времмено сервер БД на клиентской машине, а потом аднину по рогам настучать чтоб на сервер перенес  и бэкап настроил Подмигивающий
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #17 : Сентябрь 18, 2007, 20:06 »

Эта , никогда не приходилось работать с (не sql) 1с на сетевом диске ? Sqlite и то лучше .... А если как сказано много клиентов - сделать сначала времмено сервер БД на клиентской машине, а потом аднину по рогам настучать чтоб на сервер перенес  и бэкап настроил Подмигивающий
Твои бы слова...
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Tonal
Гость
« Ответ #18 : Сентябрь 18, 2007, 20:20 »

...Мне нужен статический плагин, поэтому конфигурю кутю с -qt-sql-ibase....
Все собралось без проблем, но!!! Софтины, которые используют QtSql4.dll перестали запускаться. Т.е. что-то пошло не так и либа сформировалась неверно. Что делать???
Для работы с Firebird нужна её клиентская dll-ка - fbclient.dll.
Если ты собрал статически, значит все проги использующие QtSql4.dll теперь требуют и fbclient.dll

Собирай драйвера баз плагинами - меньше головников. ;-)
Записан
Вячеслав
Гость
« Ответ #19 : Сентябрь 18, 2007, 22:22 »

Эта , никогда не приходилось работать с (не sql) 1с на сетевом диске ? Sqlite и то лучше .... А если как сказано много клиентов - сделать сначала времмено сервер БД на клиентской машине, а потом аднину по рогам настучать чтоб на сервер перенес  и бэкап настроил Подмигивающий
Твои бы слова...
После сдачи проекта в конце сентября могу помочь(настучать) благо настроение _уже_ соответствующее  Плачущий Плачущий...  Я просто намучился с базами данных на шарах, и _настоятельно_ не советую заниматься мазохизмом. Они(шары) оправданы(да и то с оговорками) для пары-тройки клиентов.. В общем IMHO я сказал - ставь птица и цепляйся через сеть к нему ....

ЗЫ Учти что он(птиц) версионник....
ЗЗЫ  И не связывайся с со смесью протоколов ....
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #20 : Сентябрь 19, 2007, 11:38 »

У нас на работе основная СУБД написана на фоксе и работает через шару. Улыбающийся Глючит страшно, но ничего не поделаешь.
Что значит версионник?
Tonal, спасибо, походу дело в этом. Завтра проверю.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Вячеслав
Гость
« Ответ #21 : Сентябрь 19, 2007, 15:07 »

Что значит версионник?
Грубо говоря - при изменении записи update создаеться новая версия записи, а старая помечаеться как мусор Подмигивающий В смысле (опять-таки грубо) не блокируеться чтение из таблицы другими клиентами ...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #22 : Сентябрь 19, 2007, 15:21 »

А зачем такой перерасход??? И как часто в таком случае ее паковать нужно???
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Вячеслав
Гость
« Ответ #23 : Сентябрь 19, 2007, 20:12 »

Для скорости однако Подмигивающий А пакуеться оно - во время бекапа..... И собственно перерасхода нет - оно повторно используеться Подмигивающий
Записан
Deiv
Гость
« Ответ #24 : Сентябрь 19, 2007, 21:48 »

Что значит версионник?
Грубо говоря - при изменении записи update создаеться новая версия записи, а старая помечаеться как мусор Подмигивающий В смысле (опять-таки грубо) не блокируеться чтение из таблицы другими клиентами ...

Прошу прощения что в этой теме задаю вопрос.
Но, если происходит одновременная запись в двух транзакциях одной области данных, как поступит версионник?
Я несколько лет работаю с блокировщиком, и поведение версионника у мя в голове не укладывается (крыша едет, в данном случае должна быть блокировка, по любому, иначе ж*па). Просто как раз вчера эту тему копал и внятного ответа не нашел. Получается любой версионник должен обладать возможностью делать блокировки? Верно?
Записан
Вячеслав
Гость
« Ответ #25 : Сентябрь 20, 2007, 09:42 »

Что значит версионник?
Грубо говоря - при изменении записи update создаеться новая версия записи, а старая помечаеться как мусор Подмигивающий В смысле (опять-таки грубо) не блокируеться чтение из таблицы другими клиентами ...

Прошу прощения что в этой теме задаю вопрос.
Но, если происходит одновременная запись в двух транзакциях одной области данных, как поступит версионник?
Я несколько лет работаю с блокировщиком, и поведение версионника у мя в голове не укладывается (крыша едет, в данном случае должна быть блокировка, по любому, иначе ж*па). Просто как раз вчера эту тему копал и внятного ответа не нашел. Получается любой версионник должен обладать возможностью делать блокировки? Верно?

Отож Подмигивающий ТОлько на уровне транзакций Подмигивающий Опять-таки в кратце при тупых установках параметров транзакций получиться следующее - кто влез первый обновит \ удалит объект , а второй получит по ушам от сервера - дабы нефиг Подмигивающий
Записан
Tonal
Гость
« Ответ #26 : Сентябрь 20, 2007, 11:05 »

Грубо версионник устроен так:
Каждая запись это список версий.
Версия привязана к транзакции её создавшей.
Когда транзакция читает данные - она берёт самую старшую видимую версию.
Когда меняет - создаёт новую версию.
Если на момент изменения есть другая версия от незавершённой транзакции случается облом.

Т.е. блокировки есть, но они не на всё время транзакции - очень короткие, только на время работы со списком версий.

Соответственно, только читающая транзакция вообще не создаёт версий и почти не использует блокировок.

В реальности всё несколько сложнее.
см http://www.ibase.ru/devinfo/mga.htm
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #27 : Сентябрь 20, 2007, 11:33 »

Ура!!! Заработало!!!
Придумал как кинуть базу на сервак - есть возможность запуска птицы как службы, а админ не настолько умный чтобы увидеть лишнюю службу.  Смеющийся Только нужно установить ее куда поглубже.
А теперь, уважаемые господа, помогите разобраться во всем этом. Улыбающийся
В общем поставил я на своей машине суперсервер и в течении 2 часов поковырял енту БД.
1. Соединяется только если указываешь логин и пароль.Грустный Если вшить в софтину login=SYSDBA и password=masterkey это не отразится на многопользовательской работе? Или нужно создать аккаунты?
2. Как сделать автоувеличение поля? У меня 20 таблиц с полем id INTEGER и мне нужно, чтобы они автоматом увеличивались.
3. Как сказать базе, что она работает в utf8 и нужно ли это?
4. Как указывать правильно хост? Сейчас стоит localhost, а как связаться с машиной \\server\ с айпихой 192.168.0.3?
5. Как работать с базой (т.е. как указывать имя) если она лежит на серваке на диске e:\arm\base.fdb?
6. Есть ли булевы значения?
7. Чем отличается CHAR от VARCHAR?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Вячеслав
Гость
« Ответ #28 : Сентябрь 20, 2007, 11:42 »

Для начала http://www.ibase.ru/develop.htm Там много вкусного дают Подмигивающий
Ура!!! Заработало!!!
Придумал как кинуть базу на сервак - есть возможность запуска птицы как службы, а админ не настолько умный чтобы увидеть лишнюю службу.  Смеющийся Только нужно установить ее куда поглубже.
А теперь, уважаемые господа, помогите разобраться во всем этом. Улыбающийся
В общем поставил я на своей машине суперсервер и в течении 2 часов поковырял енту БД.
1. Соединяется только если указываешь логин и пароль.Грустный Если вшить в софтину login=SYSDBA и password=masterkey это не отразится на многопользовательской работе? Или нужно создать аккаунты?
Да надо - по умолчанию sysdba может все - нафига юзверям давать возможности адина ?
2. Как сделать автоувеличение поля? У меня 20 таблиц с полем id INTEGER и мне нужно, чтобы они автоматом увеличивались.
заюзать ганераторы Подмигивающий НЕ делать id= select max(id) +1 !!!!!
3. Как сказать базе, что она работает в utf8 и нужно ли это?
По желанию .. при создании базы выбираеться кодировка и размер страницы бд
4. Как указывать правильно хост? Сейчас стоит localhost, а как связаться с машиной \\server\ с айпихой 192.168.0.3?
таки так и сказать Подмигивающий  db.setHostName("192.168.0.3");
5. Как работать с базой (т.е. как указывать имя) если она лежит на серваке на диске e:\arm\base.fdb?
посмотреть в сторону алиасов - нефиг полные имена светить (aliases.conf )
6. Есть ли булевы значения?
7. Чем отличается CHAR от VARCHAR?
6 - нет - легко заменяються на smallint
7- char всегда дополняються пробелами до своей длинны
 char(10) = 'aa        '  varchar(10) ='aa'
но varchar требует еще два байта под счетчик...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #29 : Сентябрь 20, 2007, 11:50 »

Нужно создавать отдельный генератор для каждого поля?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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