Как разработчик программного обеспечения, я работал над проектами от небольших домашних приложений до корпоративных приложений среднего размера. Почти в каждом проекте я использовал базу данных или сожалел, что не использовал ее с самого начала.
Теперь мне интересно несколько вещей о базах данных и их использовании в общих приложениях:
- Почему сама Windows не использует «центральную» базу данных SQL? Например:
- Данные об ошибках хранятся в куче файлов,
- Центр обновления Windows хранит все в плоских файлах,
- Кэш иконок хранится в очень странном отдельном файле, к которому нет доступа через SQL и т. Д.
- Почему так много больших приложений избегают использования баз данных? Например, разве Microsoft Outlook не выиграет от использования реальной базы данных вместо того, чтобы заново изобретать колесо, имея собственный формат для файлов PST и сохраняя некоторые данные в реестре?
Если база данных добавляет дополнительный уровень общей сложности и незначительную потерю производительности, это цена огромного преимущества упрощения кода в большинстве случаев, особенно когда речь идет о хранении небольших организованных блоков данных вместо больших двоичных файлов. потоки. Так почему же так мало продуктов на самом деле используют базы данных? Вероятно, единственное приложение, которое я знаю, которое на самом деле использует базу данных Sqlite, - это Firefox и, возможно, Microsoft Exchange (но последнее не является настольным приложением)?
Кроме того, ряд приложений, таких как Microsoft Office или Microsoft Expression, не выиграют от наличия единой базы данных SQL , упрощающей развертывание приложений, обновление / обновление данных, обмен данными между этими приложениями, создание резервных копий. , так далее.?