Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование общих данных между процессами. [Win95/98, NT4]


Ш-К ©   (2002-10-07 03:35:00) 

Есть несколько разных приложений. Каждое из них работает со своим набором данных (15-30 мб).

Данные для каждого типа приложения разные, но имеются абсолютно идентичные блоки данных. Вот пример распределения данных (буква -блок, одинаковые буквы - одинаковые данные):

приложение наборы данных

1) A S D F G H J K L
2) A S D F G H I O P
3) A S D M N B V C X
4) C B N Z G H J K L
5) L X P

и т д.

Если все приложения запустить на одной машине, то получится как-бы избыток информации: одни и те же данные загрузятся несколько раз.

Вопросы, имхо, очевидены.
Как сложить (объединить) все данные с целью экономии ресурсов?
Как построить логику приложений, чтобы получить эффект сложения?
Какие технологии можно и нужно для этого использовать?


Zelius   (2002-10-07 15:02:00) [1]

Зачем каждый? Создаешь один блок и в нем хранишь бинарные данные! А уж кто как захочет, тот так и будет их интерпретировать!


Ш-К   (2002-10-07 12:03:00) [2]

Да нет никаких локальных данных с сервера - я же сказал, что оговорился. Просто в ОЗУ сидят повторяющиеся фрагменты памяти, используемые разными программами. Не важно, как они туда попали. Поэтому и заморочки с AS лишние. Имхо.

С FileMapping тепло, но как-то грубо. Что мне каждый блок под мар-файл определить? Данные же в блоке неоднородные, модифицируемые.


Polevi   (2002-10-07 11:00:00) [3]

>А наборы данных - локальные данные с сервера
в момент получения этих самых данных надо проверять, не были ли они получены ранее и если да, то передавать "указатель" на них, например в виде MMF
если не подходит вариант с AS - создавайте глобальный файл, в котором храните список загруженных "данных" - но все равно придется менять код всех клиентов
я бы на вашем месте подумал все таки про МИДАС - если на AS есть метод GetSomeData - при первом вызове он будет получать данные от БД и помещать их в MMF, при повторном вызове (от другого приложения) - просто возвращать имя уже имеющегося MMF


Zelius   (2002-10-07 10:36:00) [4]

А можно еще использовать файлы, отображаемые в память, они позволяют резделять их между приложениями.


Ш-К   (2002-10-07 10:28:00) [5]

Про запросы я ничего не говорил - это отдельная логика приложений.
Я был не точен, когда сказал "локальные данные". Это просто данные программы. Загруженные, переваренные и подготовленные для чтения в удобном виде. Выборка по ним не производится.
Поэтому (и не только) решение ищу в чистом виде, как описывал изначально. Отсраняясь от клиент/сервер.

Во всяком случае, поясни конкретнее. Может я не понял?


Polevi   (2002-10-07 09:47:00) [6]

что то вроде MIDAS, только сервер приложений у каждого клиента - на нем кеш


Polevi   (2002-10-07 09:45:00) [7]

тебе нужно еще одно звено добавить на клиента - модуль, через который будут идти все запросы к базе
со всеми вытекающими


Ш-К   (2002-10-07 09:32:00) [8]

Предполагал, что будет такой ответ.
Все эти приложения - клиенты IB. А наборы данных - локальные данные с сервера.
Совсем нет нужды держать весь спектр данных, если загружен только один клиент. Данные должны быть только необходимые и только для запущенных приложений.

Программный комплекс такой, что состоит из разных клиентов: мониторинга, администрирования, репорта,... и пары сервисов. Так вот, у пользователя может быть загружено вот это всё. И весь комплекс к чертям!


Polevi   (2002-10-07 08:57:00) [9]

СУБД


Наверх

Титульная страница Поиск, карта сайта Написать письмо