LINUX.ORG.RU

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

 ,


1

5

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

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

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

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

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

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

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

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

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

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

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

Я хочу, чтобы инструменты были адекватны задачам. Но SQL сейчас как тот молоток в поговорке «когда в руках молоток, всё вокруг кажется гвоздями». И аргументы против других подходов напоминают «шуруп, забитый молотком, держится крепче, чем гвоздь, закрученный отвёрткой».

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

Это как раз легко. SELECT DISTINCT movie_id FROM movie_tag WHERE tag_id = &id.

Это был ответ на

На языке программирования это тривиально:

[m for m in movies if m.tags & include  == include and m.tags & exclude == set()]

Как это сделать в SQL и во сколько раз медленнее оно будет работать?

Ну да, гибкость хребта защитана.

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

В смысле, вопрос был про питон?

[m for m in movies if id in m.tags]
monk ★★★★★
()
Ответ на: комментарий от monk

И аргументы против других подходов напоминают «шуруп, забитый молотком, держится крепче, чем гвоздь, закрученный отвёрткой».

Это тебе только так кажется.

На самом же деле твои собственные аргументы звучат примерно так: «Соберу самолет на гвоздях, всё будет нормально. А в местах повышенных нагрузок прихвачу дополнительно хомутами.»

liksys ★★★★
()

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

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

это для тех кто имеет данные и требование хранить их удобно для обработки

Файловая система имеет данные и требование хранить их удобно для обработки? Прокси-сервер имеет данные и требование хранить их удобно для обработки? Система контроля версий имеет данные и требование хранить их удобно для обработки?

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)

Его крокейшество относится к одной из наимерзотошных пород инженеров (и людишек в целом), искренне полагающих что все, что не очень-то надобно непосредственно для узкого спектра их столярных работ НЕ НУЖНО вообще в глобальном смысле. Вот, тут уже СУБД закапывать предлагает - давайте будем хранить БД условных фейсбуков в текстовых файлах, ну а что?

Если честно, то я уже задолбался оттирать экран от его жира при каждом посещении ЛОР.

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

из наимерзотошных пород инженеров

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

sbu_shpigun
()
Ответ на: комментарий от Minoru

Твой пример не очень удачный, если учесть, что Столяров не приемлет все эти «соц. сети» (как минимум из-за централизованности), а также сами корпорации (включая некоммерческие), и предлагает бороться с ними за счёт жёсткого регулирования юр. лиц.

rOgret
()

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

Этот шизоид до сих пор учит судентов в общем потоке?

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

А, ну т.е. академическая крыса. Знаем таких, лично мне жизнь подпортили знатно.

Имейте совесть. За Столяра в МГУ говорят, что он ни кого ни заваливал, если человек не тянул проганье, он к нему не лез. Вы вообще уже попутали, кроете человека на чём свет стоит, за что? За то что он чего-то не понимает.

Тип методички выложил бесплатно, еще хостит у себя. Вы его пылесосите. Уймитесь уже.

lbvf50txt
()
Ответ на: комментарий от Minoru

А, ну т.е. академическая крыса.

Если почитать его резюме http://www.croco.net/croco/cv.html , то видно, что до 2003-го года вовсе нет, даже два года работал программистом в Jet Infosystems. Вот потом и до осени 2022-го (из других источников, рехюме на 2013-м заканчивается) на кафедре в МГУ.

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

Тип методички выложил бесплатно, еще хостит у себя. Вы его пылесосите. Уймитесь уже.

С ним парадокс получается. Он сделал и делает немало полезного, но такое ощущение, что понимание в основном застыло на уровне начала 2000-х и это уже стало приводить к раздаче вредных советов.

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

Скажем так, свое мнение мы строим на основе его высеров. Причем, отнюдь не 2000х.

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

С ним парадокс получается.

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

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

написал хорошие методички.

Какие нахрен методички, столяровскими гроссбухами убить можно.

frier
()
Ответ на: комментарий от Neresar

Тренерам хотя бы несложно перечислить свои спортивные заслуги. Не тем которые подрабатывают в твоем местном спортзале, конечно.

Столяров же… ну… дважды кандидат и доцент, но к программированию это явно имеет крайне посредственное отношение.

a1ba ★★★
()
2 декабря 2025 г.
Ответ на: комментарий от monk

Сибуя Ямамото Алгоритмы обработки данных

/преамбу/:очевидней генезис взглядов пациента :

оглавление как раз об бд-вании без sql - а чисто реализациями под задачу от верха(по современному речекряку - дизайна архитектуры) до низа(реализация на асме ибо иначе медленее исполнение в потенциале):

Глава 1. Данные
    1.1 Основные типы данных
        1.1.1 Элементы данных и структуры
        1.1.2 Представление структур
        1.1.3 Внутренняя и внешняя память
    1.2 Обобщённые структуры данных
        1.2.1 Отношение
        1.2.2 Структуры данных и отношения
    1.3 Динамическое распределение памяти
        1.3.1 Простые методы
        1.3.2 Метод близнецов
        1.3.3 Анализ

Глава 2. Поиск данных по ключу
    2.1 Поиск по дереву в оперативной памяти
        2.1.1 Что такое дерево?
        2.1.2 Бинарное дерево
        2.1.3 Оптимальные и случайные деревья
        2.1.4 Сбалансированные деревья (АВЛ-деревья)
        2.1.5 Сильно ветвящиеся деревья
    2.2 Поиск по дереву во внешней памяти
        2.2.1 B-деревья
        2.2.2 Разновидности B-дерева
    2.3 Методы хеширования
        2.3.1 Методы случайного упорядочения
        2.3.2 Разрешение коллизий
        2.3.3 Анализ
        2.3.4 Совершенное хеширование
        2.3.5 Применение хеширования
    
Глава 3. Сортировка
    3.1 Внутренняя Сортировка
        3.1.1 Сортировка
        3.1.2 Методы сортировки
        3.1.3 «Быстрая сортировка»
        3.1.4 Другие методы сортировки
    3.2 Сортировка во внешней памяти
        3.2.1 Внешняя сортировка
        3.2.2 Отрезки и слияние отрезков
        3.2.3 Алгоритмы сортировки слиянием
        3.2.4 Эффективности внешней сортировки
    3.3 Объём вычислений при сортировки
        3.3.1 Минимальное число сравнений
        3.3.2 Сортировка с использованием специальных структур

Глава 4. Практические аспекты обработки данных
    4.1 Методы доступа к внешней памяти
        4.1.1 Методы доступа, реализуемые операционной системой
        4.1.2 ISAM ( индексно-последовательный метод доступа )
        4.1.3 VSAM ( виртуальный метод доступа )
    4.2 Структура памяти и поиск данных
        4.2.1 Доступ к записи по ключам
        4.2.2 Структура записи основного файла
        4.2.3 Структура файла с инвертированным индексом
    4.3 Уплотнение данных
        4.3.1 Кодирование
        4.3.2 Уплотнение данных в естественных языках
        4.3.3 Кодирование длин серий и другие методы
    4.4 Параллельная аппаратная сортировка
        4.4.1 Сеть сортировки из компараторов с двумя входами
        4.4.2 Сети сортировки и логические запоминающие устройства 

эдакий дайджест Кнутия в разрезе обработки данных с обзором дедовских ISAM/VSAM очень колоритно в сочетании с:

Петров А. 
Распределенные данные. Алгоритмы работы современных систем хранения информации

и 
Клеппман М.
Высоконагруженные приложения. Программирование, масштабирование, поддержка

*Второй источник благодоря микропроцессорной револиции(мсдосинью в фазе утёнка) осознание бесполезности ОперационнойСистемы(и даже BIOS) когда охота (по молодёжному)блэйзинги_фаст исполнения

ps 1.2.2 Структуры данных и отношения это про всю реляционность SQL/NoSql/NewSql/WauWSQL/etcSQL

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

бытиё .. сознание

у Столярова редко когда придаётся значения транзакциям и прочей синхронности что в очередной раз подтверждает обусловленность его взглядов уткой_эффектом

qulinxao3 ★☆
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)