On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
alkresin
moderator


Пост N: 31
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 31.01.08 11:36. Заголовок: Leto DB Server(продолжение)


Только что открыл на 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 на Харборе, ... и вообще все в наших руках :).

Кто хочет участвовать в разработке, тестировании - пишите.



Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]


Pasha
Администратор




Пост N: 1706
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 03.12.10 14:31. Заголовок: В команде USE / функ..


В команде USE / функции dbUseArea указывать параметры соединения обязательно, хотя бы затем, что программа (клиент) должна иметь возможность открывать файлы на нескольких серверах letodb

Можете написать свою функцию, скажем leto_UseArea, которая добавляла бы к имени таблицы префикс - параметры соединения по умолчанию.
Или сделайте свою команду USE вместо стандартной, в которой тоже поставлялись бы параметры соединения.

Спасибо: 0 
Профиль
sashaBG
постоянный участник




Пост N: 76
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 12.12.10 19:02. Заголовок: leto_dbcopy


Letodb собран с xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6755)

если в test_tr.prg заменить строку создания TEST.DBF на:
dbCreate(cPath + 'test', {{'Code','N',2,0},{'Name','C',20,0},{'Name2','C',20,0},{'Name3','C',20,0},{'Name4','C',20,0},{'Name5','C',20,0}},, .T.)
сервер падает не генерируя краш репорт
это происходит после добавления {'Name5','C',20,0}
с 5 пoлями работает .

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1714
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.12.10 21:16. Заголовок: Поправил. Проверьте ..


Поправил. Проверьте пожалуйста.

Спасибо: 0 
Профиль
sashaBG
постоянный участник




Пост N: 77
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 15.12.10 21:59. Заголовок: Не качается с SVS a


Паша Вы сделали COMMIT , последнее что у меня есть:
/* $Id: Changelog,v 1.330 2010/11/18 18:45:50 ptsarenko Exp $ */

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1715
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.12.10 22:06. Заголовок: Да, сделал. Просто к..


Да, сделал. Просто коммит видно не сразу, а сюда я написал буквально в ту же минуту

Спасибо: 0 
Профиль
sashaBG
постоянный участник




Пост N: 78
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 16.12.10 20:49. Заголовок: Все работает !


Сделал тест под Harbour (15953) и под xHarbour (6755) РАБОТАЕТ
Спасибо Паша !

Кстати в letodbtray но для моего проекта е сделал исправление :
потому что Letodb падает из за постоянного подключение и отключения
я в цикле по таймеру сделал възов функцию IsAlive() вместо IsConnected():

FUNCTION IsAlive()
Return leto_file( _Server+"USER.DBF" )

и таким образом серввер не падает.

но для общего использования она не подойдет , нельзя ли сделать на C leto_islive() ?

И еще интересное наблюдение : на серверах ( я пробую на windows Serwer 2008 ) скорость работы letodb заметно ниже чем на обычном XP
процессор на сервере нагружается небольше 5% а под XP и Win7 доходит до 60% и больше , наверное ето потому что letodb не серверны процес.



Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1718
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.12.10 21:35. Заголовок: Вместо проверки суще..


Вместо проверки существования файла лучше использовать вызов:

lConnected := ! Empty(Leto_MgGetInfo())


Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 476
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 04.01.11 13:36. Заголовок: Pasha пишет: коммит..


Pasha пишет:

 цитата:
коммит видно не сразу


Паша, растолкуйте, плиз.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1755
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.01.11 14:04. Заголовок: PSP пишет: Pasha пи..


PSP пишет:

 цитата:
Pasha пишет:

цитата:
коммит видно не сразу



Паша, растолкуйте, плиз.



Имеется в виду коммит на CVS. Если делать чекаут от анонимуса, то последние коммиты видно не сразу, а через некоторое время, может даже через несколько часов. А чекаут от имени девелопера видит сразу все обновления других девелоперов.

Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 477
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 04.01.11 14:37. Заголовок: Ясно. Просто у меня ..


Ясно. Просто у меня че-то данные не сразу становятся видны после транзакции. Пока не понял почему...

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1759
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.01.11 10:23. Заголовок: PSP пишет: Просто у..


PSP пишет:

 цитата:
Просто у меня че-то данные не сразу становятся видны после транзакции. Пока не понял почему...



Во время транзакции или после коммита ? Если во время транзакции, то мы с Александром эту тему уже обсуждали. Вкратце: до коммита транзакция хранится на клиенте, и, если при этом получать данные с сервера, то будут переданы еще не измененные данные.

Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 478
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 05.01.11 10:55. Заголовок: Pasha пишет: до ком..


Pasha пишет:

 цитата:
до коммита транзакция хранится на клиенте


Я так подозреваю, что commit внутри транзакции не решит вопрос? :)

Спасибо: 0 
Профиль
AlexMyr



Пост N: 113
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 05.01.11 12:02. Заголовок: PSP пишет: Я так по..


PSP пишет:

 цитата:
Я так подозреваю, что commit внутри транзакции не решит вопрос? :)



Вот кусок с test_ta

leto_BeginTransaction()

select NAKL2
for i := 1 to Len( aSumm )
append blank
replace NORD with n_ord, DORD with d_ord, NPROD with i, SUMMA with aSumm
sumAll += aSumm
next

select NAKL1
append blank
replace NORD with n_ord, DORD with d_ord, SUMMA with sumAll

leto_CommitTransaction()

т.е. начало транзакции, что-то делаем с данными, конец транзакции.

А Вы как работаете с транзакциями?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1760
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.01.11 12:03. Заголовок: LETO_COMMITTRANSACTI..


LETO_COMMITTRANSACTION может только завершить транзакцию. После коммита все данные становятся видны, но транзакция завершилась, можно только начать новую.
А dbCommit во время транзакции игнорируется.

Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 479
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 05.01.11 12:08. Заголовок: AlexMyr пишет: А Вы..


AlexMyr пишет:

 цитата:
А Вы как работаете с транзакциями?


Также.

Pasha пишет:

 цитата:
LETO_COMMITTRANSACTION может только завершить транзакцию. После коммита все данные становятся видны, но транзакция завершилась, можно только начать новую.
А dbCommit во время транзакции игнорируется.


Дело в том, что пока не могу отловить глюк. Он то есть, то нет. Поэтому слегка невнятно выражаюсь.
Ладно, пока оставим это. Выловлю (если), - сообщу.

Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 480
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 06.01.11 13:39. Заголовок: Короче... Попробую с..


Короче... Попробую сформулировать :)
- dbf открывается при запуске проги и остается открытым до завершения;
- используются транзакции;
- одна из станций производит запись в dbf;
- после завершения транзакции станция, производишая запись, видит изменения, а остальные - нет;
- если другая станция тоже проведет транзакцию записи в этот dbf, она увидит и "свои" и "чужие" изменения;
- изменения не видны также при просмотре файла вьювером;
- если все станции прекращают работу, все изменения становятся видны.

Использую:
Harbour 2.0.0
LetoDB: Changelog,v 1.331 2010/12/15 18:15:14 ptsarenko
(проверял еще на Changelog,v 1.322 2010/09/10 10:49:01 alkresin, то же самое)
LetoDB запущен под Ubuntu 10.04
Станции - Windows XP SP3

Натолкните на мысль, пожалуйста... :)


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1761
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.01.11 14:26. Заголовок: PSP пишет: - после ..


PSP пишет:

 цитата:
- после завершения транзакции станция, производишая запись, видит изменения, а остальные - нет;



Чтобы остальные станции увидели изменение, надо, чтобы они перечитали изменившиеся данные, т.е. сделали goto(recno()) или skip(0)


Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 481
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 06.01.11 14:35. Заголовок: Pasha пишет: Чтобы ..


Pasha пишет:

 цитата:
Чтобы остальные станции увидели изменение, надо, чтобы они перечитали изменившиеся данные, т.е. сделали goto(recno()) или skip(0)


"Вот оно чё, Михалыч, вот оно чё..." :)
Спасибо, Паш.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 1762
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.01.11 15:46. Заголовок: PSP пишет: "Вот..


PSP пишет:

 цитата:
"Вот оно чё, Михалыч, вот оно чё..." :)



Дык этот же момент надо учитывать и для файл-сервера, без leto
Если одна станция сделала коммит, остальные его увидят, когда перечитают файл
Тоже самое касается и sql. Это стандартый вопрос: почему после транзакции другие клиенты ее не видят. И на это есть стандартный ответ: представьте, что после каждой транзакции sql-сервер вдруг начнет плеваться данными на всех подключенных в этот момент клиентов... это же нехорошо ? Вот поэтому клиенты должны сами, того, как тот Магомед, идти к горе.

Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 482
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 06.01.11 16:58. Заголовок: А как объяснить, что..


А как объяснить, что вьювер тоже не видит изменений?

Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 157
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет