LINUX.ORG.RU

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

 ,


0

4

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

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

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

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

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

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

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

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

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

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

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

< мы такое впихивали в SQL, когда писали бухгалтерию для ЖД.
правда, это было давно, ещё в 2000 году.

впихивали через таблицы, которые определяли связи между разными
сущностями (документами и прочим).

В середине 90-х на Foxpro-2 разработал визуальный генератор отчётов и диалоговых форм.
Можно было ему на вход дать какой-то текстовый отчёт, он анализировал его и формировал шаблон отчёта с всеми детальными строками и итоговыми с учётом вложенности итогов.
Кроме этого можно было из других отчётов подтягивать поля и итоги. Он всё правильно центрировал, ….
Генератор генерировал исходный код на Foxpro 2.
Разработал библиотеку для Perl, которая содержала API Foxpro-2.
Подружил Foxpeo-2 с Perl и все отчёты формировал Perl.
Это всё работал на Linux под Wine.
Пришлось научить Linux правильно интерпретировать некоторые сочетания Ctrl, Alt, …

Всё летало.

Запросто за пол дня мог четыре сложных отчёта реализовать.
Ещё раз акцентирую то, что генератор генерировал оптимальный код для Foxpro-2.

О нынешнем проекте не раз постил.

Пошучу.

Столяров ПРАВ.
СУБД не нужна.
Этот проект позволяет программисту лишь указать, архитектуру данных, а API позволит их использовать в памяти и файле.

Никаких сериализаций - «Только чай».

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

Вот что меня всегда интересовало, чем человек живёт, чем дышит.

«Эту жизнь нужно прожить так, чтобы не было мучительно больно за … годы» (ну вы поняли).

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

но вообще, раньше книги и летописи писали довольно редкие грамотные люди

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

Qui-Gon ★★★★★
()
Ответ на: комментарий от rtxtxtrx

и дугин

Так Дугин же сейчас в мейнстриме и фаворе — возглавляет целую высшую политологическую школу РГГУ им. Ивана Ильина — любимого философа Президента.

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

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

главные объекты бухгалтерии - это счета и проводки. а на них уже надо навешивать всё остальное.

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

Внимательнее следить за базаром своим.

hobbit не даст соврать.
На этом форуме участвую много лет и ни в одном посте ни к кому никогда на личности не переходил.
Потому что НЕЛЬЗЯ!

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

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

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

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

у тебя будет ссылка на платёжки, авизовки, и прочие объекты. что тебя не устраивает?

В SQL нельзя в поле записать такую ссылку. Потому что одно поле может быть FOREIGN KEY только для одной таблицы. А если «платёжки, авизовки, и прочие объекты» запихнуть в одну таблицу, то придётся в эту таблицу запихивать все поля, которые есть хотя бы в одном документе.

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

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

Но это как раз то самое наследование, против которого ты возражала. И в реализации SQL приходится вручную отслеживать, что документ из таблицы-наследника не пропал (ведь все ссылки ведут только на таблицу Document).

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

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

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

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

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

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

Ну господа демократы вам нассали в ушки. Демос - это рабовладельцы. Да да - демократия она такая. Те кто кратос - должны иметь рабов дабы собственные детишечки могли посещать школу а не помогать лепить горшки. А те кто сам лепил горшки и привлекал детей - это охлос. То есть вроде не раб - но к властным процессом демократии не допущен. Демократия - это власть демоса - то есть рабовладельцев. А не то что говорят в ельцин-центре.

Ну а кроме шуток - рим был куда более цивилизован чем денисовская культура. Или сообщество неандертальцев из Шанидара. Ну компов и линукса у них не было - но считать их дикарями не умеющими читать и писать - глупо.

Qui-Gon ★★★★★
()
Ответ на: комментарий от Iron_Bug

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

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

никто мне в «ушки» не ссал. не распространяйте свой личный опыт на всех. это раз.

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

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

сравнивать Рим и денисовцев - очень странное занятие, не находите ли?

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

SQL нельзя в поле записать такую ссылку. Потому что одно поле может быть FOREIGN KEY только для одной таблицы.

Пошучу

Волга-Волга» (1938): «Пароход он хороший, только вы его руками не трогайте».

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

я тебе два раза написала про служебные таблицы соответствий. тебе надо разжевать, как младшекласснику?

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

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

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

планируй базу сообразно реальным объектам, с которыми ты будешь работать. и будет тебе счастье.

Вот реальные объекты:

документы: накладные, платёжки, оприходования, списания, …

