LINUX.ORG.RU

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

 ,


0

6

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

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

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

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

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

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

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

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

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

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

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

При изменении требований заказчика схема SQL мешает, а не помогает.

Это ваше личное дело. У меня складывается впечатление, что вы просто не знаете SQL и вам по каким-то причинам нет желания или возможности его изучать.

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

это уже цвета субстанции, так сказать. не суть важно.

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

В SQL просто нет нужной конструкции. Например, надо номер строки результата. В массиве/списке будет просто счётчик при обходе. В SQL нет переменных и делают что-то вроде

select custGreater.Name, custGreater.SurName,
      case when min ( custLess.Name ) is null then 1 else 1 + count (*) end as  Number

from
      dbo.Customers custGreater
            left outer join
      dbo.Customers custLess on
            custGreater.Name > custLess.Name or
            (
                  custGreater.Name = custLess.Name and
                  custGreater.SurName > custLess.SurName
            )
group by custGreater.Name, custGreater.SurName

Вместо линейной сложности квадратичная.

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

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

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

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

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

Дело в том, что я не буду разбираться этот вымученный код с кучей if и else. Инструмент надо использовать по назначению. SQL это часть, а не целое. Что-то на нём делать просто, а что-то просто делать на другом языке.

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

что вы просто не знаете SQL и вам по каким-то причинам нет желания или возможности его изучать

Мне не нравится, что приходится постоянно преобразовывать данные в две существенно разные семантики: одна в языке программирования (в моем случае, Racket), другая в SQL.

Наверное, единственное исключение, где с SQL работать удобно, это 1С. Но как раз там заметна зависимость производительности от оптимизатора СУБД: перешли с MS SQL на Linux/PostgreSQL - пришлось переписывать запросы.

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

Мне не нравится, что приходится постоянно преобразовывать данные в две существенно разные семантики: одна в языке программирования (в моем случае, Racket), другая в SQL.

Это ваше дело. SQL как и Regex это инструмент ко времени и к месту. Многие не любят SQL и Regex и пытаются рассказать какие это плохие решения, просто потому, что в них не разобрались.

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

ты смотришь на результат джойна

При чём тут джойн? Я смотрю на бумажный гроссбух. В котором операции типа

Дт 41.01 Доска; Склад 1 
Кт 60.01 Строймаркет; Договор 123
2000 руб; 10 шт.

Хочу эти операции автоматизировать. Но SQL требует ограничить возможные значения полей.

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

Проще сделать свой std::string поверх mmap

Ну да, ну да. Сначала одни люди советуют делать свой std::string, затем другие люди обзывают C++ пугалом и показывают пальцем на десять самописных классов строки в каждом C++ном проекте.

Какую кодировку вписывать?

А разве сейчас чем-то кроме UTF-8 следует пользоваться?

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

Также и с Regex. Если он каждый раз разный (в поиске пользователем), он нужен. А если надо проверить соответствие фиксированному шаблону, почти всегда проще разобрать другими средствами.

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

В SQL просто нет нужной конструкции. Например, надо номер строки результата

row_number есть наверное во всех популярных SQL СУБД

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

А разве сейчас чем-то кроме UTF-8 следует пользоваться?

Довольно часто есть соблазн перейти на cp1251 и сэкономить таким образом примерно 40% занятого места.

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

приходится постоянно преобразовывать данные в две существенно разные семантики: одна в языке программирования (в моем случае, Racket), другая в SQL.

Для этого же орм вроде и придумали, или путаю?

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

Хочу эти операции автоматизировать. Но SQL требует ограничить возможные значения полей.

Вы не умете проектировать базы данных. Этому надо учиться. SQL состоит из двух языков DDL и DML.

DDL - Data Definition Language язык на котором вы описываете структуру базы данных. Это квалификация «архитектора».

DML - Data Mantipulation Language это язык запросов. Это квалификация «пользователя».

У вас нет навыков и знаний в DDL, и вы обвиняете SQL в том, что у вас не получается. Учиться надо.

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

А если надо проверить соответствие фиксированному шаблону, почти всегда проще разобрать другими средствами.

Кто бы сомневался. Классика жанра.

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

А разве сейчас чем-то кроме UTF-8 следует пользоваться?

Так в std::string могут быть любые байты.

    std::ifstream file("example.txt", std::ios::in | std::ios::binary); 
    if (!file) {
        std::cerr << "Failed to open file\n";
        return 1;
    }

    std::string content((std::istreambuf_iterator<char>(file)),
                         std::istreambuf_iterator<char>());

Я же не про std::wstring.

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

Про row_number написали уже, но даже если его нет, то стоит задать вопрос, а запрос к БД - это правильное место для присвоения этого номера? Где и как этот номер потом используется?

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

Вы не умете проектировать базы данных. Этому надо учиться. SQL состоит из двух языков DDL и DML.

Учился. И пришёл к выводу, что другие методы хранения часто лучше.

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

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

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

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

Для этого же орм вроде и придумали, или путаю?

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

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

sql это намеренное абстрагирование от курсоров( ну да !) и оперирование множествами и фильтрацией их

ваще для лучшего контекста можно взять кирпич Дейты но не текущего 8? издания

