TGViewer
PRO Go PRO Go @pro_gofer · 3.3K subscribers
Post #695 575
Где хранить данные 💾

Классическая история. Написана первая серьёзная программа — консольный список задач. Добавил задачу, она появилась в списке. Работает прекрасно, пока не закрыл терминал.

Закрыл, открыл заново — список пустой. Как будто ничего и не было.

Первое, что приходит в голову почти всем — сохранять список в файл перед выходом, а при старте читать обратно. JSON-файл, читаешь — пишешь, несложно. И это действительно работает, пока список открыт из одного места.

А вот если запустить ту же программу в двух терминалах одновременно — один из них благополучно затирает то, что успел дописать второй. Оба читают файл целиком, оба пишут файл целиком, кто последний сохранил — тот и прав.

Вот тут и становится понятно, зачем вообще нужны базы данных. Не потому что файл это «неправильно», а потому что файл не умеет того, что нужно почти любому реальному проекту: пускать к данным сразу несколько программ без того, чтобы они друг друга затирали, находить одну нужную запись без перечитывания всего файла, гарантировать, что два связанных изменения либо оба применились, либо не применилось ни одно.

Файлами эту проблему можно латать довольно долго, но рано или поздно упираешься в одну и ту же стену 👴
  • 🔥 3
More from @pro_gofer
  1. Oct 13, 2026Как восстановить доступ к курсу пока Stepik недоступен🙏 Stepik сейчас недоступен, но твоё…
  2. Oct 13, 2026Друзья, доброго дня! Как многие уже заметили, Stepik уже несколько дней не работает🥺 — ав…
  3. Oct 6, 2026#memes
  4. Sep 28, 2026Вайбкодеры напряглись
  5. Sep 24, 2026sql.Open 🔌 Помню, как в первый раз полез из Go в базу и минут сорок не понимал, почему вс…
  6. Sep 21, 2026#memes
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 →