Автор | Сообщение |
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 на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.
|
|
|
Ответов - 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 вместо стандартной, в которой тоже поставлялись бы параметры соединения.
|
|
|
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лями работает .
|
|
|
Pasha
|
| Администратор
|
Пост N: 1714
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.12.10 21:16. Заголовок: Поправил. Проверьте ..
Поправил. Проверьте пожалуйста.
|
|
|
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 $ */
|
|
|
Pasha
|
| Администратор
|
Пост N: 1715
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.12.10 22:06. Заголовок: Да, сделал. Просто к..
Да, сделал. Просто коммит видно не сразу, а сюда я написал буквально в ту же минуту
|
|
|
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 не серверны процес.
|
|
|
Pasha
|
| Администратор
|
Пост N: 1718
Зарегистрирован: 23.05.05
|
|
Отправлено: 16.12.10 21:35. Заголовок: Вместо проверки суще..
Вместо проверки существования файла лучше использовать вызов: lConnected := ! Empty(Leto_MgGetInfo())
|
|
|
PSP
|
| постоянный участник
|
Пост N: 476
Зарегистрирован: 27.01.07
|
|
Отправлено: 04.01.11 13:36. Заголовок: Pasha пишет: коммит..
Pasha пишет: Паша, растолкуйте, плиз.
|
|
|
Pasha
|
| Администратор
|
Пост N: 1755
Зарегистрирован: 23.05.05
|
|
Отправлено: 04.01.11 14:04. Заголовок: PSP пишет: Pasha пи..
PSP пишет: цитата: | Pasha пишет: цитата: коммит видно не сразу Паша, растолкуйте, плиз. |
| Имеется в виду коммит на CVS. Если делать чекаут от анонимуса, то последние коммиты видно не сразу, а через некоторое время, может даже через несколько часов. А чекаут от имени девелопера видит сразу все обновления других девелоперов.
|
|
|
PSP
|
| постоянный участник
|
Пост N: 477
Зарегистрирован: 27.01.07
|
|
Отправлено: 04.01.11 14:37. Заголовок: Ясно. Просто у меня ..
Ясно. Просто у меня че-то данные не сразу становятся видны после транзакции. Пока не понял почему...
|
|
|
Pasha
|
| Администратор
|
Пост N: 1759
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.01.11 10:23. Заголовок: PSP пишет: Просто у..
PSP пишет: цитата: | Просто у меня че-то данные не сразу становятся видны после транзакции. Пока не понял почему... |
| Во время транзакции или после коммита ? Если во время транзакции, то мы с Александром эту тему уже обсуждали. Вкратце: до коммита транзакция хранится на клиенте, и, если при этом получать данные с сервера, то будут переданы еще не измененные данные.
|
|
|
|
PSP
|
| постоянный участник
|
Пост N: 478
Зарегистрирован: 27.01.07
|
|
Отправлено: 05.01.11 10:55. Заголовок: Pasha пишет: до ком..
Pasha пишет: цитата: | до коммита транзакция хранится на клиенте |
| Я так подозреваю, что commit внутри транзакции не решит вопрос? :)
|
|
|
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() т.е. начало транзакции, что-то делаем с данными, конец транзакции. А Вы как работаете с транзакциями?
|
|
|
Pasha
|
| Администратор
|
Пост N: 1760
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.01.11 12:03. Заголовок: LETO_COMMITTRANSACTI..
LETO_COMMITTRANSACTION может только завершить транзакцию. После коммита все данные становятся видны, но транзакция завершилась, можно только начать новую. А dbCommit во время транзакции игнорируется.
|
|
|
PSP
|
| постоянный участник
|
Пост N: 479
Зарегистрирован: 27.01.07
|
|
Отправлено: 05.01.11 12:08. Заголовок: AlexMyr пишет: А Вы..
AlexMyr пишет: цитата: | А Вы как работаете с транзакциями? |
| Также. Pasha пишет: цитата: | LETO_COMMITTRANSACTION может только завершить транзакцию. После коммита все данные становятся видны, но транзакция завершилась, можно только начать новую. А dbCommit во время транзакции игнорируется. |
| Дело в том, что пока не могу отловить глюк. Он то есть, то нет. Поэтому слегка невнятно выражаюсь. Ладно, пока оставим это. Выловлю (если), - сообщу.
|
|
|
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 Натолкните на мысль, пожалуйста... :)
|
|
|
Pasha
|
| Администратор
|
Пост N: 1761
Зарегистрирован: 23.05.05
|
|
Отправлено: 06.01.11 14:26. Заголовок: PSP пишет: - после ..
PSP пишет: цитата: | - после завершения транзакции станция, производишая запись, видит изменения, а остальные - нет; |
| Чтобы остальные станции увидели изменение, надо, чтобы они перечитали изменившиеся данные, т.е. сделали goto(recno()) или skip(0)
|
|
|
PSP
|
| постоянный участник
|
Пост N: 481
Зарегистрирован: 27.01.07
|
|
Отправлено: 06.01.11 14:35. Заголовок: Pasha пишет: Чтобы ..
Pasha пишет: цитата: | Чтобы остальные станции увидели изменение, надо, чтобы они перечитали изменившиеся данные, т.е. сделали goto(recno()) или skip(0) |
| "Вот оно чё, Михалыч, вот оно чё..." :) Спасибо, Паш.
|
|
|
Pasha
|
| Администратор
|
Пост N: 1762
Зарегистрирован: 23.05.05
|
|
Отправлено: 06.01.11 15:46. Заголовок: PSP пишет: "Вот..
PSP пишет: цитата: | "Вот оно чё, Михалыч, вот оно чё..." :) |
| Дык этот же момент надо учитывать и для файл-сервера, без leto Если одна станция сделала коммит, остальные его увидят, когда перечитают файл Тоже самое касается и sql. Это стандартый вопрос: почему после транзакции другие клиенты ее не видят. И на это есть стандартный ответ: представьте, что после каждой транзакции sql-сервер вдруг начнет плеваться данными на всех подключенных в этот момент клиентов... это же нехорошо ? Вот поэтому клиенты должны сами, того, как тот Магомед, идти к горе.
|
|
|
PSP
|
| постоянный участник
|
Пост N: 482
Зарегистрирован: 27.01.07
|
|
Отправлено: 06.01.11 16:58. Заголовок: А как объяснить, что..
А как объяснить, что вьювер тоже не видит изменений?
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|