Варианты Portable SQL

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Варианты Portable SQL

Сообщение Игорь Столяров »

Привет всем !

Есть непреодолимое желание заменить драйвер TPS на что-то с поддержкой БД (в т.ч. SQL) для небольшой программки.
Но не хочется устанавливать многомегабайтную БД, т.е. хотелось бы т.к. называемую PORTABLE БД, которая будет работать везде.

Из известных мне вариантов БД (недостатки):

1. SQLite (только монопольный доступ к данным);
2. Btrieve 6.15 (не SQL и давно умер, точнее превратился в Pervasive.SQL)
3. MS Access Database (*.mdb) - можно работать через ADO (предустановленный ODBC)

Ну и конечно вопрос не гипотетический, а в контексте возможности работы с Clarion.
Есть ли еще варианты к рассмотрению ? Заранее спасибо ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
seawolf
Старожил
Сообщения: 213
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Варианты Portable SQL

Сообщение seawolf »

Наши желания похожи, но я пока альтернативу не видел. Sqilte и Firebird embeded только монопольный доступ и плюс еще для скажем sqilte открытость базы данных. Для небольших групп и офисов никак не катит. Ну а акссес вообще не вариант. Если база будет приличных размеров, то костыль сразу будет (причем даже если работать через DAO MDAC а не через ODBC/ADO)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Варианты Portable SQL

Сообщение Игорь Столяров »

Да, согласен, термин "embeded" здесь более уместен, чем "portable". Требуется именно "embeded БД SQL".
В принципе, можно реализовать некий менеджер запросов (например как службу или систему флагов) и
в этом случае SQLite вполне подойдет. Речь идет конечно о native драйвере SQLite, а не его реализации SV в C9/C10.
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Варианты Portable SQL

Сообщение kreator »

SQLLite, по-моему, не монопольный. Он просто ждёт окончания транзакции, почитайте кларионовский хелп. Я так понимаю при расшаренном доступе будет задержка при массовом апдейте и т.д.
Есть вариант MS SQL, "Personal" что ли. Бесплатный, только ограничение на 10 Гиг.
У нас на работе Firebird, не embedded. Перенесли на планшет. Всё путём. Достаточно легко ставится, админится, коннектится. Минус - по возможностям не чета грандам, развивается плохо (open source м.в.). Зато IBExpert (средство администрирование, программирования) - класс, может быть только TOAD сравнится по возможностям.
Ещё можно посмотреть на PostgreSQL. Конкурент Ораклу, но может есть что-то лёгкое. Мы туда тоже немного (совсем немного, в один глаз :mrgreen: ) смотрим, потому что Firebird уже не справляется. Но у нас тяжёлая база.
Ещё есть у Embarcadero бывшая борландовская база InterBase, она чисто embedded, но про бесплатность не уверен.
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Варианты Portable SQL

Сообщение gopstop2007 »

Пробовал Mysql - типа портабле(без инсталяции), правда размер 150 мб
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Варианты Portable SQL

Сообщение Игорь Столяров »

kreator писал(а): SQLLite, по-моему, не монопольный.
Может быть в Clarion реализовали какой-то менеджер транзакций ... но по паспорту SQLite - монопольная БД.
И я пробовал запустить две копии примера работы с SQLite в C9 - номер не прошел.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Варианты Portable SQL

Сообщение RaFaeL »

А тем не устраивает TPS для "небольшой программки"? Ладно бы, если для большой

По теме - даже не знаю что предложить. Разве что MSDE2000 (это компактный и бесплатный вариант MS SQL 2000), там можно написать скрипт скрытой установки, его даже какой-то из вариантов сетевого Касперского в свое время ставил (сейчас не знаю). Можно и SQL Express 2005 и выше, но там от 50 мб
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Варианты Portable SQL

Сообщение finsoftrz »

Не, sqlite не монопольная база. В ней используется полная блокировка доступа (и для читателей, и для писателей) при модификации. То есть кто-то начал что-то писать, остальные ждут. Читать одновременно могут все. В этом отличие от tps, в котором при записи блокируются только другие писатели, а читатели могут спокойно работать.

