Форум » LetoDB, HbNetio. » Leto DB Server (продолжение) » Ответить

Leto DB Server (продолжение)

alkresin: Только что открыл на Sourceforge новый проект - Leto DB Server - https://sourceforge.net/projects/letodb Это мультиплатформенный ( Windows, Unix/Linux ) сервер баз данных, предоставляющий клиентским программам доступ к dbf/cdx файлам, находящимся на удаленном сервере ( можно и на локальном компьютере запускать - в отладочных целях ). В общем, как ADS :). Проект - на стадии разработки, не все даже базовые функции еще реализованы, до оптимизации дело еще не дошло. Но работает :). Крутится у меня на сервере несколько дней, подключал до 15 клиентов, пока не падает. Мои программы работают с ним нормально. Преимущества по сравнению с обычным файл-сервером: 1) Безопасность - базы могут быть в каталоге, недоступном для клиентских компьютеров - никто их случайно не удалит и не повредит. 2) Поскольку базы открываются серверной программой, а не клиентской, ее целостности ничего не грозит при случайном отключении клиентского компьютера. 3) значительное уменьшение сетевого траффика. 4) Должен быть, по идее, выигрыш в скорости. 5) Возможность контроля за пользователями с помощью утилиты manage ( можно придумать и другие формы контроля ). 6) Можно будет сделать транзакции, stored procedures на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.

Ответов - 193, стр: 1 2 3 4 5 6 7 8 9 10 All

Pasha: Коннект устанавливается не с определенным каталогом, а с сервером, поэтому leto_connect и возвращает .t. Что касается leto_isdir(), то не хотелось бы загромождать сервер несвойственными ему операциями. Можно проверять наличие нужного файла в этом каталоге функцией leto_file() Если добавить leto_isdir(), то потом захочется еще и создавать/удалять каталоги :)

sashaBG: Ну размечтался я :) , Вы уж простите Паша! Я с Вами согласен на все 100 . Я вообще то мечтаю об Aplication Server но к сожалению в языке C не сильно соображаю. Надо наверное изучить работу с библиотекой SOCKET . Написать похожую на LetoDB программу и посылать ей команды на выполнение на серверном компе. Спасибо за Внимание !

Петр: Мечтать не вредно. ;) Год назад не было LetoDB, а теперь посмотрите harbour\contib\examples\uhttpd uHTTPD (Micro HTTP server) - http сервер написанный на Harbour, позволяющий запускать на исполнение предварительно откомпилированные hrb модули, использовать технологию AJAX. Почему б тогда о сервере приложений не помечтать ;) P.S. Судя по наличию ifdef _XHARBOUR_ с XHARBOUR автор сервер тоже тестировал.


gfilatov: Pasha пишет: Только теперь, я думаю, возникнет проблема сборки letodb для старых версий Харборов. После вчерашних исправлений А.Кресина сервер перестал собираться для новых SVN версий Харбора. Предлагаемое решение проблемы состоит в замене используемой Александром константы HB_VERSION_MT на !defined( HB_LEGACY_LEVEL )

Andrey: 1) Подскажите пожалуйста, потянет ли LetoDB 100 пользователей одновременно ? 2) Как реализовать работу LetoDB, если нужно 20 баз на отдельные предприятия ? Нужно будет запускать 20 СЕРВЕРОВ LetoDB на СЕРВЕРЕ ? А обычный 4-ядерник потянет столько задач одновременно ? 3) А как с защитой информации ? Взломать СЕРВЕР LetoDB смогут ли ? Заранее спасибо за ответы.

sashaBG: У меня получилось собрать LetoDB Ver 0.8 через Harbour 1.1.0dev (Rev. 10775) и BCC58 http://93.123.24.51/letodb.zip

gfilatov: Выложил компактную сборку Harbour Leto RDD build 0.8 (by Alexander S. Kresin) updated for Harbour 1.1.0dev по адресу: http://minigui.mylivepage.ru/file/?fileid=6953 Что нового: - введено частичное шифрование траффика (команда CRYPT_TRAFFIC=1 в ini файле) - добавлена аутентификация при подключении/работе к серверу: серверный ini файл может теперь иметь такие команды: PASS_FOR_LOGIN = 1 ( 0, если отключено ), если сервер требует аутентификация при подключении; PASS_FOR_MANAGE = 1, если соответствующие права необходимы для работы с данными; PASS_FOR_DATA = 1, если соответствующие права необходимы для записи данных. PASS_FILE - путь и имя файла аутентификации, по умолчанию "leto_users". - исправления для совместимости с различными версиями компилятора Harbour (до версии 1.0 или после версии 1.01)

Andrey: Блин, так и никто не ответил ! Ну хоть предположения свои выскажите .... 1) Подскажите пожалуйста, потянет ли LetoDB 100 пользователей одновременно ? 2) Как реализовать работу LetoDB, если нужно 20 баз на отдельные предприятия ? Нужно будет запускать 20 СЕРВЕРОВ LetoDB на СЕРВЕРЕ ? А обычный 4-ядерник потянет столько задач одновременно ? 3) А как с защитой информации ? Взломать СЕРВЕР LetoDB смогут ли ? Заранее спасибо за ответы.

Pasha: 1. Этот вопрос надо выяснить эмпирическим способом 2. Нет, достаточно запустить один сервер letodb 3. Александр совсем недавно добавил шифровку пакетов в letodb с помощью криптоалгоритма blowfish

alkresin: 1) Подскажите пожалуйста, потянет ли LetoDB 100 пользователей одновременно ? Работать-то будет, а вот насколько хорошо - зависит от характера работы пользователей. Если они в основном в Контакте сидят и только время от времени введут какой-нибудь документ, то, думаю, проблем не будет, а вот если все 100 или хотя бы половина из них все время кучу данных перемалывают, то, боюсь, будут задержки. 2) Как реализовать работу LetoDB, если нужно 20 баз на отдельные предприятия ? Нужно будет запускать 20 СЕРВЕРОВ LetoDB на СЕРВЕРЕ ? Один, конечно. 3) А как с защитой информации ? Взломать СЕРВЕР LetoDB смогут ли ? Хм... Сама концепция сервера позволяет хранить данные в месте, защищенном от посторонних, т.е. в каталоге, куда доступ ограничен - в этом случае безопасность хранения на сервере обеспечивается ОС и системным администратором. Доступ к данным при этом можно получить только из клиентских программ, скомпилированных для работы с letodb. Если использовать недавно реализованную систему аутентификации, то защита есть и с этой стороны. Сами пароли передаются зашифрованными. На мой взгляд, система достаточно надежна, хотя я не специалист в криптографии и говорить наверняка не могу.

Andrey: alkresin пишет: Доступ к данным при этом можно получить только из клиентских программ, скомпилированных для работы с letodb. А если кто-то на letodb создаст модуль работы с базами, сможет ли он испортить мои базы ? alkresin пишет: Если использовать недавно реализованную систему аутентификации, то защита есть и с этой стороны. Сами пароли передаются зашифрованными. А вот здесь поподробней пожалуйста ! И примеры тоже дайте пожалуйста... И еще САМАЯ БОЛЬШАЯ ПРОБЛЕМА !!! Можно ли организовать шифрование БД на сервере и передачу хотя бы текстовых данных через Интернет ЗАШИФРОВАННЫМИ, чтоб их потом можно было на клиенте РАСШИФРОВЫВАТЬ и использовать ???

