Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
Ш-К   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-56226
wer1
2002-10-07 08:46
2002.10.17
Мастера подскажите! Нужно чтобы при нажати на какой либо элемент


1-56041
Fog
2002-10-08 11:53
2002.10.17
Переменная в массиве


1-56115
Павел Хабаров
2002-10-09 10:38
2002.10.17
Как избавиться от ошибки при инсталляции?


1-56126
Лана Розанова
2002-10-09 11:36
2002.10.17
Вызов из странички


14-56327
Lancelot
2002-09-21 01:06
2002.10.17
American Beauty





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский