LINUX.ORG.RU

DB as IPC antipattern

 , ,


0

1

Пацаны, а почему все считают что ИПЦ через базу - это что-то плохое? Ведь других надёжных способов организации взаимодействия не существует. А данный способ ещё и гораздо удобнее любого другого(если база уже есть). Получаем и рабочее решение, и удобство реализации. Что ещё надо?

а почему все считают

Кто все? Пруфы.

Если только на одном компьютере, а в рамках распределённых систем почему нет?

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

Кто все? Пруфы

https://en.wikipedia.org/wiki/Database-as-IPC

Если только на одном компьютере, а в рамках распределённых систем почему нет?

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

cppsektant
() автор топика
Ответ на: комментарий от cocucka

А что сокеты? Упал процесс/хост - данные потерялись. Для адептов никогда не падающего ПО другой пример - выключили сервис для обновления, к примеру, и опять - данные улетели в никуда.

cppsektant
() автор топика

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

i-rinat ★★★★★
()
Ответ на: комментарий от cppsektant

Так это ж межпроцессорная коммуникация, а не хранение данных. Надо гарантированную доставку? Используй брокеры сообщений. Базы данных они для структурированного хранения информации.

cocucka ★★★★☆
()
Ответ на: комментарий от i-rinat

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

cocucka ★★★★☆
()
Ответ на: комментарий от i-rinat

А как организовывать через неё сигнальный канал?

Например, так. А вообще, сигналку как раз выгодно пускать по сокетам/шаред-меморям/etc(и конечно же, теми самыми signal(7)), поскольку это никаких проблем не создаёт. А вот основные данные только через бд.

cppsektant
() автор топика
Ответ на: комментарий от cocucka

Надо гарантированную доставку? Используй брокеры сообщений

Я думаю, они не предоставляют достаточно гарантий. Они хотя бы на диск пишут? Сразу или «в фоне»?

cppsektant
() автор топика

ставлю свои носки, что статья написана каким-то маркетологом кафки или еще какой-то очереди.

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

cdshines ★★★★★
()
Ответ на: комментарий от i-rinat

а с кафкой ты как работаешь? так же истошно ее дергаешь :)

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

ТС, видимо, из таких

Чтоб два раза не вставать: а чем, собственно, плохи триггеры? Ну кроме очевидной трудночитаемости.

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

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

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

Не, я про другое. Удобство и быстрота реализации при наличии бд вопросов не вызывают. Главный вопрос, собственно: а каковы альтернативы?

cppsektant
() автор топика
Ответ на: комментарий от cocucka

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

Ты не показал ничего из заявленного. Может быть, всё это есть только в твоей голове?

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

Чем плоха логика на ДБ триггерах? Иди, поподдерживай приложение, написанное в таком стиле, я на тебя посмотрю.

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

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

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

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

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

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

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

в пределах рассыпающейся фс или харда не все ли равно база это или другие варианты

От всех возможных вариантов страховки нет и не будет, так что капитанство ни к чему.

а если все нормально с фс и хардом то зачем база, просто потому что удобно?

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

cppsektant
() автор топика
Ответ на: комментарий от cocucka

Ясно. Мог бы первым же постом так и написать, не мучился бы хоть.

cppsektant
() автор топика
Ответ на: комментарий от cdshines

redis при определенных условиях

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

cppsektant
() автор топика

Ведь других надёжных способов организации взаимодействия не существует.

Серьезно?

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

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

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

Обосновывай

Семок хоть отсыпал бы, еба

каким способом ты собрался терять данные при ipc через сокеты

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

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

От всех возможных вариантов страховки нет и не будет, так что капитанство ни к чему.

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

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

Ну это же ни разу не персистентный сторедж

каким местом надо писать, чтобы для IPC требовался персистентный сторедж?

не страхует от потерь при падении сразу после того, как приложение положило туда свои данные

биде тоже не страхует, прикинь

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

Семок хоть отсыпал бы, еба

Чолузь шоль помойный, семок ему. За интерес шевелись.

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

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

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

то что ты там дальше написал то не база, а в лучшем случае хранилище

У тебя какие-то свои особые определения. Именно база данных.

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

Даже больше скажу - даже писать за меня не обязательно.

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

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

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

каким местом надо писать, чтобы для IPC требовался персистентный сторедж?

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

биде тоже не страхует, прикинь

Ты знаешь, прикинул. Правда не про «биде», а про уровень твоей квалификации.

cppsektant
() автор топика
Ответ на: комментарий от cdshines

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

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

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

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

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

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

Собственно, пост и родился из подобной ситуации - попробовали «смешать», но в итоге сами «смешались».

cppsektant
() автор топика
Ответ на: комментарий от vedowi6419

Отношение количества пафоса к количеству конструктива в твоих сообщениях стремится к бесконечности.

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

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

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

Так, начались проклятья. Я ж говорю - иди на лавочке с бабками потрынди, с ними у тебя может и получится что-то.

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

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

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

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

cppsektant
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.