Важной частью программирования является знание того, когда вы над головой. Если опубликованные вами CTQ являются реальными, в частности требование одновременного доступа, то вас ждет мир боли. Даже те из нас, у кого достаточно много времени в окопах, окажутся в мире страданий с таким требованием. Я бы решил эту проблему следующим образом:
Я пойму это неправильно во многих отношениях, которые я могу себе представить.
Зная это, чем проще вы сохраните эту архитектуру, тем больше вероятность ее масштабирования . Тем не менее, компания, в которой я работаю, абсолютно огромна, и я сомневаюсь, что даже у нас есть системы, которые действительно имеют 20 000 одновременно работающих пользователей. Так что не откусывайте больше, чем можете прожевать.
Создайте свою архитектуру, чтобы она была простой и надежной (высокий порядок), и вы обнаружите, что она будет масштабироваться естественным образом до тех пор, пока вам в конечном итоге не понадобится вызвать большие орудия.
Я могу предложить вам хотя бы потратить деньги на доступ к SQL Server 2008. С этой версией ваша проблема должна быть довольно элементарной для начинающих. Используйте для хранения файлов FILESTREAM
. Нет необходимости сериализации. Это позволит хранить файлы в файловой системе NTFS и максимально упростит программирование, обслуживание и масштабируемость.
Если по какой-то причине у вас есть только SQL Server 2005, вам придется иметь дело с BLOB
s, что не совсем сложно, но несколько беспорядочно. Я предлагаю вам прочитать В BLOB или Не в BLOB от Microsoft Research, чтобы принять решение, если хранение данных в SQL Server 2005 является лучшим выбором для вас. Если это так, существует множество статей, в которых подробно описывается, как помещать файлы в SQL Server BLOB
s. Просто знайте, что это редко является наиболее эффективным или масштабируемым решением.