справочники аналитики: товары, склады, контрагенты, …

Проводка с полями:

  • документ: один из элементов документов
  • счет дебета
  • аналитика1 дебета : один из элементов справочников аналитики или документов
  • аналитика2 дебета
  • аналитика3 дебета
  • счет кредита
  • аналитика1 кредита
  • аналитика2 кредита
  • аналитика3 кредита
  • сумма

Как эти реальные объекты (поля документ и аналитика) натянуть на систему типов SQL?

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

у меня эта ссылка почему-то ведёт вникуда

Это на 7 странице этого обсуждения: X512 ★★★★★ (23.09.25 19:07:17 YEKT)

просто разберись с техологией и глупые вопросы исчезнут сами собой.

Вот я в диалоге и разбираюсь. Смотрел, как разбирались разработчики Паруса, интелпика и 1С, описание выше приводил (у Паруса мегатаблица с кучей колонок, у 1С запросы 200 таблиц объединяют).

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

Интересных и остроумных троллей тут банят

Нет, такие чаще сами банятся через какое-то время (а потом могут вернуться, и по-новой). Банят обычно как раз неинтересных.

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

это твоя работа, а не моя. свою работу такого плана (только там было побольше объектов, потому что бухгалтерия ЖД была огромной и нестандартной) я уже сделала, в свой время. и я тебе объяснила принципы. дальше давай ты уже сам. но начинай не с отчётов, а с принципов работы бухгалтерии. потому что плясать надо от них. отчёты - это мишура и просто выборки из базовых таблиц с join'ами. из отчётов ты ничего не поймёшь про устройство бухгалтерии внутри.

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

Это не работа. Как работу её много раз с разным уровнем кривизны сделали. Я такое если буду делать, то, конечно, без SQL.

Мне просто интересно какой вариант решения этой задачи на SQL ты считаешь не кривым (при том, что вариант с наследованием ты уже забраковала).

Базовую структуру я описал. Она как раз не от отчётов, а от ввода (хоть бухгалтерской справкой, хоть каким-то документом с типовой хоз. операцией).

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

кстати, про рабовладение в Риме: слуги и рабы считались членами «семьи» (familia), проживали в одной вилле с хозяевами, их кормили, одевали и прочее. количество людей в «семье» римлянина определялось суммой непосредственных членов его семьи, слуг и рабов.

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

Не только 1С. Смотрел и конкурентов. Поэтому и пришёл к выводу, что хорошего решения на SQL эта задача не имеет.

@monk, вы же прекрасно понимаете, что из Запорожца Мерседес сделать неблагодарная задача …

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

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

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

тут вроде традиционно нет снежинок

Так ты и есть снежинка. Стоит кому-нибудь хоть самую малось поинтересоваться твоей картиной мира, как это оказывается

бессмысленные споры с троллями

ты тупой злобный тролль с интеллектом детсадовца

просто жЫвотное, опять твои тупые фантазии

ты — буквально словарное определение явления

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

Я же поля проводки показал. Это не из реверса, это из бумажного талмуда. Нужен документ-регистратор, нужна аналитика дебета и кредита.

всё нормально укладывается в SQL, если не заниматься извращениями

Как?

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

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

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

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

Весь тред не смотрел, может кто то уже и упомянул это, но хочу обратить твое внимание на то что sqlite это однопользовательская субд. Если ты делаешь бухгалтерию для домашнего использования или это у тебя учебный проект, то да, можно sqlite взять, но если это бухгалтерия предприятия, то данная субд не подойдет. В этом случае надо брать полноценную субд, ну хотя бы например mysql или что то подобное. Иначе не получится масштабировать проект в перспективе.

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

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

образование не было массовым. это три.

Образование образованию рознь. Три класса церковно-приходской - образование. ПТУ - образование. МГИМО - тоже образование. Но МГИМО - для элитки, а ПТУ - для охлоса. Но либо низших слоев демоса если в это верить. (кстати что там по латыни - колоны они кто?).

Рим не сильно отличался. Труды аристотеля или плиния старшего читали единицы. Но вот читать писать и считать - умели многие. Примерно как и сейчас.

Qui-Gon ★★★★★
()
Ответ на: комментарий от Iron_Bug

ну, я выше написала всё, что было необходимо для начала работы над схемой базы.

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

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

И 1С крутится и ИнтелПик крутился. Примерно так: https://genius.com/Nauchnotechnicheskirap-ff-and-into-production-lyrics

monk ★★★★★
()