Eleneldil G. Arilou (arilou) wrote,
Eleneldil G. Arilou
arilou

Category:

Плата за абстракцию

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

Но вот бывает нужно сделать такую простую операцию как, скажем, увеличить текущее значение какого-либо счётчика. в общем, изменить значение, взяв за основу текущее. В SQL это можно было бы сделать одним запросом. Т.е. атомарно. А в CMS в интерфейсе её хранилища данных надо прописать операцию, которая сделает это. И то мы будем ограничены в выборе возможных действий (или придётся делать довольно неслабые навороты, чтобы дать пользователю писать формулу для изменения значения).

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

С точки зрения простоты реализации только и остаётся, что ставить на кусок данных блокировку, тащить данные в нашу программу, там изменять, записывать обратно, блокировку снимать. Итак эти блокировщики устроить, чтобы не забывать их все снимать не позднее окончания обработки запроса. Ну и смириться с тем, что для простой операции изменения одного числового поля мы сначала потащим данные из базы в приложение, там их обернём в принятый в нашем движке вид (в лучшем случае просто хэш, а то и, чего доброго, полноценный объект, а потом изменённые данные записывать обратно в базу. И счастье нам будет, если СУБД работает на том же компьютере. Ну ладно, путь и в другой виртуалке, ну прогуляются данные туда-обратно по внутренней петле TCP/IP...

Эх...
Subscribe

  • 770 Miles. California, Zinfandel. 2016

    Ц: бордово-малиновый, чистый, слегка прозрачный А: животинка, подлесок, чернослив, ваниль, красные ягоды (смородина) В: танины мягкие, не…

  • Geyser Peak Zinfandel, 2016, California

    Виноград: Зинфандель, Сира, Кариньян Аромат: кожа, ваниль, какие-то специи; нотки шоколада, бадьяна и корицы; отголоски шоколадного батончика;…

  • Про миф о том, что "дешевле XXX р. вин не бывает"

    Недавно Майкл постил ссылку на статью о том, "почему дорогое вино кажется более вкусным". Статья, увы, как это часто бывает, полученные учёными…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment