Как быстро работает файловая система Windows для работы с базами данных? - PullRequest
1 голос
/ 25 января 2011

Я наткнулся на сумасшедшую мысль и хотел поделиться ею с вами и спросить о ее целесообразности, особенно в отношении производительности:

Идея состоит в том, чтобы управлять объектными базами данных с помощью:

  • создание папки для каждого класса, названного по имени класса
  • создание подпапки для каждого подкласса, названного по имени подкласса
  • создание файла для каждого объекта, названного в честь его уникальногоID
  • создание подпапки для каждого индекса с именами по именам индексированных полей
  • создание файла ярлыка для каждой записи индекса со ссылкой на исходный объектный файл
  • чтение / записьдвоичные объекты с помощью очень быстрого сериализатора / десериализатора
  • вставка / обновление / удаление объектов и записей индекса путем переименования объектов и файлов ярлыков
  • кэширование / разбиение по страницам с использованием отображенных в память файлов
  • Запросы будут использовать двоичный поиск по отсортированным именам файлов

ОБНОВЛЕНИЕ: Спасибо всем за ваши ответы.Я думал, что это может быть даже улучшено с помощью некоторой библиотеки сжатия / шифрования, такой как 7z, вместо работы с файловой системой ОС.В противном случае все ваши заявленные опасения пока действительны.Мне интересно, что за базовая файловая система, например, Oracle использует

Ответы [ 3 ]

3 голосов
/ 25 января 2011

Минусы:

  • В большинстве файловых систем даже 1-байтовый файл занимает полный блок размером 4 КБ. Может быть огромной проблемой в зависимости от типа объекта, который вы хотите сохранить в своей базе данных.
  • Большинство файловых систем не предназначены для масштабирования с каталогами, содержащими миллионы файлов.
  • Сложные запросы потребуют открытия / чтения / десериализации / закрытия миллионов файлов и, следовательно, будут очень медленными.
2 голосов
/ 25 января 2011

Как практика, чтобы узнать больше о базах данных, конечно, но для реального проекта, который должен делать что угодно, нет.

Существует так много под капотом баз данных, что если вы на самом деле не знаете точно, что вы естьвыполнение, и в этом случае вы не будете спрашивать здесь;), вы, скорее всего, никогда не будете соответствовать существующим решениям.

Вместо этого перейдите к существующей объектной базе данных и сконцентрируйтесь на специфике вашего приложения / сайта / ...

2 голосов
/ 25 января 2011

Это интересная концепция, несколько мыслей о насущных проблемах, которые вам придется решать.

  • Производительность файлов Windows сильно падает после нескольких сотен тысяч файлов, вам нужно изменить некоторые аспектыотключите 8.3 и отметки времени последнего обновления), чтобы он не вызывал задержек при чтении файловой системы.
  • Блокировка - механизм блокировки будет интересной задачей, вам нужно иметь возможность блокировать обновления для обновлениячитает одновременно.
  • ACID - при выполнении операций с этой «базой данных», как бы вы применяли принципы ACID - каждый из них является нетривиальной проблемой.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...