dev.net.ua

Українська Спільнота Розробникiв
 
Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

ASP .NET и большая база данных

Останнє повідомлення 05-12-2007, 0:10 від kosinsky. 5 відповіді.
Сортувати: Попереднє Наступне
  •  03-12-2007, 16:30 4838

    ASP .NET и большая база данных

    Доброго времени суток :)


    Имеется галерея изображений. Все изображения хранятся в базе (MS SQL Express). Представим себе, что изображений стало очень много, база стала большая. По идее  это плохо скажется на производительности. Возникает естественное решение: храним в базе всю информацию что и раньше, вот только картинки будут храниться на диске. Поиск в инете по данному вопросу подкинул следующую информацию: тормозить будет неслабо, ибо ОС будет загинаться из-за огромного количества файлов в одной папке. Т.е. и влево - плохо и вправо - плохо.

    Ну ладно, создаём папки, в них храним скажем по 500 файлов (число из головы, пусть это число файлов в папке, при которых ОС "не тормозит"). 500 папок * 500 файлов = 250.000 файлов. Если каждая картинка весит в среднем 2Мб, то имеем 250.000 * 2 = 500.000Мб. Покатит :) Путь к каждому файлу помещаем в базу, т.е. по сути файл как и прежде вытаскиваем по ключу. Вроде работать должно быстро. Но недостатки:

    1. Целостность данных. Храня картинки отдельно от базы, прийдётся за ней очень внимательно следить.
    2. Усложнение доступа к данным. Ну это ладно, не так уж и усложняется.
    3. Безопасность. Доступ на запись в определённую папку :)

    Может что-то упустил. Собственно вопросы: какие ещё есть способы?

    -- А вы верите в Деда Мороза?
    -- Да, я верю что он принесет баланс в Силу.
  •  04-12-2007, 4:09 4841 у відповідь на 4838

    Re: ASP .NET и большая база данных

    Думаю, стоит дальше гуглить ;)
    Задача распространенная, решения должны быть описанны как и советы.

    В целом MS SQL Express должен иметь ограничение на размер базы, прийдется не Express версию использовать.
    По поводу загибания файловой системы - ту тя не спец, но разве производительность ФС зависит от сбалансированности дерева её объектов?
    Наверное стоит посоветовать microsoft папку system32 разбить на подпапки ... Smile


    Может стоит посмотреть в сторону кластерных решений или виртуальной файловой системы ?
    Думаю, корректнее когда не приходится беспокоится о структуре хранения файла в иерархиипапок - эта задача более низкого уровня, её и должна решать ОС и ФС.

    ПС: проблемы 1, 3 не сильно и проблемы. Решаются очень просто - прямыми руками Wink а 2 - вообще не проблема, а в большинстве систем приемущество.


    Лучше побыть дураком 5 минут, чем остаться им на всю жизнь ...
  •  04-12-2007, 4:23 4842 у відповідь на 4841

    Re: ASP .NET и большая база данных

    >>> В целом MS SQL Express должен иметь ограничение на размер базы, прийдется не Express версию использовать.
    Да, в SQL Express 4Gb ограничение, насколько я помню.

    >>> По поводу загибания файловой системы - ту тя не спец, но разве производительность ФС зависит от сбалансированности дерева её объектов?
    Вот и я тут не спец, но 20.000 файлов в одной папке действительно тормозит

    >>> Может стоит посмотреть в сторону кластерных решений или виртуальной файловой системы ?
    Проект в локальной сети, как говорится чисто в своё удовольствие, посему кластеры отпадают =) Про виртуальную файловую систему понятно, это один из способов решения проблемы 1.


    -- А вы верите в Деда Мороза?
    -- Да, я верю что он принесет баланс в Силу.
  •  04-12-2007, 7:10 4844 у відповідь на 4838

    Re: ASP .NET и большая база данных

    500Гб данных скажим так не плохая база данных. Но будет ли тормозить, это еще вопрос. Все зависит от того, как с ними будут общаться:

    1. Сколько будет пользователей
    2. Как часто они будут посылать запросы
    3. Как данные будут физически разделенны (сколько будет файловых групп и где они будут расположенны).

    Можно еще много чего придумать.

    ЗЫ. Но на Express это конечно не реализуемо.

     

     

  •  04-12-2007, 9:13 4845 у відповідь на 4844

    Re: ASP .NET и большая база данных

    Окей, тогда вопрос такой. Хранить папку с изображениями буду в папке App_Data. Почему там? Ну идеологически - папка для хранения данных, кроме того по-умолчанию имеем право записи туда (а если в другое место сохранять, то надо конфигурировать IIS, чего не хочется). Всё корректно?

    -- А вы верите в Деда Мороза?
    -- Да, я верю что он принесет баланс в Силу.
  •  05-12-2007, 0:10 4846 у відповідь на 4845

    Re: ASP .NET и большая база данных

    Могу предложить посмотреть на функционал FILESTREAM из SQL Server 2008. Поля такого типа возволяют реально хранить данные на файловой системе, но оперировать с ними посредством базы данных. Также из базы данных можно получить дескриптор файла и работать с ним при помощи стандартных функций для работы с файлами.

    http://blogs.msdn.com/rdoherty/archive/2007/10/12/getting-traction-with-sql-server-2008-filestream.aspx

    http://www.microsoft.com/sql/techinfo/whitepapers/sql_2008_unstructured.mspx

    Единственное, что я не уверен, что на данные хранящиеся вне основной базы данных не распространяеться правило в 4Гб для экспреса.

     

    Помічено як: ,
Переглядати як новосний Блог RSS в XML