Насколько надежен обмен файлами в Windows при использовании его для базы данных? - PullRequest
0 голосов
/ 04 июня 2009

У нас есть приложение, которое создает базу данных на диске. База данных состоит из тысячи файлов.

В приложении одновременно может быть открыто от 500 до 3000 дескрипторов файла. Эти дескрипторы остаются открытыми, а данные постоянно записываются в.

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

Это просто плохая идея или она может сработать, если мы изменим дизайн механизма базы данных, чтобы открывать / закрывать дескриптор файла по запросу?

EDIT

В настоящее время к базе данных подключен только один клиент.

Ответы [ 4 ]

4 голосов
/ 04 июня 2009

Основываясь на опыте работы с базами данных "с общими файлами" (dBase, Paradox и т. П.), Это плохо масштабируется. Он также может быть очень чувствительным к сетевым ошибкам и плохому оборудованию.

2 голосов
/ 04 июня 2009

"Это просто плохая идея или она может сработать, если мы изменим дизайн механизма базы данных, чтобы открывать / закрывать дескриптор файла по требованию?"

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

0 голосов
/ 04 июня 2009

Полагаю, проблемы, с которыми вы столкнулись, относятся к семейству «доступ к ресурсам»: некоторые записи / таблицы / файлы должны / должны быть доступны нескольким пользователям в перекрывающиеся моменты времени. Сетевые задержки при открытии и закрытии файлов также могут быть проблемой, убедитесь, что вы НЕ используете сервис NETbios для этого.

Эта проблема совместного использования ресурсов является классической, хотя становится очевидной только тогда, когда приложение начинают использовать несколько пользователей ... и это обычно "слишком поздно".

Вы должны либо изменить дизайн, чтобы использовать механизм БД, либо, по крайней мере, сделать все запросы через серверное приложение, которое обрабатывает запросы от клиентов. о, подождите, это было бы эквивалентно написанию движка БД только для этого ... глупо с моей стороны, чтобы заново изобрести колесо.

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

0 голосов
/ 04 июня 2009

Переходит ли общий ресурс на сетевой диск?

Если это так, то, очевидно, на производительность будет влиять трансляция по протоколу SMB, независимо от задержки сети и нагрузки на сетевой диск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...