Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Shadow_Fighter
Зарегистрирован: 21.02.2007 Сообщения: 13 Откуда: Нижний Новгород
|
Добавлено: Ср Фев 21, 2007 4:56 pm Заголовок сообщения: работа MI в сети |
|
|
крик души:)
сабжа собственно не существует как такового. Работаю с Mapinfo уже много лет, и каждый раз рассматривая "Whats new" в очередной версии (вот уже 8.5.1 вышла) ищу "многопользовательский доступ к таблице" - ан нет, нету его. Добавляют непонятные (web soap xml)-based примочки, wms, wfs и хрен пойми что еще. Обещают максимальную производительность Spatialware и Oracle - вот только какой ценой? Ставить sql server+spatialware+париться с odbc только чтобы общую карты с 2х компов в сети смотреть и ИЗМЕНЯТЬ ??? (про Oracle вообще молчу:)
это вступление. Сабж: не у кого не возникало потребности в организации сетевого доступа к таблицам MI? Например, одним из решений было бы написать прогу на том же mapbasic+к-л внешние модули, которая в реальном времени синхронизировала например 2 копии одной и той же таблицы на разных компах. Опыт программирования на Mapbasic у меня есть и в принципе такую штуку сделать вполне реально. Вот только может задача уже решена к-л более простым и надежным способом? Если нет, то есть ли желающие замутить совместный проект этой проги? Пишите |
|
Вернуться к началу |
|
|
Нестеров Валерий
Зарегистрирован: 21.03.2006 Сообщения: 492
|
Добавлено: Ср Фев 21, 2007 5:42 pm Заголовок сообщения: |
|
|
Такое отрицательное свойство имеют любые программы, хранящие данные в файловом формате. Возьмите те же Word или Excel. И если было бы все так просто, то уже давно сделали что-нибудь. Но на самом деле при практической реализации этого возникает много подводных камней. Так что, многопользовательский режим только с СУБД. Можно взять Oracle-MapInfo - никаких ODBC и Spatialware. _________________ Жизнь прекрасна!i |
|
Вернуться к началу |
|
|
asgs
Зарегистрирован: 22.08.2006 Сообщения: 21 Откуда: Новосибирск
|
Добавлено: Чт Фев 22, 2007 7:25 am Заголовок сообщения: |
|
|
Была шальная мысль зацепить MapInfo с MySQL, через внешние модули, естественно. Пока думаю дальше. |
|
Вернуться к началу |
|
|
Shadow_Fighter
Зарегистрирован: 21.02.2007 Сообщения: 13 Откуда: Нижний Новгород
|
Добавлено: Чт Фев 22, 2007 8:56 am Заголовок сообщения: |
|
|
В случае c oracle опять же все упирается в громоздкость и неудобство развертывания, а при установке в организации - еще и с лицензированием (сколько стоит лицензионный оракл - подскажите ка :roll: ) Между тем, совместный доступ нужен не для каких то супермегакорпораций, с кучей серверов итд (где как раз оракл рулит), а для сетки из максимум 20 компов, а минимум из 2х.
Дык вот какая идея: базу сделать на mdb (он же jet, он же access), благо это на компах с виндой уже есть и дополнительно никаких прог ставить не придется, написать на mapbasic'e прогу для кодирования и декодирования объекта в текст (например "point x=333 y=444 symbol xxx") и текстовые описания объектов хранить в mdb' шной базе. При запуске проги читать access и перегонять текстовые описания обратно в тип obj. Это я сделать могу. Вот только при большом объеме базы будут дикие тормоза. Поэтому надо как-то запрашивать не все объекты а только добавленные и измененные и обрабатывать только их. Вот с этим как раз и беда - access знаю посредственно, и как сделать такой запрос если кто знает - подскажите |
|
Вернуться к началу |
|
|
asgs
Зарегистрирован: 22.08.2006 Сообщения: 21 Откуда: Новосибирск
|
Добавлено: Чт Фев 22, 2007 9:23 am Заголовок сообщения: |
|
|
Shadow_Fighter писал(а): |
Дык вот какая идея: базу сделать на mdb (он же jet, он же access), благо это на компах с виндой уже есть и дополнительно никаких прог ставить не придется, написать на mapbasic'e прогу для кодирования и декодирования объекта в текст (например "point x=333 y=444 symbol xxx") и текстовые описания объектов хранить в mdb' шной базе. При запуске проги читать access и перегонять текстовые описания обратно в тип obj. Это я сделать могу. Вот только при большом объеме базы будут дикие тормоза. Поэтому надо как-то запрашивать не все объекты а только добавленные и измененные и обрабатывать только их. Вот с этим как раз и беда - access знаю посредственно, и как сделать такой запрос если кто знает - подскажите |
При перегоне объекта в текст и обратно дикие тормоза начнутся даже на небольшой базе, к тому же стоит учесть, что Access - локальная БД, т.е. нифига не лучше MI. Видел я одну ГИС, сделанную под Access и даже писал под нее пару конверторов (если нужно конкретно, то это МаГИС от СибГеоИнформ), так вот - при работе с ней в сети возникает очень много головняков. ИМХО, основная проблема при адаптации MapInfo под сеть - сохранить простоту (и скорость, насколько возможно) работы MI с данными. С Access, опять же ИМХО, тут ничего не светит. |
|
Вернуться к началу |
|
|
Shadow_Fighter
Зарегистрирован: 21.02.2007 Сообщения: 13 Откуда: Нижний Новгород
|
Добавлено: Чт Фев 22, 2007 9:36 am Заголовок сообщения: |
|
|
атогда такой момент: можно попробовать "выдрать" из MI переменную типа obj в виде некого массива двоичных данных (как это сделать если честно - без понятия), и эти данные без конвертации сохранять в сетевой БД. Это реально? |
|
Вернуться к началу |
|
|
asgs
Зарегистрирован: 22.08.2006 Сообщения: 21 Откуда: Новосибирск
|
Добавлено: Чт Фев 22, 2007 9:42 am Заголовок сообщения: |
|
|
Просто выдрать - вряд ли, зато можно без проблем создать свой двоичный пакет в нужном формате, с которым уже можно делать все, что в голову придет. Основная сложность - процесс синхронизации данных локального экземпляра MI и сетевой БД. Вот над этим я сейчас голову и грею :? |
|
Вернуться к началу |
|
|
Shadow_Fighter
Зарегистрирован: 21.02.2007 Сообщения: 13 Откуда: Нижний Новгород
|
Добавлено: Чт Фев 22, 2007 9:54 am Заголовок сообщения: |
|
|
asgs писал(а): |
создать свой двоичный пакет в нужном формате |
это опять же конвертить? то бишь использовать стандартные функции MI для получения ТЕКСТОВОЙ инфы по объекту, которую кодировать в свой двоичный формат? В общем пока что идея - попробовать написать dll-ку, и передать ей переменную типа obj. В самой dll'ке эту переменную объявить как pointer - будет ли работать и что в действительности передастся - вечером проверю и расскажу |
|
Вернуться к началу |
|
|
Shadow_Fighter
Зарегистрирован: 21.02.2007 Сообщения: 13 Откуда: Нижний Новгород
|
Добавлено: Чт Фев 22, 2007 9:58 am Заголовок сообщения: |
|
|
asgs писал(а): |
Основная сложность - процесс синхронизации данных локального экземпляра MI и сетевой БД |
А я думал, что это решено штатными средствами сетевой БД (если нет, тогда все вообще сложно - как раз с сетемыми БД дела не имел и смутно представляю что там и как) |
|
Вернуться к началу |
|
|
asgs
Зарегистрирован: 22.08.2006 Сообщения: 21 Откуда: Новосибирск
|
Добавлено: Чт Фев 22, 2007 10:40 am Заголовок сообщения: |
|
|
Shadow_Fighter писал(а): |
А я думал, что это решено штатными средствами сетевой БД |
Ага, решено... в Oracle Spatial :shock: |
|
Вернуться к началу |
|
|
Shadow_Fighter
Зарегистрирован: 21.02.2007 Сообщения: 13 Откуда: Нижний Новгород
|
Добавлено: Чт Фев 22, 2007 10:44 am Заголовок сообщения: |
|
|
:) сегодня поковыряю сабж и расскажу о впечатлениях |
|
Вернуться к началу |
|
|
asgs
Зарегистрирован: 22.08.2006 Сообщения: 21 Откуда: Новосибирск
|
Добавлено: Чт Фев 22, 2007 10:46 am Заголовок сообщения: |
|
|
Shadow_Fighter писал(а): |
asgs писал(а): |
создать свой двоичный пакет в нужном формате |
это опять же конвертить? то бишь использовать стандартные функции MI для получения ТЕКСТОВОЙ инфы по объекту, которую кодировать в свой двоичный формат? |
Отнюдь, в смысле ни фига подобного. Функциями MB информация по объекту получается как раз двоичная, если не считать некоторых значений типа названия шрифта в тектовом объекте, так что конвертить придется, но между двумя ДВОИЧНЫМИ форматами, что, согласитесь, гораздо быстрее. |
|
Вернуться к началу |
|
|
Shadow_Fighter
Зарегистрирован: 21.02.2007 Сообщения: 13 Откуда: Нижний Новгород
|
Добавлено: Пн Апр 09, 2007 11:27 am Заголовок сообщения: |
|
|
идиотская идея, но работает: выкладываем таблицы на расшаренную папку, на каждой из работаюших с таблицами MI-шек запускаем mbx-скрипт, который эти таблицы через определенный промежуток времени проверяет (секунд 5-10) и если таблица unsaved, делает ей commit interactive.
ПРИЧЕМ:
например, на одном компе нарисовали в общей таблице полигон, тогда он появляется на всех остальных после regen'а окна!!: например при сдвиге или масштабировании, в то время как при использовании spatialware чтобы увидеть вновь созданный объект, нужно выполнить синхронизацию с сервером!!! |
|
Вернуться к началу |
|
|
sunzh
Зарегистрирован: 13.05.2006 Сообщения: 19
|
Добавлено: Вт Ноя 06, 2007 9:02 pm Заголовок сообщения: |
|
|
Добрый вечер (или какое там время суток) обитателям форума. Давненько не заходил. Зашел и сразу больная тема. По существу выше написанного есть следующие соображения:
Есть у таблиц MI интересные режимы редактирования устанавливаемые оператором MB Set Table
Set table 'tablename' fast edit On
Set table 'tablename' Undo Off
МИ перестает записывать изменения данной таблицы в файл транзакции, начинает записывать их прямо в файл. А как известно недоступна таблица для редактирования лишь пока есть несохраненные изменения сделанные другим пользователем. Чем жертвуем - отменой последнего действия, восстановлением таблицы. Что имеем - многопользовательский доступ. Удачи в экспериментах... |
|
Вернуться к началу |
|
|
Shadow_Fighter
Зарегистрирован: 21.02.2007 Сообщения: 13 Откуда: Нижний Новгород
|
Добавлено: Вт Ноя 06, 2007 11:21 pm Заголовок сообщения: |
|
|
интересная идея, проверим, спс)
а вот разработчики обещают технологию клиент-сервер в МИ 10, правда когда будет эта МИ 10 и к-л подробности не сообщаются. Ждем-с .... |
|
Вернуться к началу |
|
|
|