Как стать автором
Обновить
14.77

MySQL *

Свободная реляционная СУБД

Сначала показывать
Порог рейтинга
Уровень сложности

Настраиваем минимальный WEB-сервер на Repka Pi 3. NGINX + PHP-FPM + MySQL и ставим Wordpress

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5.4K

В этой статье я расскажу как установить на Repka Pi 3 полноценный WEB сервер на Nginx с php-fpm и MySQL для того, чтоб в конечном счете установить WordPress и начать делать и размещать Ваш сайт на данной платформе. Ставить будем на родную ОС Repka Pi от 11.12.23 (последняя актуальна прошивка на момент написания статьи).

Читать далее
Всего голосов 10: ↑8 и ↓2+9
Комментарии22

Решил я тут текстовую MMORPG на C++ написать

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров11K

Cразу уточню, это не гайд по созданию MMORPG на C++. Это нечто вроде моего дневника, куда я буду скидывать процесс разработки (Да, проект ещё не завершён, даже не близко, скорее только начат...). Почему я вообще тогда создал эту статью? Ну, коли ты крутой true‑программист, буду рад советам, критике, помощи, ругани, проще говоря всему, что может помочь мне улучшить это. С другой стороны, если ты сам захотел создать нечто похожее, то, быть может, сможешь избежать всех трудностей, с которыми столкнулся я.

Читать далее
Всего голосов 20: ↑12 и ↓8+6
Комментарии27

Написание минимальной подсистемы хранения данных в памяти для MySQL/MariaDB

Уровень сложностиСредний
Время на прочтение24 мин
Количество просмотров5.6K

Я потратил неделю, копаясь во внутренностях MySQL/MariaDB вместе с ещё примерно 80 разработчиками. Хотя MySQL и MariaDB — это, по большей части, одно и то же (я ещё к этому вернусь), я сосредоточился именно на MariaDB.

Раньше я никогда сам не собирал MySQL/MariaDB. В первый день «недели хакерства» я смог наладить локальную сборку MariaDB и твикнул код так, что запрос SELECT 23 возвращал 213. Сделал я и другой твик — такой, что запрос SELECT 80 + 20 возвращал 60. На второй день я смог заставить заработать простую UDF на C, благодаря которой запрос SELECT mysum(20, 30) давал 50.

Остаток недели я потратил, пытаясь разобраться с тем, как сделать минимальный движок для хранения данных в памяти. Именно о нём я и расскажу. Это — 218 строк кода на C++.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии5

«Кабанчик» и консистентность кэша

Время на прочтение5 мин
Количество просмотров21K

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

Не смотря на то, что книга написана еще в 2014-2016 годах (первое издание в O’Reilly вышло в 2018-м), «Кабанчик» не теряет, а только приобретает актуальность. Разрабатывая высоконагруженные приложения для финтеха и управляя разработкой таких систем, я нахожу много полезного в книге Клеппмана. При этом если отобрать дюжину разработчиков, то «Кабанчика» читали от силы несколько из них.

Причина — в сложном и обстоятельном подходе автора (и в том, что книга насчитывает почти 700 страниц). Читать «Кабанчика» непросто, не так трудно как Хофштадтера, но и не так просто, как Вольфрама. Но не смотря на то, что книга написана давно, в ней неплохо отзываются некоторые современные проблемы.

Читать далее
Всего голосов 12: ↑10 и ↓2+16
Комментарии4

Истории

Построитель SQL запросов на основе мета-информации миграций БД

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров4.9K

В век когда ORM шагает по планете обычный построитель запросов выглядит откатом назад. Однако тут есть нюанс — Sql Query Builder использует пакет версионирования shasoft/db-schema и владеет всей информацией о структуре базы данных. Это позволяет реализовать все стандартные для таких решений функции, прозрачно конвертировать типы данных SQL<=>PHP + реализовать нестандартные возможности в виде выборки данных с использованием КЭШирования. (Просьба не искать логику в SQL запросах в статье и примерах, её там нет. Искусственные примеры предназначены для демонстрации возможностей пакета и никакой другой смысловой нагрузки не несут).


Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии9

Объединяем два крупнейших Ecom на разных стеках в одну общую CRM

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.6K

Привет! Меня зовут Данила Соловьёв, я руковожу направлением PHP — самым крупным подразделением в отделе разработки AGIMA. Поделюсь историей о том, как мы встроили новую CRM-систему в два абсолютно незнакомых нам IT-ландшафта и тем самым спасли сейлзов двух крупных интернет-магазинов от бесконечных табличек в почте. Подробно опишу, какие данные мы выгружали, как их дедуплицировали и какие сервисы использовали для их валидации. Поехали!

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии2

Как оптимизировать медленные SQL запросы?

Время на прочтение18 мин
Количество просмотров29K

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

Как выявить и отладить такие проблемы? В этой статье будет показано решение наиболее распространённых проблем с производительностью БД, вызванных неправильной индексацией. Примеры будут приведены для Postgres, MySQL и SQLite.

Читать далее
Всего голосов 16: ↑8 и ↓8+3
Комментарии38

Введение в поддержку JavaScript в MySQL

Время на прочтение7 мин
Количество просмотров3.6K

MySQL продолжает наращивать инновации и теперь включает в себя богатые возможности процедурного программирования внутри базы данных. Отныне разработчики могут писать хранимые программы на языке JavaScript (функции и процедуры) в сервере баз данных MySQL. Хранимые программы будут выполняться с помощью GraalVM. Эта версия доступна в качестве "Preview" в MySQL Enterprise Edition и может быть загружена через Oracle Technology Network (OTN). MySQL-JavaScript также доступен в облачном сервисе MySQL Heatware на OCI, AWS и Azure.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии6

Распределенное управление конкурентностью

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.4K

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

Читать далее
Всего голосов 5: ↑3 и ↓2+3
Комментарии5

Оптимизация на лету: Как правильная методология разработки в 1С сокращает отчетность с минут до секунд

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров4.7K

Автоматизация процессов выглядит как задача без конца, не так ли?

Давайте подумаем, как можно упростить этот путь.

Существуют определенные стандарты программирования, которым нужно следовать разработчикам — зачем же они нужны?

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

Когда программное решение превращается в препятствие, вместо того чтобы быть инструментом, возникает вопрос – зачем оно вообще нужно?

Читать далее
Всего голосов 4: ↑2 и ↓20
Комментарии30

О выборе CMS для сайтовых дел, кратенький обзор Processwire

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров5.8K

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

К авангардной тройке (WP, Joomla, Drupal) не приглянулся по N-ным причинам, но, щас не об этом.

В общем, перебрал всевозможные критерии (внушительный список хотелок :)) - гугл + ИИ в помощь смекалке и, перематывая к результату - остановился на чудо инструменте Processwire (далее PW).

Читать далее ->
Всего голосов 5: ↑3 и ↓2+2
Комментарии9

ORM для реальных приложений не окупается

Время на прочтение4 мин
Количество просмотров31K


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


Проблемы


  1. При использовании ORM мы обычно прописываем в коде сущности и их взаимосвязи, и по сути это — проектирование БД ещё раз (дублирование логики!) прямо в коде.
  2. Борьба с проблемами производительности никуда не денется всё равно, как ни абстрагируй. Ты просто не можешь не знать, что у тебя под капотом происходит. Какие там делаются джойны и группировки.
  3. Язык запросов в виде цепочки объектов и методов читается хуже, чем SQL, по сути это — особый язык, который надо учить. За себя скажу, что когда писал на PHP (Laravel), длинные запросы на Eloquent меня иногда изумляли своей сложностью чтения:
Читать дальше →
Всего голосов 75: ↑48 и ↓27+30
Комментарии231

Лауреат премии Highload++ и основатель Percona Пётр Зайцев: важно понимать, в чём ты особенно хорош

Время на прочтение7 мин
Количество просмотров2.2K

Пётр Зайцев — основатель компании Percona по разработке ПО для работы с базами данных, предприниматель в области open source, инвестор, ментор и adviser. Кроме Percona, участвует в проектах Altinity, которые занимаются технологией ClickHouse; FerretDB — альтернативой MongoDB и ряде других. Мы расспросили Петра, как дойти до такого уровня экспертизы и что мешает современным IT-бизнесменам.

Читать далее
Всего голосов 8: ↑6 и ↓2+6
Комментарии0

Ближайшие события

Отремонтировали в MySQL 8.2

Время на прочтение11 мин
Количество просмотров3.4K

В конце октября 2023 года компания Oracle выпустила новую версию СУБД (системы управления базами данных) MySQL, обозначенную как MySQL 8.2. Эта версия включает несколько новых функций и изменений, а также устраняет ряд уязвимостей.

Основные изменения и доработки в MySQL 8.2 - в статье.

Читать далее
Всего голосов 5: ↑2 и ↓3-1
Комментарии2

Фильтрация объектов по координатам (широте и долготе)

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.4K

В настоящее время часто встречается задача - на карте расположено множество точек  и необходимо выделить их подмножество (отфильтровать) по критерию расстояния  от некоторой “особой” точки. В качестве примеров укажем сайты маркетплейсов, где точки пункты выдачи, в сетевых компаниях это офисы на карте, логистические компании отслеживают передвижение транспортных средств, операторы такси находят на карте ближайшие автомобили и можно перечислить еще много областей применения. При кажущейся простоте постановки задачи её решение требует значительных ресурсов, так как запросы к базе данных, как правило, очень тяжелые. Здесь на примере задачи ‘Пункты выдачи’ с фильтрацией по расстоянию (радиусу) от накопительного узла товаров показывается как можно сократить количество обработанных строк в запросе. Реализация задачи на БД mySQL.

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

В БД mySQL 5.7 появилась встроенная функция ST_Distance_Sphere для расчета (евклидово) расстояния между двумя точками. Данная функция принимает широту и долготу двух точек, а возвращает расстояние между ними в метрах, далее мы производим сравнение с критической величиной радиуса и определяем попадает ли данная точка в круг  с этим радиусом.

Читать далее
Всего голосов 5: ↑4 и ↓1+4
Комментарии13

Делаем web сервер из старого Android смартфона, без root

Время на прочтение4 мин
Количество просмотров30K

Главная идея была в том, чтобы проверить возможно ли из старого Android устройства сделать "полноценный" сервер с nginx, php-fpm, MariaDB и запустить на этом Wordpress. Оказывается можно и при этом с хорошим результатом.

Устройство: Xiaomi Mi 4c 2015 года, разблокирован разгрузчик, TWRP, Android 10 (Havoc OS 3.0), Gapps не устанавливались для экономии ресурсов, root отсутствует.

Читать далее
Всего голосов 23: ↑21 и ↓2+22
Комментарии19

Небольшой тест нескольких БД при работе с многими таблицами

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров6.3K

Я новичок в работе с базами данных и для их изучения (а заодно для изучения Питона) начал небольшой пет-проект. В процессе оказалось, что в моей многопользовательской системе запросы к БД всегда касаются только одного пользователя. «Отлично!» подумал я, «раздам каждому пользователю по табличке и сэкономлю ресурсы сервера на индексации!». Конечно сначала я почитал литературу и подобных решений в ней не нашел. Потом сходил на один из популярных ресурсов и там мне объяснили, что так делать нельзя. Но почему – никто объяснить не смог (или возможно не захотел). Поэтому я решил сделать небольшой тест на самых популярных БД – проверить что будет на самом деле.

Читать далее
Всего голосов 16: ↑5 и ↓11-5
Комментарии46

Погружаемся в базы данных и SQL: полезные материалы и инструменты от сотрудников Selectel

Время на прочтение4 мин
Количество просмотров11K

Почему программисты SQL так плохо шутят? Потому что их юмор — это всегда "SELECT * FROM jokes WHERE is_funny = 1".

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

Мы попросили наших коллег порекомендовать полезные ресурсы, которые помогут сделать первые шаги в работе с базами данных и SQL. Сохраняйте подборку в закладки, чтобы сэкономить время на изучение темы, и делитесь своими вариантами в комментариях.
Читать дальше →
Всего голосов 35: ↑33 и ↓2+40
Комментарии3

SSL для всех (пользователей MariaDB), даром, и пусть никто не уйдёт обиженный

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.4K

MySQL научился использовать OpenSSL, чтобы шифровать трафик между клиентом и сервером году где-то в 1999. В принципе работало оно нормально, свою задачу выполняло, трафик шифровало. Но был там один фатальный недостаток. SSL в MySQL, а позже и в MariaDB, не работал сам, сразу. Его надо было настроить. И это было непросто.

Ну а что делать, сертификат-то проверять надо. Иначе это не защита, а пшик. Приходится терпеть. Так мы и терпели почти четверть века, и очень небольшое количество пользователей проходило квест настройки SSL до конца. Это должно измениться новом релизе MariaDB 11.3 (пока доступен только в виде превью тут).

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии7

Kysely.js типизированный sql builder

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров3.4K

Kysely.js – это библиотека, позволяющая писать типизированные SQL запросы. Библиотека делает работу с SQL в вашем проекте более безопасной, избавляя от таких ошибок как опечатки в названиях колонок или таблиц и неправильное использование SQL операторов в коде (код не скомпилируется). Ко всему прочему она делает работу с SQL более удобной, предоставляя при написании запросов автодополнения для таблиц, колонок, алиасов и других сущностей. Kysely имеет незначительный слой абстракции над SQL для того чтобы можно было пользоваться всей мощью SQL и при этом не изучать множество дополнительных сущностей. Библиотека поддерживает MySQL, PostgreSQL, SQLite, PlanetScale, D3, SurrealDB и другие.

Теперь погрузимся в наш кисель ?.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии3

Вклад авторов