Цитата (chee @ 6.01.2017 - 00:53) |
Guest, ну тут ты его не совсем понял, речь шла о двух приложениях у которых, допустим, 50% уникальной функциональности, а 50% общей. Я думаю он это имел ввиду. |
Ну я уже немного троллю его. Просто ему нужно гуглить, а не рассуждать о дублировании.
https://ru.wikipedia.org/Микросервисы
что-то ваши холивары начинают меня утомлять... старею наверно
Скажу только одно триггеры и хранимые процедуры очень полезная, но в большинстве случаев ненужная вещь. Многие программисты озабочены нагрузкой на БД и доводя это до абсурда сокращают количество запросов к БД ради самого сокращения количества запросов, и при этом с лёгкостью херачат туда триггеры, которые сами по себе не "пряник".
Триггеры нужны там где без них не обойтись, а не там где "не хватает ума написать обычный запрос".
Ну и, для общего развития, при работе с денюжкой чаще помогают транзакции нежели триггеры.
_____________
Стимулятор ~yoomoney - 41001303250491
Цитата (depp @ 6.01.2017 - 01:16) |
триггеры это прежде всего целостность данных. и никто в жизни не сможет доказать что на уровне приложения можно поддержать целостность данных лучше, чем на уровне встроенных средств бд. |
Я не эксперт в этом, потому я не скажу, лучше ли они справляются в этом деле чем клиентская аппликуха (но возможно тут я соглашусь, так как у тригерров данные с которыми они будут работать имеют вероятнсоть быть более персистентными чем в апликухи). Но опять же, я тут поднимал вообще другую тему, применимость всех этих извращений(триггеров, процедур, планировщика, расчет времени в СУБД) в повседневных задачах программиста.
Valick, ну в принципе, я с тобой согласен.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Цитата (depp @ 6.01.2017 - 01:16) |
вот у вас спор то тут. тут как с дампами. также и программисты. те кто не использует триггеры и те кто уже использует. видимо, еще не дорос. не в обиду сказано. триггеры это прежде всего целостность данных. и никто в жизни не сможет доказать что на уровне приложения можно поддержать целостность данных лучше, чем на уровне встроенных средств бд. |
Ну да, у тех кто не дорос (не в обиду сказано), часто бывает бзик по поводу целостности данных, ведь они еще ничего не слышали о
eventual consistency и распределенных систем не писали. Распределенные приложения вообще никогда не бывают в согласованном состоянии в один момент времени. Например все видели, что с банковского счета списывают средства сразу, но на другом они появляются только спустя N времени. Всё это время целостность данных нарушена.
Просто есть приложения, которые не уживаются в рамках одного сервера. И всё, к чему ты привык триггеры, ACID, транзакции и целостность данных прямо в этот момент это всё не работает в распределенных системах.
Цитата |
триггеры это прежде всего целостность данных |
Ок. В монго нет триггеров. По твоему у неё проблемы с целостностью данных или может всё же проблемы у программиста?
Цитата (Guest @ 6.01.2017 - 01:53) |
с банковского счета списывают средства сразу, но на другом они появляются только спустя N времени |
как раз работаю с финансами. и хочу сообщить вам, что это не имеет ничего общего с распределенными системами.
монго - nosql база. у нее по определению не может быть триггеров. это просто хранилище.
За всех говорить не нужно. Всем понятно, что бывают межбанковские переводы. И всё представление о триггерах, acid, транзакциях моментально рухнет.
я вам еще раз повторю. я работаю с финансами. и использовать в своей сфере не реляционные бд подобно разорению. банальная ситуация: человек хочет перевести средства. мы проверяем есть ли нужная сумма. nosql со своим "eventual consistency" ответит что да. а на самом деле - нет. понимаете?
Цитата (depp @ 6.01.2017 - 01:58) |
монго - nosql база. у нее по определению не может быть триггеров. это просто хранилище. |
Я вас прошу, не топите себя. Ваше "по определению" не верно. Cassandra, DynamoDB и еще куча баз данных тоже nosql, но поддерживают триггеры. Даже для монго фанатами написаны костыли добавляющие триггеры.
Цитата (depp @ 6.01.2017 - 02:18) |
я вам еще раз повторю. я работаю с финансами. и использовать в своей сфере не реляционные бд подобно разорению. банальная ситуация: человек хочет перевести средства. мы проверяем есть ли нужная сумма. nosql со своим "eventual consistency" ответит что да. а на самом деле - нет. понимаете? |
Я вам еще раз повторяю, что средства списываются сразу. Зачисляются спустя время. Eventual consistency ответит что нет. а на самом деле - тоже нет. понимаете?
Eventual consistency это не что-то из мира nosql. Это просто подход. И может применяться в контексте реляционных, графовых, объектных и каких угодно баз данных.
вы меня не передразниваете. nosql базы это хранилища. использовать хранилища и делать из них sql базу? не вижу ни одной задачи для nosql баз, кроме логгирования.
вопрос был про триггеры. вы приплели тут и mongodb и eventual consistency. и еще Cassandra с DynamoDB. в чем смысл вашего сообщения? триггеры для вас это плохо? не используйте.
depp, нет не плохо. Плохо то, что программисты не понимают, когда использовать, а когда не использовать. Даже в этой ветке, кто-то использует, чтобы сохранить целостность, кто-то устранить дублирование. Кто что. И гуглить не хотят, что для решения всех этих задач есть подходы лучше. Что триггеры имеет смысл использовать, если бек это тонкая прослойка без логики для передачи данных с базы на фронт.
Цитата |
в чем смысл вашего сообщения? |
Вы написали про целостность данных. Я вам немного рассказал, что целостность она разная бывает. И что поддерживать её можно другими средствами, без размазывания логики между бекендом и базой.
вы меня удивляете своими сообщениями. в чем по вашему смысл триггеров? и не надо в гугл отправлять.
Цитата (Guest @ 6.01.2017 - 03:23) |
Даже в этой ветке, кто-то использует, чтобы сохранить целостность, кто-то устранить дублирование. Кто что. И гуглить не хотят, что для решения всех этих задач есть подходы лучше |
опишите тогда эти подходы.
Цитата (depp @ 6.01.2017 - 03:51) |
в чем по вашему смысл триггеров? |
Я уже писал, использовал если бы не было бекенда как такового, но кое какая минимальная логика присутствала. Можете ознакомиться почему триггеры это зло
http://allthingsoracle.com/the-problem-with-triggers/Посмотрите, что пытается сделать ТС. Для решения его задачи не нужен триггер. Ему нужно сделать это в приложении внутри тразакции. Никто потом при рефакторинге не вспомнит, что кто-то N времени назад добавил триггер. Даже сам этот кто-то не вспомнит. И потратят кучу времени на деббагинг, прежде чем поймут, что за чудеса происходят. Остальное проблемы, которые вам могут подарить триггеры, читайте в статье, ну или гуглите. Найдете то, что подавляющее большинство хейтят триггеры и с ними невозможно не согласиться.
Цитата |
опишите тогда эти подходы. |
Я уже писал. Нужна целостность - используйте транзакции, если распределенное приложение - используйте eventual consistency.
Нужно устранить дублирование - используйте SOA/микросервисы. Сделайте вместо триггера сервис и пусть другие сервисы обращаются к этому сервису, когда им нужно выполнить данную функциональность.
Всё это гуглится за несколько секунд, во всех подробностях.
Zzepish
6.01.2017 - 12:39
Valick
тут обучающий момент для меня больше, чем выполнение задания. Условие: данные будут вводиться на прямую через бд. Т.е. нуден триггер, чтоб самому не высчитывать и не править еще огдни данные
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.