LINUX.ORG.RU

DB as IPC antipattern

 , ,


0

1

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

В мире 1С нормой считается передача данных через xlsx, лежащие в расшаренной папке. Каждый реализует RPC в меру своей испорченности.

А ТС - жирный тролль, ждём вбросов на тему «как правильно выйти из рекурсии через переполнение стека» и «как записать свои числа в /dev/random».

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

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

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

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

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

Я привёл тебе определение базы данных, но ты истерить начал. Теперь пишешь про «соскочить», «дебилы для дебилов пишут» и прочее. Ну какое здесь обсуждение. О чём ты.

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

ТС - жирный тролль

Это просто на фоне «официальной точки зрения»(доказать которую тут никто не смог и не сможет). Но вроде бы ты верно понял скрытый смысл, nice.

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

Бери нормальный C++ клиент к БД, например, к Постгресу и юзай.

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

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

В Вики написано что база антипаттерн в случае когда что-то другое лучше. То есть по определению.

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

Если данные потеряются, то будет вот это и вот это. Делаешь софт, который может это выдержать

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

В Вики написано что база антипаттерн в случае когда что-то другое лучше

Да, действительно, невнимательно прочёл. В такой постановке ok.

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

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

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

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

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

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

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

SQLite как готовое безгеморное и безсерверное решение чем не устраивает?

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

А я и не про кафку, а про AMQP/JMS брокеры. Там на худой конец есть и персистенс в jdbc

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

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

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

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

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

Насчёт вики я ошибся, да. Проблема в том, что не один я такую ошибку совершил. Так что говорят, и ещё как.

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

ИПЦ через базу

А как с базой работать будешь? Неужели через ipc?

Чтобы сделать ipc нужен ipc с базой. Рекурсия, однако.

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

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

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

anonymous
()

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

Лишняя работа по изобретению протокола который будет построен на примитивах которые не позволят реализовать его эффективно by-design, лишние ресурсы, удивляет пользователя, плохо масштабируется (CAP теорема какбэ намекает, а целостность данных тут скорее то, что хотелось бы выкинуть).

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

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

О! Ещё база данных это дополнительная точка отказа будет в целом ряде случаев. Например, если использовать её только для ipc (про что в приведённой тобой брошюрке с вики скорее всего и речь).

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

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

было бы лучше, чем альтернативы эти ресурсы экономящие

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

а целостность данных тут скорее то, что хотелось бы выкинуть

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

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

Кстати, я понял, что не так с анонами стало - каникулы же, лол.

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

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

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

Блин, царь чё логиниться начал…

Рак мозга говорят лечат медицинской марихуаной, но - только один раз.

pon4ik ★★★★★
()

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

grpc, thrift

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

царь

Чини детектор. И да, я всё ещё жду обещанных легковесных альтернатив.

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

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

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

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

мы в нулевых фор фан писали текстовую рпг чисто на триггерах и хранимках в оракле (правда не доделали).

pi11 ★★★★★
()

Гипотеза

Пользователи хотят консистентности. Консистентные данные сложно масштабируются. Потому грузить БД чем-то кроме хранения == залезать бутылке в горло. Пока всё влазит в одну машину – проблемы нет. А потом нужно всё переписывать. Последнее отличает хорошую архитектуру от плохой. Следовательно, subj.

DonkeyHot ★★★★★
()

Базы данных очень разные, но «в принципе» антипаттерн складывается из двух частей:

  1. Больших затрат на персистентность и/или долговечность данных проходящих через Database-as-IPC.
  2. Затруднений из-за отсутствия или неуклюжести API базы данных для организации работы для прослушивания запросов и получения ответов.

Поэтому для «традиционных» SQL-ных БД это (примерно) антипаттерн, а (например) для Tarantool - один из штатных режимов работы (с массой возможностей и крутилок).

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

Уж точно надёжнее db :D

Забыл в оп написать, что тред не для любителей альтернативной терминологии. Но да ладно.

cppsektant
() автор топика
Ответ на: Гипотеза от DonkeyHot

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

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

Поэтому для «традиционных» SQL-ных БД это (примерно) антипаттерн, а (например) для Tarantool - один из штатных режимов работы (с массой возможностей и крутилок).

В такой формулировке(с небольшими оговорками) тоже ok.

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

только рсубд подразумеваешь

Я под БД подразумеваю места, которые нельзя откатить на позавчерашний бэкап.

хранить придётся в любом случае

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

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

восстанавливая из левых источников

Странная формулировка. Хранить не нужно, но есть левый источник, который хранит данные. Это новая философия разработки - всё, что можно, объявить «левым»?

или забивая

Как я уже писал, можно забить сразу, прямо на организацию ипц. Ибо зачем оно нужно, если на передаваемые данные можно забить.

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

grpc, thrift Хахахахаха :-) Это вообще не ясно для чего нужно :-)

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

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

Это же 90% рынка рабочей силы.

byko3y ★★★★
()

Хороший такой ipc в виде сервера (базы данных), который (сервер) по определению умеет только принимать запросы от клиентов. Почти всю логику ipc (обмен сообщениями, синхронизацию, вызов процедур, что-там-еще) придется писать на стороне клиента через механизм запросов. Хороший, качественный «шаблон».

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

Странная формулировка

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

А если этого не сделать хорошо – при сюрпризах ты даже не узнаешь, что именно потеярлось. Там, где это приемлемо, мысли о важности таких данных есть просто почёсывание ЧСВ.

А если они не достаточно важны, чтобы об этом задуматься –

забить сразу, прямо на организацию

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

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

Гвозди можно микроскопом забивать. Ну жа ладно.

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