Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.17;
Скачать: CL | DM;

Вниз

Использование общих данных между процессами.   Найти похожие ветки 

 
Ш-К   (2002-10-07 03:35) [0]

Есть несколько разных приложений. Каждое из них работает со своим набором данных (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

и т д.

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

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


 
Polevi ©   (2002-10-07 08:57) [1]

СУБД


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

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

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


 
Polevi ©   (2002-10-07 09:45) [3]

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


 
Polevi ©   (2002-10-07 09:47) [4]

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


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

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

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


 
Zelius ©   (2002-10-07 10:36) [6]

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


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

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


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

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

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


 
Zelius ©   (2002-10-07 15:02) [9]

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



Страницы: 1 вся ветка

Текущий архив: 2002.10.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
1-56108
Alik26
2002-10-09 09:12
2002.10.17
Создаю TImage и на DblClick -е нужно Label -у присвоить имя Timag


1-56203
MasterVovan
2002-10-07 18:56
2002.10.17
Как получить доступ из главной MDI формы к MDIChild.


14-56312
VictorT
2002-09-24 15:28
2002.10.17
*.swf банер


1-56157
Брат
2002-10-07 12:05
2002.10.17
Люди, как перехватить событие минимизации и максимизации окна?


7-56369
MAYOR
2002-08-09 16:57
2002.10.17
Помогите разобраться с TCommPortDriver