а ещё советское издание 1980-ых начала - вроде 2 издание а оригинал ваще 1978? эт тада ещё sql ( и софт «мимикрирующий» под него) не победил и поэтому в тех учебниках по бд как раз срази «все» три варианта распедаливались - иерархия (дерево) ; сеть (по факту граф с указателями и вырвиглазными индивидуальными реализациями ; декларативные множества ( на практике)

крч. sql это универсальный интерфейс к хитровывернутым структурам хранения данных (B(ly)деревья; битовые маски и прочие хитрые хитрости)

ежель же условия известны и заданы то очевидно sql излишний слой интерфейсной абстракции привносящий издержки универсальности

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

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

бери собол - и не страдай

чисто для бухгалтерии лучше до сих пор не придумали

ибо codasyl реально автоматизировали а не улучшали

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

Учился. И пришёл к выводу, что другие методы хранения часто лучше.

Что-то не заметно. Видно что вы разбираетесь в системном программировании, знаете системные вызовы, работали с многопоточностью.

А вот с архитектурой баз данных у вас квалификация отсутствует. И вместо того, чтоб признать квалификацию других разработчиков. Взять книги и изучить, вы не зная азов пытаетесь рассказать какой плохой SQL.

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

Банально экономит «страницы» кода.

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

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

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

Задача ORM добавить еще один слой абстракции, и отделить реализацию приложения уже и от конкретной DBMS. По этому ORM использует еще более усредненную версию языка SQL. Сами DBMS используют модифицированные подмножества, а ORM идет еще дальше.

Если у вас в ORM «протекают абстракции» или «не работает арифметика», значит вы не корректно провели декомпозицию задачи. И пытаетесь использовать инструмент не корректно.

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

Вместо: «Дай арбуз. Сладки и спелый. Чтоб звенел когда стучу.»

А потом рассказываете какой торговец из Азии глупый, не понял вашу утонченную речь.

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

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

Мы друг друга понимаем без слов. По этому так раздражает критика SQL от тех кто не разбирается, и рассказывает какой плохой двухколесный велосипед «я с него постоянно падаю».

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

и отделить реализацию приложения уже и от конкретной DBMS

На практике это миф.

Чтобы ORM’ка могла обеспечить переход между, не знаю, postgresql и sqlite3, то она должна иметь только набор функций общий между ними, который окажется весьма куцым. Как только хочется воспользоваться какой-то функцией, которая не характерна для всех СУБД, то код, хоть с ORM, хоть без, оказывается привязан к конкретной СУБД.

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

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

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

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

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

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

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

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

и отделить реализацию приложения уже и от конкретной DBMS

На практике это миф.

RubyOnRails вполне себе поддерживает такие возможности. И применительно к философии RoR идея ORM прекрасно работает.

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

И если проект будет успешный, то все готово к переходу на следующий этап: заменить sqlite на postresql и дальше по списку.

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

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

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

В типичном проекте в котором задействован руби/питон или что-то подобное, слабое место это не sqlite3, который как хранилка прямоугольных табличек в общем-то весьма шустрый и адекватный (до тех пор пока не нужна живая и желательно не самопальная репликация), а сам руби/питон. Тормозят-с. И переходить на постгрес приходится не из-за того что sqlite3 что-то не может, а потому что сервер приложений теперь нужен в 8 экземплярах на разных серверах, которые будут стучатся по сети в базу, а sqlite3 так не умеет.

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

а сам руби/питон. Тормозят-с.

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

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

Я на питоне лет 10-15 пишу и хорошо знаком с его производительностью. Единственный способ избежать тормозов на питоне — минимизировать количество кода на этом самом питоне. Расчёты — в сишные/растовые/etc екстеншены. Хитрые выборки/агрегации — внутрь в запрос к СУБД. Ну или же мы изначально работаем над настолько медленной проблемой, что тормоза питона нам не очень заметны: общаемся с удалённой системой к которой пинг 50мсек, и что нам лишняя 1мсек от питона.

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

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

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

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

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

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

А вот с архитектурой баз данных у вас квалификация отсутствует.

За работу с базами данных (1С) я зарплату получаю. Уже 20 лет.

Взять книги и изучить, вы не зная азов пытаетесь рассказать какой плохой SQL.

У меня достаточно опыта, чтобы видеть недостатки и ограничения SQL.

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

Хитрые выборки/агрегации — внутрь в запрос к СУБД

Однозначно, на любом ЯП. Как и многое другое: что-то выносим в асинхронщину, что-то в кэши, что-то на клиент, что-то в протокол — и в итоге от ЯП остаётся след в пол-копейки.

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

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

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

кэши

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

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

Если у вас в ORM «протекают абстракции» или «не работает арифметика», значит вы не корректно провели декомпозицию задачи. И пытаетесь использовать инструмент не корректно.

Так я про это и пишу. Что всё время приходится помнить, что если что-то арифметическое написал в ORM в отборе, то оно будет считать по урезанным правилам СУБД, а не по правилам языка программирования. Если надо нормально, то надо вытаскивать без отбора и вычислять уже в нормальной программе.

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

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

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

Чтобы ORM’ка могла обеспечить переход между, не знаю, postgresql и sqlite3, то она должна иметь только набор функций общий между ними, который окажется весьма куцым. Как только хочется воспользоваться какой-то функцией, которая не характерна для всех СУБД, то код, хоть с ORM, хоть без, оказывается привязан к конкретной СУБД.

На самом деле не так всё плохо. ORM предоставляет некий интерфейс, который хоть как-то работает на всех реализациях, но на некоторых работает быстрее. Условно, надо запрос по иерархии: если Postgres, будет запрос с его расширением, если что-то более примитивное, будет запрос в цикле с тем же результатом. С точки зрения пользователя меняется только производительность.

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

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

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

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

закэшировать редкоизменяющийся

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

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

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

а то, что нет удобных систем для управления - это проблема. но с другой стороны, управленцы сами по себе ни разу не программисты. если программисты - они нафигачат сами себе любой круд без вопросов. существуют уже готовые системы управления, разные CRM, от мелких до очень сложных, но они тоже стоят денег и под них нужно приспосабливаться, интегрировать в них другие процессы с данными, обучать персонал и прочее. а 1-С - это просто то, что оказалось под рукой. поэтому туда пытаются лепить всё подряд: «я его слепила из того, что было». это примитивнейший ЯП и в нём даже макака может слепить формочку с выборкой из БД. поэтому оно приобрело популярность в массах.

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

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

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

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

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

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

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