alkresin: Andrey пишет: А если кто-то на letodb создаст модуль работы с базами, сможет ли он испортить мои базы ? Если не использовать систему аутентификации, то сможет. Если же вы поставите в letodb.ini на сервере PASS_FOR_DATA = 1, то изменить данные может только тот, кто вошел под своим именем и паролем и имеет права на запись. А если поставите PASS_FOR_LOGIN = 1, то и подсоединиться к серверу можно только указав правильные имя и пароль. Добавлять пользователей, менять пароли и права доступа можно из клиентской программы, используя функции: LETO_USERADD( cUser, cPassword [, cAccess] ) LETO_USERPASSWD( cUser, cPassword ) LETO_USERRIGHTS( cUser, cAccess ) Права доступа ( cAccess ) на данный момент включают в себя 3 позиции: административные ( права на добавление/изменение пользователей ), право на использование management функций ( программы manage.exe ) и право на запись; они задаются в виде строки из 3-х символов, каждый из которых - Y или N: "NNY", например, дает права на запись и отказывает в других правах. Прежде чем ставить PASS_FOR_ ... в letodb.ini, надо завести хотя бы одного пользователя с административными правами. Кстати, добавлять пользователей можно, используя консольную утилиту utils/manager/comsole.prg, там же можно посмотреть и примеры использования этих функций. Если система аутентификации работает, то в клиентской программе необходимо сначала присоединиться к серверу: leto_connect( cAddress, cUsername, cPassword ) Andrey пишет: И еще САМАЯ БОЛЬШАЯ ПРОБЛЕМА !!! Можно ли организовать шифрование БД на сервере и передачу хотя бы текстовых данных через Интернет ЗАШИФРОВАННЫМИ, чтоб их потом можно было на клиенте РАСШИФРОВЫВАТЬ и использовать ??? Над шифрованием БД надо думать, я не уверен, что средства Harbour позволяют это сделать. Такое шифрование должно быть встроено в RDD DBFCDX, ведь входящие в ядро RDD функции работы с индексами должны уметь расшифровывать данные. Но лично мне шифрование самой БД не представляется таким уж важным - поскольку данные можно поместить в каталог, доступный только администратору, посторонние без него не смогут до них добраться. Что касается шифрации траффика, то это уже есть. Просто добавьте CRYPT_TRAFFIC = 1 в letodb.ini. На данный момент шифруются данные, передаваемые с сервера клиенту. Данные от клиента к серверу я еще не шифровал - просто из-за лени :).

wad1: Шифрование таблиц средствами Harbour нормально работает при использовании SIXCDX. В Clipper мы применяли шифрованные таблицы на протяжении нескольких лет, и при переходе на Harbour критических затруднений не было.

alkresin: wad1 пишет: Шифрование таблиц средствами Harbour нормально работает при использовании SIXCDX. Я как-то пробовал шифровать таблицу средствами SIXCDX под Harbour, но что-то не получалось. А вот прямо сейчас - все вышло нормально. Так что, действительно, можно будет это дело использовать.

alkresin: Вопрос вдогонку: есть ли какие-нибудь особенности при использовании SIXCDX по сравнению с DBFCDX в Harbour, или все точно так же работает + какие-то дополнительные возможности ?

Pasha: alkresin пишет: есть ли какие-нибудь особенности при использовании SIXCDX по сравнению с DBFCDX в Harbour, или все точно так же работает + какие-то дополнительные возможности ? SIXCDX - это тот же DBFCDX, собранный с #define HB_SIXCDX Как правило, при такой сборке добавлены дополнительные возможности. ИМХО, не стоит шифровать БД непосредственно на сервере средствами SIXCDX. Только клиент letodb, имеющий права доступа к БД, будет иметь возможность получить данные из таблиц DBF. А уж какими средствами сервер это обеспечивает - это дело сервера. Шифрование таблиц здесь излишне.

wad1: Дополнительных возможностей пока не обнаружили (не особенно искали), а по поводу особенностей: 1 - В Clipper'е ПЕРЕДоткрытием таблицы нужно было установить Sx_setPass(), а в Harbоur'е - ПОСЛЕ открытия. 2 - В Harbour'е не получилось заставить работать функцию Sx_SetScope(). Все заработало после замены этой функции на OrdScope(). Хотя к шифрованию это отношения конечно не имеет.

Andrey: wad1 пишет: Шифрование таблиц средствами Harbour нормально работает при использовании SIXCDX. В Clipper мы применяли шифрованные таблицы на протяжении нескольких лет, и при переходе на Harbour критических затруднений не было. А можно пример простой показать ? И будет ли под хХарбором это работать ? Заранее спасибо !

alkresin: Andrey пишет: А можно пример простой показать ? Вот так шифруется таблица : Function Main REQUEST SIXCDX RDDSETDEFAULT( "SIXCDX" ) sx_SetPass( "Test" ) use joupk new exclusive sx_DBFEncrypt() reindex return В xHarbour RDD такое же, как в Harbour, так что должно и там работать.

alkresin: Выложен очередной релиз - build8. Он содержит несколько исправлений, в том числе важных. Добавлена обработка internal error - такие возникают иногда при повреждении данных. Теперь сервер при таком событии закрывает все таблицы и записывает в letodb_crash.log информацию о том, какой >pth это натворил и с каким файлом. В management утилитах теперь еще больше статистики. Добавлена функция leto_IsFltOptim() - она возвращает .T., если текущий фильтр исполняется на сервере.



полная версия страницы