Я присоединюсь к вопросу, а в чем смысл менять tps для небольшой программы? Оно и на достаточно больших базах (несколько гигов) хорошо работает, только надо терминальным доступом ходить, а не напрямую по сетке.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Варианты Portable SQL

Сообщение Игорь Столяров »

finsoftrz писал(а): Я присоединюсь к вопросу, а в чем смысл менять tps для небольшой программы?
Все просто. Нельзя делать выборки данных по пользовательским SQL запросам,
а написать разбор синтаксиса SQL для TPS явно выше моих умственных способностей. ;)
Также хотелось бы получать выборки из БД без файлового доступа к серверу.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

Варианты Portable SQL

Сообщение RaFaeL »

Вроде как это умеет ODBC драйвер для TopSpeed
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Варианты Portable SQL

Сообщение kreator »

По поводу монопольности SQLite. Выдержка из хелпа (раздел "SQLite multi-user"):

Код: Выделить всё

Updating data with SQLite

You can access the same SQLite file from multiple processes.  However, only one process can write to the file at the same time.  Once a process has written to any table in the SQLite database file that process is the only process that can write to any table in that database. 

 
SQLite and Multithreading

SQLite is designed to be used on a single thread but he Clarion file driver overcomes this limitation as much as possible.  To make this work the driver has one limitation on usage.  Only one thread can be accessing the SQLite database while a transaction is active.  If another thread attempts to access an SQLite database and another thread is in the middle of a transaction, the non-transacting thread will wait until the transaction is completed..
И ещё вот какие мысли. Когда меня попросили посмотреть небезызвестный LeaderTask года 3 назад, а у них база на SQLite (причём открытая), я смотрел этот SQLite, тем более, что SV планировало сделать драйвер. Так вот, оказалось, что у него очень ограниченный функционал. Видимо, потому, что движка нет. Триггеры ущербные, хранимок принципиально нет. И я думал - а как использовать этот SQLite? Единственный плюс - поддержка SQL запросов. Вряд ли есть выигрыш по времени, выигрыш по безопасности по сравнению с TPS. Даже не знаю. Разработка должна быть ориентирована исключительно на единоличное использование и, наверно, на планшеты, смартфоны. С другими Embedded базами, думаю, такая же история.
И ещё по поводу пользовательских SQL-запросов. У нас в программе предусмотрена такая штука, но, похоже, ни разу не была востребована. Без подготовки не напишешь, особенно, если выборка больше, чем по двум таблицам. Нужно очень хорошо знать структуру данных, связи и т.д.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Варианты Portable SQL

Сообщение finsoftrz »

У sqlite по сравнению с tps нет ограничения на размер файла в 2гб. Была когда-то мысль приспособить под таблицы архивов в дополнение к tps. Например, у меня строчные части складских документов делятся на 2 таблицы, оперативную и архив. Сделано так, чтобы уменьшить модифицируемую таблицу и расширить ограничение до 4гб, отчеты обрабатывают их обе, незаметно для пользователя. Но пока и ограничений tps с запасом хватает, пользователи срезают базу раз в несколько лет.
Поэтому sqlite у меня используется только в вебе и мобильных приложениях. Получается удобно. В кларионовской программе полностью готовим все таблицы и заливаем их на сайт по ftp роботом. А php-скрипт на сайте уже с ними работает напрямую. Мобильное приложение тоже подгружает файлы sqlite с сайта и работает с ними без лишних телодвижений.
C6/C11, ШВС, tps/btrieve.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Варианты Portable SQL

Сообщение gopstop2007 »

finsoftrz писал(а):У sqlite по сравнению с tps нет ограничения на размер файла в 2гб. Была когда-то мысль приспособить под таблицы архивов в дополнение к tps....
интересно, а как преодолевали utf-8? :cat:
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Варианты Portable SQL

Сообщение finsoftrz »

Когда на сайт, то строки перекодируются с помощью класса Юры Философова. Работа с sqlite не через новый драйвер от sv, а через класс-обертку над sqlite3.dll (был в архивах на этом сайте).
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Варианты Portable SQL

Сообщение Игорь Столяров »

finsoftrz писал(а): Работа с sqlite не через новый драйвер от sv, а через класс-обертку над sqlite3.dll (был в архивах на этом сайте).
Аналогично ... :)
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить