LINUX.ORG.RU

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

 ,


0

4

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

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

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

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

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

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

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

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

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

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

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

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

s-warus ★★★★
()
Последнее исправление: s-warus (всего исправлений: 1)
Ответ на: комментарий от bugfixer

ответ всегда один - «недостойны сей чести, в лес».

Скорее всего такие ответы тем, кто ей хамит.
Что до публикаций исходного кода, то вполне допускаю, что она не имеет право его публиковать.
Впрочем как на самом деле мне не ведомо, но специалист она хороший.

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

но специалист она хороший.

Хотелось бы увидеть хоть сколь-нибудь достоверное тому подтверждение. А пока были лишь голословные утверждения. Да и та скорость и тот объём с которыми мадам коменты строчит заставляют задуматься о её занятости и востребованности.

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

Да и та скорость и тот объём с которыми мадам коменты строчит заставляют задуматься о её занятости и востребованности.

Одиночество …

Пошучу

«Вот и нету вожаков»

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

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

Это да, с конкретикой проблемы.

её неоднократно (не я) просили код показать, ответ всегда один - «недостойны сей чести, в лес»

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

Только вот я пока еще не видел ни одного хорошего специалиста, который был бы настолько самоуверен в собственной квалификации.

Я бы хотел услышать что-то в духе «результатами моего труда вы пользуетесь каждый раз (условно) заглядывая в холодильник «Ока», или покупая билеты на самолёты Аэрофлота», пусть конкретные продукты назовёт.

Это тоже так себе показатель. Чем круче проект, тем меньше там вклад одного человека.

В общем, я давно уже вывел для слов Iron_Bug коэффициент доверия и не принимаю ее утверждения слишком уж всерьез. Но вот перлы «тут все тривиально» доставляют даже не смотря на это.

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

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

Даже сам факт участия в подобных продуктах позволяет предположить что есть хоть какое-то понимание ответственности за то как они работают, а не вот это вот всё…

bugfixer ★★★★★
()
--- Ты умеешь готовить курочку в апельсиновом соусе?
--- Когда я работала над одним из многих своих ультранадёжных, сверхзащищённых, меганагруженных проектов, в офисном центре была кафешка и там подавали это блюдо. Так что я, в отличие от абсолютно безразличного мне плебса, имею представление об азиатской кухне!
anonymous
()
Ответ на: комментарий от s-warus

может сетевую игруху на webassembler, или gcompiz нормальный для обучения детей в deb7 был нормальный был мультики схемы учил рисовать, а сейчас повесточка эко-зелёно-голубая скучный стал.

Весьма интересная технология.

Экспромтом.

«Заточить» её в качестве ВМ для обычных программ?

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

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

Все что ты описываешь это асинхронная модель с независимыми шардами, каждый из которых сидит на своем ядре, поллит / прерывается и занимается приоритизацией выполнения. Так nginx работает, так NVMe диски работают, так low-latency софт по RDMA какому-нибудь работает.

Единственный смысл в межшардовой коммуникации – это когда обработка занимает на три порядка больше, чем само IO (PostgreSQL какой-нибудь, который прежде чем что-то сделать, стадию планирования проходит). Это довольно редкий случай в любой области, которая прописана в твоих компетенциях (сети и быстрая обработка данных).

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

Единственный смысл в межшардовой коммуникации – это когда обработка занимает на три порядка больше, чем само IO (

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

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

Cкорее она занята не отптимизацией прикладных проектов, а эффективностью работы сети.

Я поэтому и написал что это не очень стыкуется с её областью. Когда у тебя RDMA RTT занимает условные 5 us и операция фильтрации ещё 50-300 us, ваще не ясно зачем породжать синхронизацию. Это приведет к резкому росту задержек на p95 без какого-то внятного обоснования зачем.

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

Когда у тебя RDMA RTT занимает условные 5 us и операция фильтрации ещё 50-300 us, ваще не ясно зачем породжать синхронизацию.

Конкретики в её постах нет, так что права она или нет …

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

Конкретики в её постах нет, так что права она или нет …

Ну вот, например, для ходовых мелланоксов (CX6) через свич:

$ taskset -c 2 ib_send_bw -zR -I 0 -s 1024 -p 1234 -d mlx5_1 192.168.1.1
[...]
    #bytes #iterations    t_min[usec]    t_max[usec]  t_typical[usec]    t_avg[usec]    t_stdev[usec]   99% percentile[usec]   99.9% percentile[usec] 
 1024    1000          2.90           3.50         2.96     	      2.96        	0.00   		3.20    		 3.50   

Это мы послали 1 KiB и получили ответ что на той стороне его получили, с p99 3.20 us. Как только здесь появится CAS, на котором все встанут, то мы легко можем получить ещё 5-10 us сверху, в зависимости от количества ядер (чем больше, тем хуже, очевидно).

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

anonymous
()