Страница 1 из 8

Варианты Portable SQL

Добавлено: 15 Октябрь 2015, 9:20
Игорь Столяров
Привет всем !

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

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

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

Ну и конечно вопрос не гипотетический, а в контексте возможности работы с Clarion.
Есть ли еще варианты к рассмотрению ? Заранее спасибо ! :)

Варианты Portable SQL

Добавлено: 15 Октябрь 2015, 10:18
seawolf
Наши желания похожи, но я пока альтернативу не видел. Sqilte и Firebird embeded только монопольный доступ и плюс еще для скажем sqilte открытость базы данных. Для небольших групп и офисов никак не катит. Ну а акссес вообще не вариант. Если база будет приличных размеров, то костыль сразу будет (причем даже если работать через DAO MDAC а не через ODBC/ADO)

Варианты Portable SQL

Добавлено: 15 Октябрь 2015, 10:31
Игорь Столяров
Да, согласен, термин "embeded" здесь более уместен, чем "portable". Требуется именно "embeded БД SQL".
В принципе, можно реализовать некий менеджер запросов (например как службу или систему флагов) и
в этом случае SQLite вполне подойдет. Речь идет конечно о native драйвере SQLite, а не его реализации SV в C9/C10.

Варианты Portable SQL

Добавлено: 15 Октябрь 2015, 10:52
kreator
SQLLite, по-моему, не монопольный. Он просто ждёт окончания транзакции, почитайте кларионовский хелп. Я так понимаю при расшаренном доступе будет задержка при массовом апдейте и т.д.
Есть вариант MS SQL, "Personal" что ли. Бесплатный, только ограничение на 10 Гиг.
У нас на работе Firebird, не embedded. Перенесли на планшет. Всё путём. Достаточно легко ставится, админится, коннектится. Минус - по возможностям не чета грандам, развивается плохо (open source м.в.). Зато IBExpert (средство администрирование, программирования) - класс, может быть только TOAD сравнится по возможностям.
Ещё можно посмотреть на PostgreSQL. Конкурент Ораклу, но может есть что-то лёгкое. Мы туда тоже немного (совсем немного, в один глаз :mrgreen: ) смотрим, потому что Firebird уже не справляется. Но у нас тяжёлая база.
Ещё есть у Embarcadero бывшая борландовская база InterBase, она чисто embedded, но про бесплатность не уверен.

Варианты Portable SQL

Добавлено: 15 Октябрь 2015, 10:53
gopstop2007
Пробовал Mysql - типа портабле(без инсталяции), правда размер 150 мб

Варианты Portable SQL

Добавлено: 15 Октябрь 2015, 11:00
Игорь Столяров
kreator писал(а): SQLLite, по-моему, не монопольный.
Может быть в Clarion реализовали какой-то менеджер транзакций ... но по паспорту SQLite - монопольная БД.
И я пробовал запустить две копии примера работы с SQLite в C9 - номер не прошел.

Варианты Portable SQL

Добавлено: 15 Октябрь 2015, 11:40
RaFaeL
А тем не устраивает TPS для "небольшой программки"? Ладно бы, если для большой

По теме - даже не знаю что предложить. Разве что MSDE2000 (это компактный и бесплатный вариант MS SQL 2000), там можно написать скрипт скрытой установки, его даже какой-то из вариантов сетевого Касперского в свое время ставил (сейчас не знаю). Можно и SQL Express 2005 и выше, но там от 50 мб

Варианты Portable SQL

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

Я присоединюсь к вопросу, а в чем смысл менять tps для небольшой программы? Оно и на достаточно больших базах (несколько гигов) хорошо работает, только надо терминальным доступом ходить, а не напрямую по сетке.

Варианты Portable SQL

Добавлено: 15 Октябрь 2015, 15:53
Игорь Столяров
finsoftrz писал(а): Я присоединюсь к вопросу, а в чем смысл менять tps для небольшой программы?
Все просто. Нельзя делать выборки данных по пользовательским SQL запросам,
а написать разбор синтаксиса SQL для TPS явно выше моих умственных способностей. ;)
Также хотелось бы получать выборки из БД без файлового доступа к серверу.

Варианты Portable SQL

Добавлено: 15 Октябрь 2015, 16:01
RaFaeL
Вроде как это умеет ODBC драйвер для TopSpeed

Варианты Portable SQL

Добавлено: 16 Октябрь 2015, 1:23
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-запросов. У нас в программе предусмотрена такая штука, но, похоже, ни разу не была востребована. Без подготовки не напишешь, особенно, если выборка больше, чем по двум таблицам. Нужно очень хорошо знать структуру данных, связи и т.д.

Варианты Portable SQL

Добавлено: 16 Октябрь 2015, 9:49
finsoftrz
У sqlite по сравнению с tps нет ограничения на размер файла в 2гб. Была когда-то мысль приспособить под таблицы архивов в дополнение к tps. Например, у меня строчные части складских документов делятся на 2 таблицы, оперативную и архив. Сделано так, чтобы уменьшить модифицируемую таблицу и расширить ограничение до 4гб, отчеты обрабатывают их обе, незаметно для пользователя. Но пока и ограничений tps с запасом хватает, пользователи срезают базу раз в несколько лет.
Поэтому sqlite у меня используется только в вебе и мобильных приложениях. Получается удобно. В кларионовской программе полностью готовим все таблицы и заливаем их на сайт по ftp роботом. А php-скрипт на сайте уже с ними работает напрямую. Мобильное приложение тоже подгружает файлы sqlite с сайта и работает с ними без лишних телодвижений.

Варианты Portable SQL

Добавлено: 16 Октябрь 2015, 11:24
gopstop2007
finsoftrz писал(а):У sqlite по сравнению с tps нет ограничения на размер файла в 2гб. Была когда-то мысль приспособить под таблицы архивов в дополнение к tps....
интересно, а как преодолевали utf-8? :cat:

Варианты Portable SQL

Добавлено: 16 Октябрь 2015, 12:29
finsoftrz
Когда на сайт, то строки перекодируются с помощью класса Юры Философова. Работа с sqlite не через новый драйвер от sv, а через класс-обертку над sqlite3.dll (был в архивах на этом сайте).

Варианты Portable SQL

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