TGViewer
Стой под стрелой Стой под стрелой @nikitonsky_pub · 11.9K subscribers
Post #203 7.39K
Если и фантазировать про ОС будущего, то файловая система им будет не нужна, нужна будет база данных.

Во-первых, гарантии. Идея, что на файлах нельзя практически ничего надежно и атомарно сделать, это какой-то абсурд, фундамент из песка. Почему, пока я пишу, другой процесс может прочитать частично записанный файл? Зачем это? Какой у этого юз-кейс? А создавать файл во временной директории, чтобы потом атомарно его перенести? Я до сих пор в шоке, что компьютеры вообще хоть как-то работают.

Как должно быть: открыл транзакцию, создал файл тут, записал что-то там, тут папку перенес, закоммитил все разом. Или откатил. Я многого прошу?

Во-вторых, само АПИ к файловой системе. Оно сейчас на уровне NoSQL: можно получить информацию по одному файлу или список детей. Рекурсию пиши сам. Запросы пиши сам. Обходы пиши сам. Нотификации об изменениях получай поллингом, епта. А, пока будешь обходить дерево, другой процесс в нем что-нибудь поменяет, и ты никогда не узнаешь, лол. NoSQL, если что, это не самый удобный способ доступа к данным. Самый тупой — да, но не удобный. Понятно, что раньше надо было экономить на всем, но сейчас-то уже не нужно.

Как должно быть: утилиты find вообще существовать не должно, а должен существовать язык запросов, SQL или типа SQL, который может атомарно выдать всю нужную информацию. Естественно, запросы не только по пути, но и по ACL, и по мета-информации. Плюс реактивные нотификации, что-то типа changes feed, с возможностью фильтрации. И это все не из bash-а, а на уровне системных вызовов прям.

В-третьих, сами файлы. Сейчас это тупо byte[], что как бы универсально, но и универсально неудобно: людям приходится придумывать, как засунуть в byte[] их собственные структуры, а это разброд, шатания, каждый изобретает свои форматы, они все друг с другом не дружат, куча сил тратится на сериализацию-десериализацию, а файлы для большинтсва утилит остаются непрозрачными.

Идет это от того, что файл вещь дорогая и неудобная, поэтому файлов программы стараются создавать поменьше, а запихнуть в них — побольше. Ну и от того еще, что ничего кроме fread и fwrite система не предоставляет.

А вот если бы файлы были дешевле, удобнее и имели бы типы, то в принципе конфиги можно было бы хранить как одно значение == один файл. Тут на самом деле сам термин «файл» размывается, это уже и не файл будет, а табличка в неймспейсе вашей программы.

Если грубо, не ФС → byte[] → ваши данные, а ФС → ваши данные → иногда (в порядке исключения) byte[], например, для совместимости с чем-нибудь старым.

Проделайте как-нибудь мысленный эксперимент: если бы у вас не было файлов вообще, но была общая на всю систему база данных и системное API для доступа к ней, какие задачи стали бы невозможными? А какие из них стали бы существенно легче?
More from @nikitonsky_pub
  1. Oct 2, 2026Поскольку я больше не безработный, напоминание себе на следующий раз о поиске работы, пото…
  2. Sep 26, 2026По соцсетям гуляет контроверсивный ролик с недавнего Rails World, в котором DHH со сцены с…
  3. Sep 21, 2026Самое обидное это конечно что ты вынашиваешь какую-то там идею неделю, две, месяц, год, жи…
  4. Sep 15, 2026Возник еще вопрос, почему не подписать поле ввода внутри, а когда на него нажимаешь, подпи…
  5. Sep 15, 2026Просто подпишите поля Есть такой тренд — писать название поля на форме внутри, плейсхолдер…
  6. Sep 11, 2026Мы все ругаем русских локализаторов и конечно за дело, но я вот как-то пошел у себя в Берл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →