
В статье вы найдете обзор системы, а также немного аналитической информации.
User
Всем привет! Меня зовут Евгений, я занимаюсь разработкой и проектированием в Ozon. Больше всего работаю с MS SQL и C#, но попадаются и другие СУБД и языки программирования.
Ozon как продукт быстро растёт: во втором квартале этого года мы доставляли больше миллиона посылок в день. Для обработки такого объёма заказов мы используем разные языки и платформы: .NET (C#), Go, MS SQL Server и PostgreSQL.
Заказы пользователей обрабатываются разными системами, которые взаимодействуют между собой. Это порождает необходимость учитывать многочисленные интеграции и приводит к проблеме дублирования данных.
Я расскажу об одном таком случае, когда наша команда потратила много времени и сил, но всё-таки нашла оптимальный способ решения проблемы дублирования данных.
Но сначала позвольте погрузить вас немного в предметную область — объясню, на примере чего будет демонстрироваться проблема дублирования данных, и освещу некоторые методы её решения.
По его собственным стандартам, сорокалетний Гейб уже не "молодой человек"
Он "всю жизнь" работал в строительстве, из-за чего его тело постоянно болит. К тому же статус независимого подрядчика, а не наёмного сотрудника, означает, что у него не будет ни пенсии, ни плана 401k, ни чего-то подобного.
Когда в начале этого года коронавирусная изоляция заставила его уединиться в комнате отеля и отказаться от работы, Гейб начал изучать криптовалюты как способ заткнуть финансовую дыру, проделанную в его финансах карантином.
Как и близнецы Уинклвосс, Tesla и примерно 71,4 миллионов людей, хранящих крипту, Гейб перевёл часть фиатной валюты (в его случае - долларов) со своего банковского счёта в криптовалюту. </cut>
Спустя неделю его скромная инвестиция в 40 долларов в новую и почти бесполезную криптовалюту под названием Safemoon разрослась до прибыли в 3400 долларов. Это близко к средней месячной зарплате в США. Отказ от известных валют наподобие Bitcoin и Ethereum странным образом оказался счастливым выбором. Впервые Гейб инвестировал в криптовалюту в 2017 году.
Прошло четыре года, и возникли сотни новых, ещё более андерграундных видов криптовалют. Новые криптовалюты в основном ищут инвесторов через Reddit (r/cryptomoonshots) и Discord, а обзоры делают популярные пользователи TikTok. Доходы этих новых токенов часто взлетают до небес.
Согласно статистике с сайта Coingecko.com, отслеживающего цены криптовалют, самая известная и используемая валюта в мире Bitcoin достигла рекорда своей стоимости 13 апреля 2021 года, поднявшись с 14 апреля 2020 года на 845 процентов. Это серьёзный скачок для всего лишь одного года.
Представляю вашему вниманию руководство по Sequelize
.
Sequelize
— это ORM
(Object-Relational Mapping — объектно-реляционное отображение или преобразование) для работы с такими СУБД (системами управления (реляционными) базами данных, Relational Database Management System, RDBMS), как Postgres
, MySQL
, MariaDB
, SQLite
и MSSQL
. Это далеко не единственная ORM
для работы с названными базами данных (далее — БД), но, на мой взгляд, одна из самых продвинутых и, что называется, "battle tested" (проверенных временем).
ORM
хороши тем, что позволяют взаимодействовать с БД на языке приложения (JavaScript
), т.е. без использования специально предназначенных для этого языков (SQL
). Тем не менее, существуют ситуации, когда запрос к БД легче выполнить с помощью SQL
(или можно выполнить только c помощью него). Поэтому перед изучением настоящего руководства рекомендую бросить хотя бы беглый взгляд на SQL
. Вот соответствующая шпаргалка.
Это вторая из 3 частей руководства, в которой мы поговорим о простых и продвинутых ассоциациях (отношениях между моделями), "параноике", нетерпеливой и ленивой загрузке, а также о многом другом.
Я постараюсь быть максимально лаконичным (надеюсь, без ущерба для полноты изложения материала). Я также постараюсь излагать материал максимально простым языком. Большинство примеров, приводимых в руководстве, заимствованы из официальной документации.
Регулярное выражение (далее также — регулярка) — это последовательность специальных символов, формирующих паттерн или шаблон (pattern), который сопоставляется со строкой.
Цель такого сопоставления может состоять либо в поиске подстроки в строке, например, для замены подстроки, либо в определении соответствия строки шаблону для валидации строки.
В данной статье мы сосредоточимся на валидации.
Что конкретно мы будем делать? Мы возьмем несколько регулярок из validator.js
(наиболее популярной библиотеки для валидации данных с помощью регулярных выражений) и произведем их подробный разбор. Также мы рассмотрим несколько дополнительных регулярок и один алгоритм.
Как результат, мы реализуем несколько полезных функций, которые вы впоследствии сможете использовать в своих проектах.