LINUX.ORG.RU

Его крокейшество о вредности СУБД, если архитектурно она для программ, а не живого человека

 ,


0

6

Давно уже что-то про Столярова Croco ничего не было =) А тут он повод недавно дал, расписав почему считает недопустимым использовать СУБД в архитектуре при проектировании софта. То есть, если для каких-то программ нужно хранение данных, его надо индивидуально под программу делать, а не подключать базы данных.

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

http://www.stolyarov.info/guestbook#cmt97

==============

Я придерживаюсь принципа несколько более узкого: недопустимо создание, распространение и использовние программ, для работы которых требуется СУБД.

Причины можно назвать, например, такие:

  1. СУБД — это лишняя внешняя зависимость, при том что вообще любые внешние зависимости суть хамство в отношении пользователей и мейнтейнеров;
  2. СУБД требует трудозатрат на установку, настройку и дальнейшее администрирование;
  3. СУБД способна упасть (и да, падает намного чаще, чем, скажем, тот же апач — вообще пока мои сайты жили на «традиционной» CMSке, именно СУБД была причиной всех случаев downtime моих сайтов, за исключением одного, когда на сервере физически осыпался жёсткий диск);
  4. СУБД требует от пользователя постоянно обновлять навыки, которые, возможно, больше ни для чего не нужны;
  5. СУБД хранит информацию пользователя в неочевидном для него виде; этим грешат не только СУБД, конечно, но СУБД мало того что хранят всё в бинарных файлах, которые без самой СУБД даже думать нечего разобрать, они ещё и вводят дополнительный слой хаотизации в виде схемы БД, провоцируя разработчиков софта на внедрение «решений», единственное «описание» которых остаётся в голове у автора;
  6. СУБД требует изрядных вычислительных мощностей и крадёт (а вовсе не повышает, как почему-то многие уверены) производительность.

Я, заметим, не рискну утверждать, что СУБД как сущность вообще никогда не может ни для чего применяться. Тут вопрос в том, кто на ком стоял: если главной целью является база данных как таковая, то есть вот имеется какой-то значительный объём разнородной, но при этом взаимосвязанной информации и стоит задача обеспечить его хранение и в нём поиск, причём никто заранее не знает, какие именно задачи будут решаться на этом массиве информации, какие именно поисковые запросы будут делаться и вот это вот всё, то да, СУБД вполне может оказаться адекватным решением, и даже для работы с ней могут создаваться вспомогательные программки. Это, конечно, не оправдывает существования языка SQL, который в любых его проявлениях представляет собой надругательство над здравым смыслом, но в целом СУБД как вид софта существовать, наверное, всё-таки может — но лишь в случаях, когда либо вообще нет никаких программ кроме неё самой, либо программы делаются для неё, а не она сама поддерживается для работы какой-то программы.

Всё это можно выразить и короче: СУБД, по-видимому, вполне имеет право на существование в ситуации, когда основным способом работы с ней будет непосредственное вбивание запросов на её языке запросов живым человеком. То есть когда именно вот это — основное, а всё остальное вспомогательное. В подавляющем большинстве случаев мы видим прямо противоположное: с СУБД как-то там общается некая программа (намного реже — больше одной программы, и это уже пограничный случай), а живой человек делает запросы либо только в рамках обслуживания всей системы, либо вообще никогда.

Когда же пишется некая программа, предполагающая применение для конкретных задач (а программы иначе, собственно, и не пишутся), и данные возникают исходя из этих задач, а не наоборот, то за саму идею задействования внешней СУБД нужно убивать на месте. Сугубо из санитарных соображений.

★★★★★
Ответ на: комментарий от firkax

Эм, нет. Конкурентный доступ к данным как раз реализуется за 5 минут своим кодом.

Вообще-то поддержание транзакционной целостности данных при одновременном доступе к ним - это чуть ли не самая сложная часть у СУБД.

Простейший подход с исключительной блокировкой слишком неудобен уже при совсем небольшом количестве пользователей.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от firkax

Я даже не сомневался, что ты опять будешь нести чушь.

Значимых преимущества СУБД ровно эти два, и оба они относятся исключительно к ускорению разработки.

Нет, не исключительно. Помимо скорости разработки, всегда есть вероятность совершить множество ошибок в реализации. А еще, поддержка самописного решения банально дороже в сопровождении. Говоря о скорости, ты занимаешься софистикой. Всё всегда сводится к скорости, вопрос в промежуточных и последующих проблемах.

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

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 2)
Ответ на: комментарий от liksys

Я даже не сомневался, что ты опять будешь нести чушь.

Да нет, чушь несёшь ты, как всегда.

А еще, поддержка самописного решения банально дороже в сопровождении.

Это и есть скорость разработки. Кто-то потратил и оплатил 10 часов разработки, а кто-то 100.

Всё всегда сводится к скорости, вопрос в промежуточных и последующих проблемах.

Нет, не всё. Да и скорость разная бывает - скорость разработки это одно, скорость работы - уже другое, и оно обычно важнее (в некоторых рамках).

firkax ★★★★★
()
Ответ на: комментарий от firkax

Да нет, чушь несёшь ты, как всегда.

Да нет, дружочек. Это твоя прерогатива, как мы с тобой выясняем каждый раз, но ты об этом постоянно забываешь. Ну ничего, я напомню, мне не лень.

Это и есть скорость разработки. Кто-то потратил и оплатил 10 часов разработки, а кто-то 100.

Нет. Помимо часов, есть еще уровень квалификации сотрудника, от которого зарплата всё так же зависит. Сто часов джуна не равно десяти часам сеньера. После завершения основной разработки последует период сопровождения, в котором стоимость будет в прямой зависимости от количества велосипедов и качества изначального кода.

Ты о коммерческой разработке не слышал, поэтому вот, делюсь опытом. Учись, студент, мотай на ус.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.