Форум » 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 на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.

Ответов - 316, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All

Pasha: Если открывается таблица, уже открытая другим пользователем, то после открытия надо делать go top. Сейчас пользователю передается запись, которая является текущей для другого пользователя, что не хорошо. Вечером скину изменение на CVS

Pasha: Второй раз сталкиваюсь с ситуацией, когда на win98 невозможно соединиться с сервером. leto_connect дает ошибку. Попробовал использовать другой порт - результат тот же. При этом соседние компьютеры с win98/xp работают нормально В первом случае переустановил windows, поставил xp, и вопрос был исчерпан. Но не всегда возможно поставить xp, если win98 лиценционный. Второй случай совсем непонятный. Компьютер с win98 несколько недель успешно проработал с letodb, и после безобидной операции: удаление планировщика drweb и очистка корзины перестал соединяться с leto. Переустановка windows 98 поверх не помогла. Полная переустановка думаю поможет, но хотелось бы разобраться, в чем дело. Где можно копать в 98-й ? Какие средства отвечают за работу с сокетами ? Что можно посмотреть в реестре ? Какую диагностику выдать в клиенте leto ?

alkresin: Хм... Я с таким не сталкивался, хотя у меня на работе компьютеров с win98 больше десятка. А сеть на них работает нормально ? Ping проходит ? Если сервер пингуется, я не вижу ни одной причины, почему может быть проблема с соединением. У меня немало случаев, когда сетевые средства windows отказывают - компьютер перестает быть виден в сети, проходит только ping - но letodb работает при этом нормально.


Pasha: Да, пинг работает, и раньше соединение с сервером было по айпи адресу, и успешно работало. Деинсталляция антивируса тоже ничего не дала. Брандмауэра на 98-й нет.

alkresin: Попробуйте в leto_ConnectionNew() leto_writelog'и расставить, чтобы установить - это connect не работает или команда intro; не отрабатывает

Pasha: Уже ставил, в первом случае. Не работает connect. Во втором случае не пробовал.

Andrey: Pasha пишет: Второй раз сталкиваюсь с ситуацией, когда на win98 невозможно соединиться с сервером. А win98 какой ? Если не SE то надо бы ставить от DELPHI пакет для SOKET'oв. В свое время намучился с ним.

Pasha: se конечно. А что за пакет такой и при чем тут delphi ?

alkresin: Попробуйте приконнектиться к серверу телнетом: telnet.exe _ip_address_ _port_ С командами только поосторожнее - я тут сейчас попробовал intro; выдать - сервер рухнул ( надо проверить, почему - ошибка в командной строке не должна к такому приводить ).

AlexMyr: alkresin пишет: цитата: Как узнать права юзера под которым зашел на сервер (ф-я leto_MgGetUsers() возвращает IP)? В данный момент - никак. Надо будет добавить функцию. Александр! большое спасибо, с функцией нормально все проходит. Но! Если я забыл проверить права юзера и он редактирует данные, то получаем ошибку Error LETO/1021 Ощибка в типе данных Called from DBUNLOCK(0) Called from HBROWSE:EDIT(3153) Called from HBROWSE:ONEVENT(551) Called from HWG_ACTIVATEMAINWINDOW(0) Called from HMAINWINDOW:ACTIVATE(355) Called from MAIN(116) HwGUI 2.17 Harbour 2.1.0beta2 (Rev. 15011) Date:08.07.2010 Time:08:30:50 Надо серверу либо тихо пропустить попытку юзера что-то изменить, либо выдать сообщение типа "Редактирование запрещено!"

alkresin: Надо серверу либо тихо пропустить попытку юзера что-то изменить, либо выдать сообщение типа "Редактирование запрещено!" Выдачу сообщения я не очень себе представляю. Как клиент будет обрабатывать такое сообщение ? Будете ставить BEGIN SEQUENCE ... END SEQUENCE на каждый REPLACE ? А молча не записать - не уверен, что это правильно. Вот аналогия - если мы открываем dbf как readonly, а потом пытаемся туда записывать данные, то Clipper/Harbour выдает как раз ошибку записи.

Pasha: Telnel тоже не коннектился. Попытки найти повреждения в dll, относящихся к winsock, в соответвующих ветках реестра ничего не дали. Socket не соединяется - и хоть ты тресни Но людям то работать надо, поэтому изыскания пришлось прекратить, переустановить win98, и вопрос был исчерпан

Pasha: Возникает потребность кроме доступа к БД иметь еще доступ к метаданным, находящимся на сервере: у настройкам, скриптам, файлам hrb, тем же отчетам fastreport. В связи с этим возникает соблазн сделать аналог файлового доступа через leto: fopen - fread - fclose. Мне было бы достаточно доступа только на чтение, но неизбежно возникнет соблазн сделать и аналог fwrite. В связи с этим вопрос: а стоит ли ? Сделать то это легко, но надо ли ?

AlexMyr: Pasha пишет: Возникает потребность кроме доступа к БД иметь еще доступ к метаданным, находящимся на сервере Тоже есть необходимость доступа к текстовым файлам (нужно передавать их от клиента к клиенту, сейчас просто расшарил папку на сервере с текст. файлами), но мне кажется, что это задача не для leto. Сейчас по немногу экспериментирую с библиотекой hbtip и ftp-сервером для этих целей.

Pasha: Впечатления от letodb у меня самые благоприятные. Работает надежно. Если установлен на постоянно включенном компьютере - не свалился ни разу. Было выявлено несколько ошибок и несовместимостей с dbfcdx, практически обо всех я здесь писал, и все они были моментально устранены. Конечно, функциональная совместимость с dbfcdx не 100%, но близко от того. Да и 100%-й совместимости не будет. Впечатления у пользователей: там, где обьемы БД значительные и критична производительность: "Стало намного быстрее". Конечно, я кое-что специально оптимизировал

Наиль: alkresin пишет: Может, проблема, действительно, в недрах реализации ip в SP1 Раньше у меня был SP2. Сначала я грешил, на глюки официального ICQ, когда он проработав 2-3 дня съедал всю память моего компьютера, но когда обнаружил, что MailAgent ведёт себя идентично, то пришёл к выводу, что это всё-таки винда виновата. Pasha пишет: В связи с этим возникает соблазн сделать аналог файлового доступа через leto: fopen - fread - fclose. В связи с этим вопрос: а стоит ли ? Если бы leto был поделкой ради забавы, тогда, может, и стоило бы. А серьёзный продукт должен обеспечивать безопасность. А это значит настройка прав доступа на стороне сервера средствами Leto. Хотя ftp не является оптимальным по требованиям безопасности, но он лучше всего подходит для подобной задачи. Даже лучше, чем расшаривание папок, хотя расшаривание самое удобное. Конечно, возможна прямая передача данных через сокеты, но решение о том, какие данные должны передаваться, должен решать только сервер.

Pasha: Наиль пишет: Если бы leto был поделкой ради забавы, тогда, может, и стоило бы. А серьёзный продукт должен обеспечивать безопасность. А это значит настройка прав доступа на стороне сервера средствами Leto. Хотя ftp не является оптимальным по требованиям безопасности, но он лучше всего подходит для подобной задачи. Даже лучше, чем расшаривание папок, хотя расшаривание самое удобное. Конечно, возможна прямая передача данных через сокеты, но решение о том, какие данные должны передаваться, должен решать только сервер. Вопрос не в безопасности. Права доступа можно обеспечить теми же средствами, какие уже имеются в leto. Вопрос в другом. Сейчас доступ к таким данным можно обеспечить, скажем, через hbnetio. Но тогда возникает вопрос: зачем иметь 2 соединения, 2 сервера, отдельно настраивать для каждого права, когда лучше иметь все это в одном флаконе

Pasha: Кстати, насколько реальна идея скрестить ужа с ежом, т.е использовать netio в качестве транспортного протокола для letodb ?

Pasha: Подзабыл C. Какой предел у malloc для выделения памяти в 32-х битных системах ? 64K ? Не будет ли переполнения SkipBuf, если значение достаточно большое ? Захотелось вот получать всю выборку одним пакетом: LETO_SETSKIPBUFFER(1000) dbEval(...) LETO_SETSKIPBUFFER(10) и возникли сомнения... Может заменить на hb_xgrab ? В связи с этим возникла мысль паковать большие пакеты при передаче

Pasha: Смотрю: #define HB_SENDRECV_BUFFER_SIZE 16384 т.е. сейчас пакет не может быть больше 16К ?



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