Всё! Места на тариф с проверкой кончились:) Теперь только если без проверки залетать)
🔥11😢1
Предлагаю завтра вечерком собраться и пообщаться в уютной атмосфере тут:)
Сможем обсудить микросервисы. Может кто-то посмотрел урок в записи и вопросы появились. Расскажу как на курсе дела и на вопросы поотвечаю про него. Ну и как обычно просто за жизнь тоже поболтаем:)
Трансляция будет завтра, 5 февраля в 18:30мск, в канале «уютный микросервис»
Сможем обсудить микросервисы. Может кто-то посмотрел урок в записи и вопросы появились. Расскажу как на курсе дела и на вопросы поотвечаю про него. Ну и как обычно просто за жизнь тоже поболтаем:)
Трансляция будет завтра, 5 февраля в 18:30мск, в канале «уютный микросервис»
🔥15👍3
Я как настоящий сеньор катнул в прод и зафакапил😢
Вчера главное такой говорю вам места на тариф с проверкой кончились и я выключил кнопку на нём, а сегодня утром смотрю кто-то купил. Сперва понять не мог как так вышло, а потом как дошло.
Когда кто-то покупает курс в рассрочку, то банк может решение о неё принимать с задержкой, а в это время заказ как бы забронен. В итоге я гляну на фактические оплаты и не учёл, что есть ещё те, кто ожидает решение банка или типо того.
В целом конечно 1 человек это не страшно, я смогу всё как надо проверить, но там ещё висит 7 заказов в статусе ожидания. И вот если они ещё апрувнуться, то всё пойдёт совсем не по плану. Я лимиты то эти не случайно поставил, а ориентируясь на свои возможности по ревью, чтоб качество не просело.
Каков вывод: тестить надо лучше всю систему:) Разумеется это всё пофиксим, а пока надо помониторить и понять масштаб проблемы. Думаю как вариант предложить тем, кто сейчас допом залетит или деньги вернуть или автоматом на следующий поток залететь. А то прикиньте народ приходит, чтоб их проверяли, а я уже в припадке бьюсь от количества ревью)
По шкале от 1 до 10 насколько я факапнул, как думаете?
Вчера главное такой говорю вам места на тариф с проверкой кончились и я выключил кнопку на нём, а сегодня утром смотрю кто-то купил. Сперва понять не мог как так вышло, а потом как дошло.
Когда кто-то покупает курс в рассрочку, то банк может решение о неё принимать с задержкой, а в это время заказ как бы забронен. В итоге я гляну на фактические оплаты и не учёл, что есть ещё те, кто ожидает решение банка или типо того.
В целом конечно 1 человек это не страшно, я смогу всё как надо проверить, но там ещё висит 7 заказов в статусе ожидания. И вот если они ещё апрувнуться, то всё пойдёт совсем не по плану. Я лимиты то эти не случайно поставил, а ориентируясь на свои возможности по ревью, чтоб качество не просело.
Каков вывод: тестить надо лучше всю систему:) Разумеется это всё пофиксим, а пока надо помониторить и понять масштаб проблемы. Думаю как вариант предложить тем, кто сейчас допом залетит или деньги вернуть или автоматом на следующий поток залететь. А то прикиньте народ приходит, чтоб их проверяли, а я уже в припадке бьюсь от количества ревью)
По шкале от 1 до 10 насколько я факапнул, как думаете?
🤣18🕊8🫡3❤2👍2
Трансляция началась) Это пост для вопросов и общения) пишите в комменты
Зачем нужны бекапы базы данных?
В первую очередь они нужны, чтобы спасти вашу задницу от больших проблем😂 Был у меня как-то случай, что мы хотели кроном пройтись по существующим данным в базе и на основе некоторой логики обновить их. Я написал крон, потестил на разных данных локально, на стейдже и погнал в прод.
В итоге какой-то корнер кейс я не учёл и часть данных перетерлась какой-то фигней. И тут такое состояние наступает, что ты немножко начинаешь сомневатся в реальности. Ну не может же так быть, чтоб ты дропнул реальные данные, без которых нифига не работает. Чуть позже паника отпустила и я вспомнил про бекапы. Часик хлопот и данные восстановлены к прежнему состоянию)
А если б не было бекапа? Пришлось бы, наверное по одной строке трясущимися руками восстанавливать и надеются, что нигде не налажал. Короче говоря, бекапы спасают нервные клетки от исчезновения😁
Юзали бекапы или судьба была благосклонна к вашим муткам на проде?))
В первую очередь они нужны, чтобы спасти вашу задницу от больших проблем😂 Был у меня как-то случай, что мы хотели кроном пройтись по существующим данным в базе и на основе некоторой логики обновить их. Я написал крон, потестил на разных данных локально, на стейдже и погнал в прод.
В итоге какой-то корнер кейс я не учёл и часть данных перетерлась какой-то фигней. И тут такое состояние наступает, что ты немножко начинаешь сомневатся в реальности. Ну не может же так быть, чтоб ты дропнул реальные данные, без которых нифига не работает. Чуть позже паника отпустила и я вспомнил про бекапы. Часик хлопот и данные восстановлены к прежнему состоянию)
А если б не было бекапа? Пришлось бы, наверное по одной строке трясущимися руками восстанавливать и надеются, что нигде не налажал. Короче говоря, бекапы спасают нервные клетки от исчезновения😁
Юзали бекапы или судьба была благосклонна к вашим муткам на проде?))
👍18🤯6👨💻2
Микросервисы зло!
Необычный заголовок для канала с таким названием)) Как я уже говорил на открытом уроке, у микросервисной архитектуры масса проблем, которые иногда мешают жить.
Например, сегодня мне нужно было протестировать одну новую фичу, которую я пару недель делал. Она затрагивает 4 сервиса. Сперва я всё проверил локально, развернув все сервисы на ноуте. Это было непросто, так как повылезала куча проблем интеграций сервисов.
Затем катнул все на стейдж и тут пошло веселье с инфрой, особенностями нашего продукта и того, как интересно трафик летает между сервисами. Короче говоря, задолбался я за сегодня изрядно😂 И ведь еще не до конца все удалось проверить)
Был бы монолит, ща бы уже шампанское открывал и таску в done переводил:) Но микросервисы как не крути от других бед спасают)
Как у вас денек?:)
Необычный заголовок для канала с таким названием)) Как я уже говорил на открытом уроке, у микросервисной архитектуры масса проблем, которые иногда мешают жить.
Например, сегодня мне нужно было протестировать одну новую фичу, которую я пару недель делал. Она затрагивает 4 сервиса. Сперва я всё проверил локально, развернув все сервисы на ноуте. Это было непросто, так как повылезала куча проблем интеграций сервисов.
Затем катнул все на стейдж и тут пошло веселье с инфрой, особенностями нашего продукта и того, как интересно трафик летает между сервисами. Короче говоря, задолбался я за сегодня изрядно😂 И ведь еще не до конца все удалось проверить)
Был бы монолит, ща бы уже шампанское открывал и таску в done переводил:) Но микросервисы как не крути от других бед спасают)
Как у вас денек?:)
🔥14🤯4🍾3👍2
Что мне ваши тесты, я код в прод качу!
Работал я как-то в конторе, где тесты не писались вообще и тестировщиков конечно тоже не было. Я по правде говоря и узнал то о тестах не в первый год работы в айти из-за этого😂 Мы просто тыкали руками типичные сценарии использования софта и ясное дело регулярно что-то упускали. Я тогда еще и не знал, что можно как-то иначе делать)
Со временем я разведал о существовании тестов во внешнем мире и сменив работу даже начал из писать. Однако, периодически слышал, что некоторые крайне не любят что-то тестить и считают это пустой тратой времени или как минимум менее приоритетной:)
Прошли годы и я с уверенностью могу сказать, что если не развивать в команде привычку и культуру написания тестов, проект принесет массу проблем в будущем. Тесты конечно не решат все боли, но часть проблем точно помогут избежать. Теже юниты неоднократно спасали меня, когда я забывал какой-нить новое поле прокинуть в конверторы или типо того. Если б их не было, то не факт что эти косяки вообще заметили сразу)
Тесты, как вы понимаете бывают разные. От юнитов до интеграшек, от е2е до нагрузочный. Нет какого-то универсального набора что вам нужно в вашем сервисе. В любом случае это набор ваших обстоятельств и ресурсов. Если вы считаете, что интеграционные тесты вы не вывезете, то это ок, но при этом важно помнить о рисках которые возникают.
Тесты, как вы поняли, штука важная, поэтому на моем курсе мы им также уделяем внимание:) Видали как нативненько интегрировал😂
Если серьезно, то просто хотел напомнить, что сегодня последний день, когда можно залететь на курс, завтра уже начинаем. Поэтому, если забыл и хотел, то кликай по ссылке)
Сайт курса по микросервисам - ПЕРЕЙТИ
А какой вас процент покрытия тестами в сервисах?:)
Работал я как-то в конторе, где тесты не писались вообще и тестировщиков конечно тоже не было. Я по правде говоря и узнал то о тестах не в первый год работы в айти из-за этого😂 Мы просто тыкали руками типичные сценарии использования софта и ясное дело регулярно что-то упускали. Я тогда еще и не знал, что можно как-то иначе делать)
Со временем я разведал о существовании тестов во внешнем мире и сменив работу даже начал из писать. Однако, периодически слышал, что некоторые крайне не любят что-то тестить и считают это пустой тратой времени или как минимум менее приоритетной:)
Прошли годы и я с уверенностью могу сказать, что если не развивать в команде привычку и культуру написания тестов, проект принесет массу проблем в будущем. Тесты конечно не решат все боли, но часть проблем точно помогут избежать. Теже юниты неоднократно спасали меня, когда я забывал какой-нить новое поле прокинуть в конверторы или типо того. Если б их не было, то не факт что эти косяки вообще заметили сразу)
Тесты, как вы понимаете бывают разные. От юнитов до интеграшек, от е2е до нагрузочный. Нет какого-то универсального набора что вам нужно в вашем сервисе. В любом случае это набор ваших обстоятельств и ресурсов. Если вы считаете, что интеграционные тесты вы не вывезете, то это ок, но при этом важно помнить о рисках которые возникают.
Тесты, как вы поняли, штука важная, поэтому на моем курсе мы им также уделяем внимание:) Видали как нативненько интегрировал😂
Если серьезно, то просто хотел напомнить, что сегодня последний день, когда можно залететь на курс, завтра уже начинаем. Поэтому, если забыл и хотел, то кликай по ссылке)
Сайт курса по микросервисам - ПЕРЕЙТИ
А какой вас процент покрытия тестами в сервисах?:)
olezhek28.courses
Олег Козырев — главная
Здесь все обо мне и моих продуктах
🔥9👍2
Курс стартовал. Прогревы потока подошли к концу и возник вопрос. Интересно вам будет читать иногда про то, как дела у ребят с текущего потока? Понятное дело, что это в какой-то степени также будут прогревы, поэтому и решил узнать насколько оно вам будет интересно. Могу рассказывать с какими сложностями ребята сталкиваются, могу иногда кого-то на стрим позвать, могу ещё что-то придумать. Короче говоря, хочется на этот счёт услышать ваше мнение, чтобы не превращать этот уютный канал в перманентный прогрев, который никому не нравится, в том числе и мне😁 А вместе мы глядишь что-то более менее интересное придумаем. Если что посты по теме разработки и всё такое как и прежде будут, за это не переживайте) я лишь про то, что иногда бы постил про ребят, если вам ок)
Если есть предложения о чём писать, то залетайте в комменты, а так сейчас опрос бахну)
Если есть предложения о чём писать, то залетайте в комменты, а так сейчас опрос бахну)
👍27
Делаем контент про учеников с курса?
Anonymous Poll
50%
Да, давай
21%
Да, но не часто, может раз в неделю
16%
Не, нафиг надо
13%
Делай как хочешь
А вы кэш почистили?
Давайте поговорим о кэшах, а то сколько можно терпеть тормоза этой базы😂
Помню, как в детстве, когда находил мамин тайник с конфетами, брал от туда конфет больше, чем нужно на одно чаепитие. Походу я уже тогда научился кэшировать 😁 Принцип простой: сохранить что-то важное поближе, чтобы быстрее к нему добраться.
Зачем это нужно?
Без кэширования каждый запрос к вашему веб-сайту или приложению требует времени и ресурсов для обработки. Это может быть не заметно, когда у вас пара пользователей, но когда их тысячи? Вот тут без кэша не обойтись. Туже самую сессию проверять надо очень часто и у всех, так какой смысл базу грузить постоянно.
Как это работает?
Допустим, вы запрашиваете страницу со списком последних новостей. В первый раз сервер обработает запрос, извлечет данные и вернет их вам. Но он также сохранит копию этих данных в кэше. Когда следующий пользователь запросит ту же страницу, сервер вместо обработки запроса с нуля просто выдаст копию из кэша. Быстро и эффективно.
Кроме такой схемы есть и другие. Можно помещать данные в кэш при записи, а не при чтении. К тому же важно подумать и политиках вытеснения данных из кэша и времени жизни.
Типы кэширования:
1. Кэширование на стороне клиента: когда данные сохраняются прямо в вашем браузере.
2. Кэширование на стороне сервера: когда данные хранятся на сервере или специальном кэширующем устройстве.
3. CDN (Сеть доставки содержимого): когда кэшируются статические ресурсы типа картинок, видосов или CSS файлов на распределенных серверах.
Почему это важно?
Без кэширования ваш сервер может стать узким местом, не способным обрабатывать все запросы. Это как попытаться налить воду из шланга в бутылку: если давление слишком велико, вода просто разольется. Вспоминая, как мы с батей бак в огороде набирали, могу увернно сказать, что эта вода ещё и вас обольет с ног до головы)))
P.S. На фото закэшированная версия меня. Сейчас то я уже веселый и отдохнувший:)
А вы чем баловались в кэшировании? Redis или что-то другое?
Давайте поговорим о кэшах, а то сколько можно терпеть тормоза этой базы😂
Помню, как в детстве, когда находил мамин тайник с конфетами, брал от туда конфет больше, чем нужно на одно чаепитие. Походу я уже тогда научился кэшировать 😁 Принцип простой: сохранить что-то важное поближе, чтобы быстрее к нему добраться.
Зачем это нужно?
Без кэширования каждый запрос к вашему веб-сайту или приложению требует времени и ресурсов для обработки. Это может быть не заметно, когда у вас пара пользователей, но когда их тысячи? Вот тут без кэша не обойтись. Туже самую сессию проверять надо очень часто и у всех, так какой смысл базу грузить постоянно.
Как это работает?
Допустим, вы запрашиваете страницу со списком последних новостей. В первый раз сервер обработает запрос, извлечет данные и вернет их вам. Но он также сохранит копию этих данных в кэше. Когда следующий пользователь запросит ту же страницу, сервер вместо обработки запроса с нуля просто выдаст копию из кэша. Быстро и эффективно.
Кроме такой схемы есть и другие. Можно помещать данные в кэш при записи, а не при чтении. К тому же важно подумать и политиках вытеснения данных из кэша и времени жизни.
Типы кэширования:
1. Кэширование на стороне клиента: когда данные сохраняются прямо в вашем браузере.
2. Кэширование на стороне сервера: когда данные хранятся на сервере или специальном кэширующем устройстве.
3. CDN (Сеть доставки содержимого): когда кэшируются статические ресурсы типа картинок, видосов или CSS файлов на распределенных серверах.
Почему это важно?
Без кэширования ваш сервер может стать узким местом, не способным обрабатывать все запросы. Это как попытаться налить воду из шланга в бутылку: если давление слишком велико, вода просто разольется. Вспоминая, как мы с батей бак в огороде набирали, могу увернно сказать, что эта вода ещё и вас обольет с ног до головы)))
P.S. На фото закэшированная версия меня. Сейчас то я уже веселый и отдохнувший:)
А вы чем баловались в кэшировании? Redis или что-то другое?
👍13🔥5
У нас прод упал, не поможете?
Был у меня период, когда я жил в Казахстане. Любовался горами Алматы и наслаждался местной кухней. И вот однажды произошел забавный слачай с моим соседом.
Он зашёл на сайт какого-то небольшого интернет-магазина и хотел сделать заказ. Заказ создался, деньги списались, но подтверждения, что заказ принят не последовало. Сосед решил позвонить в службу поддержки и узнать как там дела с заказом. Когда он дозвонился до них оказалось, что продакшн их сайта решил полежать😂 Сапорты сказали, что надо будет подождать.
Что было дальше я точно не помню, но он как-то сказал сапортам, что он программист, а те без коллебаний предложили ему помочь поднять их прод😂 После этого они скинули ему контакты их единственного программиста) Мы угорая от происходящего готовы были погрузится в код, но кто-то в управлении одумался. Неожиданно пришло осознание, что пускать рандомного чувака в свою систему такая себе идея😅 А мы то думали, что сейчас скидочку намутим)
Желаю вам видеть свой прод исключительно в стоячем состоянии!
Был у меня период, когда я жил в Казахстане. Любовался горами Алматы и наслаждался местной кухней. И вот однажды произошел забавный слачай с моим соседом.
Он зашёл на сайт какого-то небольшого интернет-магазина и хотел сделать заказ. Заказ создался, деньги списались, но подтверждения, что заказ принят не последовало. Сосед решил позвонить в службу поддержки и узнать как там дела с заказом. Когда он дозвонился до них оказалось, что продакшн их сайта решил полежать😂 Сапорты сказали, что надо будет подождать.
Что было дальше я точно не помню, но он как-то сказал сапортам, что он программист, а те без коллебаний предложили ему помочь поднять их прод😂 После этого они скинули ему контакты их единственного программиста) Мы угорая от происходящего готовы были погрузится в код, но кто-то в управлении одумался. Неожиданно пришло осознание, что пускать рандомного чувака в свою систему такая себе идея😅 А мы то думали, что сейчас скидочку намутим)
Желаю вам видеть свой прод исключительно в стоячем состоянии!
😁30👍3🥰2
Занятное дело:) Мне тут сейчас один человек написал благодарственные слова за курс и попутно признался, что спиратил его. А затем накинул вопросов, чтоб я ему помог с чем-то разобраться🤯
Я может чего не понимаю, но кажется это перебор) Сперва берешь без спросу, а потом ждешь хорошего отношения и задаешь вопросы:)
Что думаете?)
P.S. Сообщеньку он дропнул, даже заскринить не успел:(
Я может чего не понимаю, но кажется это перебор) Сперва берешь без спросу, а потом ждешь хорошего отношения и задаешь вопросы:)
Что думаете?)
P.S. Сообщеньку он дропнул, даже заскринить не успел:(
😁22🤯6🤬4👎3
Сегодня решил поразгонять про базы данных. Начнём с описания существующих видов.
В современном мире данных, базы данных играют ключевую роль в хранении, управлении и анализе информации. Существует несколько типов баз данных, каждый из которых предназначен для решения уникального набора задач. Понимание их различий поможет не лажануть на собесе и в реальной работе.
Реляционные базы данных (RDBMS) используют табличный формат для организации данных. Они поддерживают операции SQL для запросов и обладают сильной схемой данных. Примеры включают PostgreSQL и MySQL. Они идеально подходят для сложных запросов и транзакций. ACID все дела.
Нереляционные базы данных (NoSQL) предлагают гибкость в хранении данных, не требуя строгой схемы. Они ещё и разные бывают:
* Документо-ориентированные базы данных (например, MongoDB), хранящие данные в формате JSON или XML. Они хороши для работы с иерархическими данными и JSON-структурами.
* Ключ-значение хранилища (например, Redis) предлагают простоту и скорость за счет хранения данных в парах ключ-значение. Они отлично подходят для кэширования и сессий.
* Колоночные базы данных (например, Clickhouse) поддерживают большие объемы данных, распределенные по множеству машин. Используются для больших, масштабируемых приложений.
* Графовые базы данных (например, Neo4j) сосредоточены на отношениях между объектами. Они идеальны для анализа связей, таких как социальные сети.
Базы данных временных рядов (например, InfluxDB) оптимизированы для хранения и анализа последовательностей данных во времени. Они подходят для мониторинга приложений, IoT и аналитики.
Выбор базы данных зависит от требований проекта, объема данных, необходимости масштабирования и типа хранимой информации.
P.S. На фотке я очевидно вспомнил историю знакомого из вк про neo4j и взглядом выражаю сочувствие:) как им было больно с ней работать даже слушать было грустно😁
Что из этого вам приходилось юзать? Что-то экзотическое было?
В современном мире данных, базы данных играют ключевую роль в хранении, управлении и анализе информации. Существует несколько типов баз данных, каждый из которых предназначен для решения уникального набора задач. Понимание их различий поможет не лажануть на собесе и в реальной работе.
Реляционные базы данных (RDBMS) используют табличный формат для организации данных. Они поддерживают операции SQL для запросов и обладают сильной схемой данных. Примеры включают PostgreSQL и MySQL. Они идеально подходят для сложных запросов и транзакций. ACID все дела.
Нереляционные базы данных (NoSQL) предлагают гибкость в хранении данных, не требуя строгой схемы. Они ещё и разные бывают:
* Документо-ориентированные базы данных (например, MongoDB), хранящие данные в формате JSON или XML. Они хороши для работы с иерархическими данными и JSON-структурами.
* Ключ-значение хранилища (например, Redis) предлагают простоту и скорость за счет хранения данных в парах ключ-значение. Они отлично подходят для кэширования и сессий.
* Колоночные базы данных (например, Clickhouse) поддерживают большие объемы данных, распределенные по множеству машин. Используются для больших, масштабируемых приложений.
* Графовые базы данных (например, Neo4j) сосредоточены на отношениях между объектами. Они идеальны для анализа связей, таких как социальные сети.
Базы данных временных рядов (например, InfluxDB) оптимизированы для хранения и анализа последовательностей данных во времени. Они подходят для мониторинга приложений, IoT и аналитики.
Выбор базы данных зависит от требований проекта, объема данных, необходимости масштабирования и типа хранимой информации.
P.S. На фотке я очевидно вспомнил историю знакомого из вк про neo4j и взглядом выражаю сочувствие:) как им было больно с ней работать даже слушать было грустно😁
Что из этого вам приходилось юзать? Что-то экзотическое было?
🔥14👍7❤3
Вернемся к базам
Последнее время работа и всякие выступления захватили мое время и не удавалось сюда ничего написать( Буду исправлять
В прошлый раз я широким мазком накинул про разные виды баз данных, а сегодня углубимся в один из видов - реляционки. Почти всегда жизнь сводила меня с Postgres, так что буду ссылаться на него)
Реляционки это базы, в которых данные лежат в виде табличек, которые могут иметь какие-то отношения, но не половые😂 конечно в тот же постгрес завезли возможность хранить неструктурированные данные, но это уже для зумеров) Дефолтно были таблички)
Реляционки по кайфу юзать, когда данные имеют четкую схему, которая часто меняться не будет и сущности переплетены связями:) Например, хранишь ты в одной табличке юзеров, в другой список чатов, а в третей инфу о том, кто в каком чате сидит:)
Еще крутая фича у таких баз - это транзакции и поддержка ACID. И нет это не кислотная вечеринка, это механизм которые помогает бабки у вас на счету сохранить:)
Сидишь ты такой зпкшки с двух работ ждешь и тут бац банк события об обоих зпешках одновременно получает. В двух запросах берет баланс и накидывает по зпешке. И вот когда транзакций нет, он тебе только одну зпешку начислит, а вторую себе оставит😂 Ибо прибавит то к изначальному балансу, а то что параллельно еще начисления иду и невдомек)
Транзакции также могут обеспечить целостность данных. Например, надо тебе две операции провернуть с базой атомарно, чтоб ничего не разломало. Берешь транзакцию и кайфуешь. Там либо обе выполнятся корректно, либо ни одна :)
Был у меня как-то забавный момент с постгресом. Перед базой обычно ставят пуллер конектов, чтобы на каждый запрос соединение не плодить. Этот пуллер держит штук 20 конектов открытых и перешаривает между запросами из сервиса) И вот я как-то навалил в прод кода, где забыл возвращать конект в пул после запроса) В итоге после 20го дерганья ручки она переставала работать😂 конекты тупо заканчивались в пуле( Я тогда не один час потратил на поиски проблемы, ибо ошибка была не информативной) так что будьте внимательны)
Пост лимиты имеет, всего и не впихнёшь о реляционках, поэтому поделитесь чего хорошего вы в них видите:)
Последнее время работа и всякие выступления захватили мое время и не удавалось сюда ничего написать( Буду исправлять
В прошлый раз я широким мазком накинул про разные виды баз данных, а сегодня углубимся в один из видов - реляционки. Почти всегда жизнь сводила меня с Postgres, так что буду ссылаться на него)
Реляционки это базы, в которых данные лежат в виде табличек, которые могут иметь какие-то отношения, но не половые😂 конечно в тот же постгрес завезли возможность хранить неструктурированные данные, но это уже для зумеров) Дефолтно были таблички)
Реляционки по кайфу юзать, когда данные имеют четкую схему, которая часто меняться не будет и сущности переплетены связями:) Например, хранишь ты в одной табличке юзеров, в другой список чатов, а в третей инфу о том, кто в каком чате сидит:)
Еще крутая фича у таких баз - это транзакции и поддержка ACID. И нет это не кислотная вечеринка, это механизм которые помогает бабки у вас на счету сохранить:)
Сидишь ты такой зпкшки с двух работ ждешь и тут бац банк события об обоих зпешках одновременно получает. В двух запросах берет баланс и накидывает по зпешке. И вот когда транзакций нет, он тебе только одну зпешку начислит, а вторую себе оставит😂 Ибо прибавит то к изначальному балансу, а то что параллельно еще начисления иду и невдомек)
Транзакции также могут обеспечить целостность данных. Например, надо тебе две операции провернуть с базой атомарно, чтоб ничего не разломало. Берешь транзакцию и кайфуешь. Там либо обе выполнятся корректно, либо ни одна :)
Был у меня как-то забавный момент с постгресом. Перед базой обычно ставят пуллер конектов, чтобы на каждый запрос соединение не плодить. Этот пуллер держит штук 20 конектов открытых и перешаривает между запросами из сервиса) И вот я как-то навалил в прод кода, где забыл возвращать конект в пул после запроса) В итоге после 20го дерганья ручки она переставала работать😂 конекты тупо заканчивались в пуле( Я тогда не один час потратил на поиски проблемы, ибо ошибка была не информативной) так что будьте внимательны)
Пост лимиты имеет, всего и не впихнёшь о реляционках, поэтому поделитесь чего хорошего вы в них видите:)
👍12🔥5❤2💩1
Вы хотели новостей с курса, я принёт) а в следующем посте поговорим о уровнях транзакции в бдшках
Вчера стартовала 4-я неделя курса, уже почти половина прошла. Прогресс ребят можете видеть на картинке.
За это время:
- Мы три раза созванивались на 2 часа, чтоб обсудить все вопросики
- Я проверил почти 40 пул реквестов и записал дофига голосовых ахаха
- Один человек ушёл в академ и вернется на курс в следующем потоке, так как сейчас резко возник дефицит времени
- Один человек вернул курс, так как резко понадобились деньги. Я даже специально уточнил не говно ли мой курс на его вкус. Сказал всё чётко, просто бабло понадобилось
В целом всё идёт своим чередом. Код пилится, ребята учатся. В чатике очень крутая активность, друг другу помогают и всё такое. Я вроде тоже не особо устал проверять домашки, так что 20 человек с проверкой вполне норм темп получается. В понедельник у нас будет созвончик с Любой, которая расскажи об ошибках в составлении резюмешек на примере резюмех некоторых ребят с курса. Думаю будет весело и полезно.
Если у вас есть какие-то вопросики о том что и как у нас проходит, то задавайте, а то сложно прикинуть, что вам интересно узнать)
Вчера стартовала 4-я неделя курса, уже почти половина прошла. Прогресс ребят можете видеть на картинке.
За это время:
- Мы три раза созванивались на 2 часа, чтоб обсудить все вопросики
- Я проверил почти 40 пул реквестов и записал дофига голосовых ахаха
- Один человек ушёл в академ и вернется на курс в следующем потоке, так как сейчас резко возник дефицит времени
- Один человек вернул курс, так как резко понадобились деньги. Я даже специально уточнил не говно ли мой курс на его вкус. Сказал всё чётко, просто бабло понадобилось
В целом всё идёт своим чередом. Код пилится, ребята учатся. В чатике очень крутая активность, друг другу помогают и всё такое. Я вроде тоже не особо устал проверять домашки, так что 20 человек с проверкой вполне норм темп получается. В понедельник у нас будет созвончик с Любой, которая расскажи об ошибках в составлении резюмешек на примере резюмех некоторых ребят с курса. Думаю будет весело и полезно.
Если у вас есть какие-то вопросики о том что и как у нас проходит, то задавайте, а то сложно прикинуть, что вам интересно узнать)
🔥18🥰1
Время поговорить об уровнях изоляции транзакций в реляционках. Удобнее всего разложить за эти уровни на примере бабла и то, как вы можете его потерять, если выберете не тот уровень изоляции.
Для начало небольшой ликбез. Транзакция это набор действий, которые выполняются атомарно, то есть либо все, либо никто. Когда транзакция заканчивается успешно, внесенные ею изменения фиксируются операцией комит. А если всё пошло по бороде, тогда вызывается ролбек и всё откатывает.
А теперь к уровням. Сегодня начнём с самого мягкого и безумного.
READ UNCOMMITTED (Чтение незакомиченых данных)
Есть у меня корефан Лёха и как-то раз он решил перевести своей подружане Маше 100$. Вспомнил, что SWIFT не работает и пошёл искать рублёвую копилку))) Найдя, он наконец то закинул Маше перевод.
Но всё было не так-то просто. Маша уже увидела, как баланс пополнился лёхиными деньгами и побежала делать покупки, но транзакция ещё не завершилась - ну вы знаете эти банки))) И пока Маша заказывала себе новую книженцию по Go, Лёхин банк лаганул и отменил транзакцию аккурат в момент, когда Маша платила за книгу. И в итоге у неё возник отрицательны баланс.
Понятное дело, что Лёха тот ещё Алёша, коль пользуется таким банком, но радости это не добавляет) А всё дело в том, что кто-то “умный” заюзал самый неподходящий уровень изоляции транзакций для банка. Бабки ещё толком от Лёхи не улетели, а Маша уже видит их у себя на счету. А дальше что? ЗП за конец месяца я увижу на счёте в начале месяца ахахаха хотя где тут минусы ахахах
Кстати, в postgres этот уровень отключен к чертям. Видать создатели не любят ЗП раньше времени получать.
А вы когда нить юзали это уровень в проектах?
Для начало небольшой ликбез. Транзакция это набор действий, которые выполняются атомарно, то есть либо все, либо никто. Когда транзакция заканчивается успешно, внесенные ею изменения фиксируются операцией комит. А если всё пошло по бороде, тогда вызывается ролбек и всё откатывает.
А теперь к уровням. Сегодня начнём с самого мягкого и безумного.
READ UNCOMMITTED (Чтение незакомиченых данных)
Есть у меня корефан Лёха и как-то раз он решил перевести своей подружане Маше 100$. Вспомнил, что SWIFT не работает и пошёл искать рублёвую копилку))) Найдя, он наконец то закинул Маше перевод.
Но всё было не так-то просто. Маша уже увидела, как баланс пополнился лёхиными деньгами и побежала делать покупки, но транзакция ещё не завершилась - ну вы знаете эти банки))) И пока Маша заказывала себе новую книженцию по Go, Лёхин банк лаганул и отменил транзакцию аккурат в момент, когда Маша платила за книгу. И в итоге у неё возник отрицательны баланс.
Понятное дело, что Лёха тот ещё Алёша, коль пользуется таким банком, но радости это не добавляет) А всё дело в том, что кто-то “умный” заюзал самый неподходящий уровень изоляции транзакций для банка. Бабки ещё толком от Лёхи не улетели, а Маша уже видит их у себя на счету. А дальше что? ЗП за конец месяца я увижу на счёте в начале месяца ахахаха хотя где тут минусы ахахах
Кстати, в postgres этот уровень отключен к чертям. Видать создатели не любят ЗП раньше времени получать.
А вы когда нить юзали это уровень в проектах?
👍10🔥4😁2