IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Применение технологий транзакции для сохранения данных (http://www.imho.ws/showthread.php?t=78778)

asdus 30.01.2005 00:29

Применение технологий транзакции для сохранения данных
 
Собственно сталкивался ли кто с этим? Не подскажете по реализации, а то писать все самому как-то кучеряво.
Итак, что есть: программа, с которой по сети одновременно работает 200-500 клиентов, работает активно, то есть информация меняется постойнно. Раз в 30 минут - сохранение данных (рабочих) - происходит "заморозка" всего, все объекты сереализируются и пишутся в файл, работаем дальше. Так вот, оная "заморозка" всех очень напрягает, так как занимает достаточно большое время (относительно ессно - на 2ГБ ОЗУ + 2x3Ггц Пень4, 2xHDD SATA 8Mb buf - около 60 сек, размер получаещегося файла ~1Гб(пока)), которое всех ну оччень напрягает, собственно поэтому так редко и происходит, хотелось-бы раз в 10 минут делать, или хотя-бы в 20, но тогда совсем съедят.
Посему хочется сделать следущее: всю систему сохранения информации построить по транзакционному принципу (знакомо по базам данных). То есть инициализируется начало сохранения, все как-бы заморозилось (читаем инфу по транзакциям в MySQL), идет дамп на диск, при этом, паралельно, продолжается работа, и где-то в отдельном месте накапливаются изменения от "момента начала сохранения", потом запись заканчивается, измененияприменяются, работает дальше, пауза прозрачна...
Воот такое, что написал я сверху - хочу. Как уже говорилось писать все самому - имхо долго, и тяжело, так может есть у кого некие наработки, или, быть может, советы по данному поводу.
З.Ы.: для заинтересовавшихся: http://www.innodb.com/ - база юзаемая в MySQL и поддерживающая транзакции, OpenSource.

RaZEr 31.01.2005 00:11

Так а во имя чего весь этот геморой? Какая поставлена задача?

asdus 31.01.2005 22:38

Избавить прогу от "сохранений". Очень напрягают народ.
А гемморой этот нажил в рамках проекта OpenSource - так что остерегайтесь - покупайте лекарства заранее ;-)

RaZEr 01.02.2005 08:32

Т.е. база регулярно сохраняется. Своего рода backup. Тогда я думаю убери это сохранение и просто периодически копируй в безопасное место файлы с данными. Это будет быстрее.

asdus 02.02.2005 15:48

Так "файлы с данными" из оперативной памяти еще сохранить нужно - вот оно и есть это сохранение...

Saruman 02.02.2005 16:20

asdus
А в твоей программе какая-то стандартная БД типа той же MySQL используется?

asdus 02.02.2005 17:41

нет

Drakosha 02.02.2005 18:29

на моем опыте очень стоит писать файлы архивируя, т.к. в основном время идет на запись на диск (т.е. процессор не важно какой из современных). Посмотри zlib например, может ускорит дело.

asdus 02.02.2005 19:45

Эх. Ускорить дело можно и купив сервер помощнее... Спасибо конечно, посмотрю, но вопрос остается открытым...

someone312002 05.02.2005 16:31

построй алгоритм "Исключения": одни данные критичны к изменениям (в зависисости от времени), другие - нет... от этого и играй. Создай "список" пользователей с их признаками (ИД), дальше, все изменеия "шифруй" по их ИД и времени изменеия и в зависимости от алгоритма...

УДАЧИ!!!


Часовой пояс GMT +4, время: 21:58.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.