ru
Feedback
PHP | Вопросы собесов

PHP | Вопросы собесов

Открыть в Telegram
2 341
Подписчики
-224 часа
-57 дней
-2330 день
Архив постов
Бесплатная неделя в онлайн-школе программирования! Вы хотите, чтобы ваш ребенок развивал навыки будущего и уверенно шагал к успеху? Познакомьте его с миром IT в нашей уникальной школе! 🎓 Что мы предлагаем? - Пробный урок с лучшими педагогами - Доступ в международное IT сообщество детей в Discord - Уникальная игровая валюта Rocket Coins - Проектная работа и защита перед наставником Для детей от 5 до 17 лет Занятия на выборе: RU, ENG, ES Мы работаем круглосуточно и подберем удобное для вас время занятий. Доверьтесь нашему опыту: у нас более 3,000 учеников из 50 стран! Узнать больше #реклама 16+ rts.school О рекламодателе

🤔 Что делать , если база данных в файле SQL на миллион 155 тысяч кода с помощью инструментов не вставляется? Если у вас есть SQL-файл с более чем миллионом строк кода и вы сталкиваетесь с проблемами при его импортировании в базу данных с помощью стандартных инструментов (например, phpMyAdmin или утилиты командной строки mysql), можно воспользоваться несколькими подходами для успешного выполнения этой задачи. Вот несколько методов и стратегий, которые можно использовать: 🚩Разделение SQL-файла на части Разделение большого SQL-файла на более мелкие части может помочь избежать ошибок, связанных с ограничениями памяти или времени выполнения. 🚩Инструменты 🟠MySQL Workbench Поддерживает импорт данных по частям. 🟠SQL Dump Splitter Скрипты и утилиты для разделения больших SQL-файлов. 🚩Шаги 1⃣Разделите файл на более мелкие части, например, по 100 тысяч строк. 2⃣Импортируйте каждую часть отдельно.
split -l 100000 large_file.sql small_file_
3⃣Использование командной строки MySQL Командная строка MySQL часто более устойчива к большим объемам данных по сравнению с графическими интерфейсами.
mysql -u username -p database_name < large_file.sql
🟠Настройка параметров сервера MySQL Изменение параметров конфигурации MySQL может помочь справиться с большими файлами. 🟠Импорт по частям с помощью `mysql` Если разбивать файл вручную неудобно, можно использовать инструмент sed или скрипты для импорта данных по частям.
# Предположим, что файл large_file.sql содержит строки INSERT для одной таблицы
sed -n '1,100000p' large_file.sql | mysql -u username -p database_name
sed -n '100001,200000p' large_file.sql | mysql -u username -p database_name
# И так далее...
🟠Использование утилиты `mysqlimport` mysqlimport — это утилита для массовой загрузки данных в таблицы MySQL.
mysqlimport --local --user=username --password=password --fields-terminated-by=',' database_name large_file.csv
🟠Импорт с помощью `LOAD DATA INFILE` Команда LOAD DATA INFILE позволяет быстро загружать данные из текстового файла в таблицу MySQL.
LOAD DATA INFILE '/path/to/large_file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
🟠Использование более мощных инструментов Использование специализированных инструментов для работы с большими базами данных, таких как Percona Toolkit или MySQL Enterprise Backup, может значительно облегчить задачу.
pt-archiver --source h=localhost,D=database_name,t=table_name --file large_file.sql
Ставь 👍 и забирай 📚 Базу знаний

🤔 Расскажи про полиморфизм Полиморфизм в PHP позволяет объектам различных классов использоваться одинаково через общий интерфейс. Это достигается с помощью наследования, где классы могут переопределять методы базового класса, или через интерфейсы, обеспечивая унифицированную реализацию разных функций. Примером может служить метод, который вызывает `makeSound()` как на объектах `Dog`, так и `Cat`, обрабатывая их через один интерфейс `Animal`. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специал
+9
Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно! Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита. Для этого нужно: - Перейти по ссылке - Заполнить анкету и ответить на вопросы (занимает менее 3 минут) - На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать Перейти на сайт #реклама 16+ urban-university.ru О рекламодателе

🤔 Какие инструменты и методики используете для отладки и профилирования PHP-приложений? Для отладки и профилирования PHP-приложений существует множество инструментов и методик, которые помогают разработчикам находить и исправлять ошибки, а также оптимизировать производительность кода. 🚩Инструменты для отладки 🟠Xdebug Это мощный расширение для PHP, которое предоставляет средства для отладки, профилирования, трассировки и анализа покрытия кода. Пошаговая отладка (breakpoints, stack traces): Трассировка выполнения скриптов Генерация отчетов о покрытии кода Профилирование производительности Xdebug можно интегрировать с IDE (например, PhpStorm, Visual Studio Code) для интерактивной отладки.
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003    
🟠PHPStorm Debugger Встроенный отладчик в IDE PhpStorm, который поддерживает интеграцию с Xdebug и Zend Debugger. Интерактивная отладка с визуальными инструментами Пошаговая отладка и просмотр значений переменных Возможность установки точек останова (breakpoints) 🟠Laravel Telescope Инструмент для мониторинга и отладки приложений, построенных на Laravel. Мониторинг запросов HTTP Запись выполненных команд Artisan Мониторинг запросов к базе данных Просмотр очередей задач, журналов и уведомлений 🚩Инструменты для профилирования 🟠Xdebug Помимо отладки, Xdebug предоставляет средства для профилирования, что позволяет анализировать производительность кода. Генерация отчетов в формате Cachegrind. Отчеты профилирования можно анализировать с помощью инструмента KCachegrind.
xdebug.mode=profile
xdebug.output_dir=/path/to/profiles     
🟠Blackfire Платформа для профилирования производительности PHP-приложений. Инструменты для анализа производительности в реальном времени Интеграция с CI/CD для автоматического анализа производительности Детализированные графики вызовов функций Требуется установка агентской программы и расширения PHP.
blackfire run php script.php     
🟠New Relic Коммерческая платформа для мониторинга производительности приложений. Мониторинг производительности серверов и приложений Детализированный анализ времени выполнения запросов и использования ресурсов Интеграция с различными языками программирования, включая PHP Требуется установка агента New Relic на сервер. 🚩Методики для отладки и профилирования 🟠Логирование Использование инструментов логирования, таких как Monolog, для записи детализированных логов выполнения кода. Пример использования Monolog в Laravel:
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));

$log->warning('Foo');
$log->error('Bar');     
🟠Тестирование Написание и выполнение юнит-тестов с использованием PHPUnit для проверки корректности кода. Интеграция с CI/CD для автоматического запуска тестов при каждом изменении кода. 🟠Производительный аудит кода Регулярный аудит кода для выявления потенциальных проблем с производительностью. Использование статических анализаторов, таких как PHPStan или Psalm, для автоматического анализа кода. Ставь 👍 и забирай 📚 Базу знаний

Бесплатное IT-образование в 2024 Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления Выбирайте нужное и подписывайтесь: 👩‍💻 Python: @PythonPortal 📱 GitHub: @git_developer 👩‍💻 Frontend: @FrontendPortal 🤓 Книги айти: @portalToIT 👩‍💻 Java: @Java_Iibrary 👩‍💻 C#: @KodBlog 👩‍💻 С/С++: @Cpportal ⚙️ Backend: @BackendPortal 🐞 Тестирование: @QAPortal 👩‍💻 DevOps: @loose_code 🖥 Базы Данных & SQL: @SQL 👩‍💻 Golang: @juniorGolang 👩‍💻 PHP: @PHPortal 👩‍💻 Моб. разработка: @MobDev 👩‍💻 Разработка игр: @GameDevgx 🖥 Data Science: @DataSciencegx 🤔 Хакинг & ИБ: @cybersecinform 📱 Маркетинг: @MarketingPortal 🖥 Дизайн: @PortalToDesign ➡️ Сохраняйте себе, чтобы не потерять

🤔 Какие паттерны знаешь? В программировании и разработке ПО существует множество паттернов проектирования, включая: - **Порождающие**: Singleton, Factory, Builder, Prototype. - **Структурные**: Adapter, Decorator, Facade, Proxy, Bridge. - **Поведенческие**: Observer, Strategy, Command, State, Template Method, Iterator, Mediator. Эти паттерны помогают решать общие проблемы проектирования, повышая уровень абстракции и уменьшая связность компонентов? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Обучение на Frontend-разработчика. С нуля за 9 месяцев. На курсе вы получите все навыки, необходимые для старта в профессии Frontend-разработчика. Персональный наставник middle/senior уровня. 14 проектов, лайвкодинг, хакатоны, репетиции техсобеседования. Освоите JavaScript, React, TypeScript Официальный диплом и сертификат школы. Поддержка наставника по JS в течение 3-х месяцев после диплома. Гарантия трудоустройства. Если вы не устроитесь, вернём деньги. Это закреплено в договоре п. 6.14 Узнать больше #реклама 16+ result.school О рекламодателе

🤔 Что такое php-fpm и FastCGI? Это технологии, используемые для улучшения производительности веб-серверов и обработки PHP-скриптов. 🚩FastCGI Это протокол для взаимодействия внешних приложений с веб-серверами. Он был разработан для преодоления недостатков CGI (Common Gateway Interface), таких как низкая производительность и ограниченная масштабируемость. 🟠Производительность В отличие от CGI, который создаёт новый процесс для каждого запроса, FastCGI запускает несколько процессов и использует их повторно для обработки множества запросов. Это уменьшает накладные расходы на создание и завершение процессов. 🟠Масштабируемость Поддерживает обработку множества одновременных запросов, что делает его подходящим для высоконагруженных веб-приложений. 🟠Разделение задач Веб-сервер и приложения работают как независимые процессы. Это позволяет веб-серверу обрабатывать статические файлы и передавать динамические запросы к FastCGI-процессам.
server {
    listen 80;
    server_name example.com;

    root /var/www/html;
    
    location / {
        index index.php index.html index.htm;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
🚩PHP-FPM Это реализация FastCGI, специально разработанная для PHP. 🟠Управление процессами Поддерживает динамическое управление процессами, включая старт, завершение и перезапуск процессов PHP-FPM. 🟠Логи и мониторинг Предоставляет расширенные возможности логирования и мониторинга, что облегчает отладку и администрирование. 🟠Настраиваемые пуллы Поддерживает создание нескольких пуллов процессов с различными конфигурациями, что позволяет оптимизировать производительность для различных частей веб-приложения. 🟠Производительность и стабильность Обеспечивает улучшенную производительность и стабильность по сравнению с традиционными CGI и некоторыми другими методами обработки PHP-скриптов.
; Путь к сокету, через который будет работать PHP-FPM
listen = 127.0.0.1:9000

; Имя пользователя и группы, под которыми будут выполняться процессы
user = www-data
group = www-data

; Количество процессов
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

; Путь к файлу журнала ошибок
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_flag[log_errors] = on
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие типы объединений есть в таблицах? В SQL, используемом в базах данных, доступны различные типы JOIN, включая: - **INNER JOIN**: возвращает строки, когда условие совпадения выполняется для обеих таблиц. - **LEFT JOIN** (или LEFT OUTER JOIN): возвращает все строки из левой таблицы и совпавшие строки из правой таблицы. - **RIGHT JOIN** (или RIGHT OUTER JOIN): возвращает все строки из правой таблицы и совпавшие строки из левой таблицы. - **FULL JOIN** (или FULL OUTER JOIN): возвращает строки, когда есть совпадение хотя бы в одной из таблиц? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

🤔 Что такое партицирование? Это метод разделения таблицы базы данных на более мелкие, управляемые и удобные в работе части, называемые партициями. Каждая партиция хранится и обрабатывается независимо, что может значительно улучшить производительность и управляемость базы данных, особенно при работе с большими объемами данных. 🚩Виды 🟠Диапазонное партицирование (Range Partitioning) Данные разделяются на партиции на основе диапазона значений столбца. Пример: Таблица заказов может быть разделена на партиции по годам
CREATE TABLE orders (
    order_id INT,
    order_date DATE,
    customer_id INT,
    amount DECIMAL(10, 2)
)
PARTITION BY RANGE (YEAR(order_date)) (
    PARTITION p2019 VALUES LESS THAN (2020),
    PARTITION p2020 VALUES LESS THAN (2021),
    PARTITION p2021 VALUES LESS THAN (2022)
);
🟠Хэш-партицирование (Hash Partitioning) Данные распределяются по партициям на основе хэш-функции, применяемой к значению столбца. Пример: Таблица пользователей может быть разделена на партиции по идентификатору пользователя
CREATE TABLE users (
    user_id INT,
    username VARCHAR(50),
    email VARCHAR(50)
)
PARTITION BY HASH(user_id) PARTITIONS 4;
🟠Списковое партицирование (List Partitioning) Данные разделяются на партиции на основе перечисленных значений столбца. Таблица продуктов может быть разделена на партиции по категориям продуктов
CREATE TABLE products (
    product_id INT,
    product_name VARCHAR(50),
    category VARCHAR(20)
)
PARTITION BY LIST (category) (
    PARTITION electronics VALUES IN ('Electronics'),
    PARTITION furniture VALUES IN ('Furniture'),
    PARTITION clothing VALUES IN ('Clothing')
);
🟠Партицирование по ключу (Key Partitioning) Вариант хэш-партицирования, где используется внутренняя хэш-функция базы данных.
CREATE TABLE employees (
    emp_id INT,
    emp_name VARCHAR(50),
    department_id INT
)
PARTITION BY KEY(emp_id) PARTITIONS 4;
🚩Плюсы Улучшенная производительность Ускоряет выполнение запросов, так как обработка может быть ограничена только нужной партицией, а не всей таблицей. Повышает скорость операций вставки, обновления и удаления данных. ➕Упрощенное управление данными Позволяет легко управлять большими объемами данных, удаляя или архивируя данные по партициям. Упрощает резервное копирование и восстановление данных. ➕Повышенная доступность Улучшает доступность данных, так как сбой в одной партиции не влияет на доступность данных в других партициях. ➕Балансировка нагрузки Обеспечивает равномерное распределение нагрузки на дисковую систему и ресурсы сервера. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое полиморфизм? Полиморфизм — это концепция объектно-ориентированного программирования, позволяющая использовать один интерфейс для различных типов данных. В PHP полиморфизм часто реализуется через интерфейсы или абстрактные классы, которые определяют общий интерфейс для группы классов, каждый из которых должен предоставить свою реализацию, позволяющую обрабатывать разные типы объектов через один и тот же код? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое RabbitMq? Это система обмена сообщениями (message broker) с открытым исходным кодом, разработанная для асинхронной передачи данных между различными компонентами программного обеспечения. Она основана на протоколе Advanced Message Queuing Protocol (AMQP) и позволяет приложениям обмениваться сообщениями, не завися от их одновременной работы и непосредственного взаимодействия. 🚩Понятия 🟠Сообщение (Message) Основная единица данных, отправляемая от отправителя (producer) к получателю (consumer). Сообщение может содержать заголовки и тело, которое представляет собой полезную нагрузку. 🟠Очередь (Queue) Место хранения сообщений, пока они не будут потреблены. Очередь работает по принципу FIFO (First In, First Out), обеспечивая последовательность обработки сообщений. 🟠Обменник (Exchange) Компонент, который получает сообщения от отправителей и направляет их в соответствующие очереди на основе различных типов обменников: Direct Exchange Сообщения направляются в очереди, которые соответствуют конкретному маршрутизирующему ключу (routing key). Topic Exchange Сообщения направляются в очереди на основе шаблонов маршрутизирующих ключей. Fanout Exchange Сообщения транслируются во все связанные очереди, без учета маршрутизирующего ключа. Headers Exchange Сообщения направляются в очереди на основе совпадения заголовков сообщений. 🟠Связь (Binding) Связь между обменником и очередью, определяющая правила маршрутизации сообщений из обменника в очередь. 🟠Отправитель (Producer) Приложение или компонент, который отправляет сообщения в RabbitMQ. 🟠Получатель (Consumer) Приложение или компонент, который получает и обрабатывает сообщения из очереди. 🚩Плюсы Асинхронная обработка Позволяет отделить отправку и получение сообщений, что повышает гибкость и производительность системы. ➕Надежность Поддерживает подтверждение доставки сообщений (acknowledgements) и сохранение сообщений на диск (durability) для обеспечения надежности. ➕Масштабируемость Легко масштабируется горизонтально путем добавления новых узлов в кластер. ➕Гибкость маршрутизации Обеспечивает различные схемы маршрутизации для удовлетворения различных потребностей в обмене сообщениями. ➕Интероперабельность Поддерживает множество протоколов и библиотек для интеграции с различными языками программирования и платформами. 🚩Пример использования
require_once __DIR__ . '/vendor/autoload.php';

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;

// Установка соединения с RabbitMQ сервером
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();

// Объявление очереди
$channel->queue_declare('hello', false, false, false, false);

// Создание сообщения
$msg = new AMQPMessage('Hello World!');

// Отправка сообщения в очередь
$channel->basic_publish($msg, '', 'hello');

echo " [x] Sent 'Hello World!'\n";

// Закрытие канала и соединения
$channel->close();
$connection->close();
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое динамическая типизация? Динамическая типизация — это особенность языков программирования, таких как PHP, при которой тип переменной определяется во время выполнения программы, а не во время компиляции, позволяя переменным хранить значения любого типа и изменять свой тип в зависимости от контекста использования? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое Sphinx, ElasticSearch? Это две популярные системы полнотекстового поиска, каждая из которых предлагает мощные возможности для индексации и поиска по большим объемам данных. Рассмотрим их по отдельности. 🚩Sphinx Это открытая система полнотекстового поиска, предназначенная для поиска данных в больших коллекциях текстовой информации. Она часто используется для добавления поисковой функциональности к веб-приложениям и базам данных. 🚩Характеристики 🟠Высокая производительность Оптимизирован для быстрой индексации и поиска. 🟠Поддержка различных форматов Может индексировать данные из MySQL, PostgreSQL, XML и других источников. 🟠Настраиваемый поиск Поддерживает различные типы запросов, включая булевые операции, фразовый поиск и др. 🟠Репликация и шардирование Поддерживает распределенные поисковые системы для масштабирования.
// Пример PHP-кода для использования Sphinx
$cl = new SphinxClient();
$cl->SetServer("localhost", 9312);
$cl->SetMatchMode(SPH_MATCH_ALL);
$result = $cl->Query("your search query", "index_name");

if ($result === false) {
    echo "Query failed: " . $cl->GetLastError() . ".\n";
} else {
    if ($cl->GetLastWarning()) {
        echo "WARNING: " . $cl->GetLastWarning() . "\n";
    }
    if (!empty($result["matches"])) {
        foreach ($result["matches"] as $doc => $docinfo) {
            echo "Document ID: " . $doc . ", Weight: " . $docinfo["weight"] . "\n";
        }
    }
}
🟠Elasticsearch Это распределенная поисковая и аналитическая система на основе Apache Lucene, популярная за свою масштабируемость, мощные возможности поиска и анализа данных. 🚩Характеристики 🟠Распределенность и масштабируемость Поддерживает автоматическое шардирование и репликацию данных для обработки больших объемов информации. 🟠Полнотекстовый поиск Обеспечивает мощные возможности полнотекстового поиска с поддержкой различных типов запросов. 🟠Реальное время Поддерживает обновление данных и поисковые запросы в реальном времени. 🟠API на базе JSON и REST Легко интегрируется с другими системами через REST API и поддерживает множество языков программирования.
// Пример PHP-кода для использования Elasticsearch через библиотеку Elasticsearch-PHP
require 'vendor/autoload.php';

use Elasticsearch\ClientBuilder;

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body'  => [
        'query' => [
            'match' => [
                'field_name' => 'your search query'
            ]
        ]
    ]
];

$response = $client->search($params);
print_r($response);
🚩Сравнение и выбор 🟠Масштабируемость Elasticsearch лучше подходит для масштабируемых распределенных систем, так как изначально спроектирован для работы с большими кластерами данных. 🟠Простота установки Sphinx может быть проще в установке и настройке для небольших проектов. 🟠Функциональность Elasticsearch предоставляет более богатый набор функций, включая анализ данных и расширенные поисковые возможности. 🟠Поддержка и сообщество Elasticsearch имеет более активное сообщество и лучше поддерживается благодаря коммерческой поддержке от Elastic. Ставь 👍 и забирай 📚 Базу знаний

Начни изучать Linux, не ограничивай себя от рынка. Топ компании повсеместно используют данную операционку и повышают зп за на
Начни изучать Linux, не ограничивай себя от рынка. Топ компании повсеместно используют данную операционку и повышают зп за навык. Google, YouTube, Яндекс - все они активно пользуются системой. Чтобы не быть в стороне и не попадать на вакансии по остаточному принципу подпишись на канал Linux Shell и начни повышать свою классификацию.

🤔 Что такое статическое связывание? Статическое связывание (static binding) в PHP и других языках ООП означает, что метод или свойство будут связаны с классом во время компиляции (или в случае с PHP — во время выполнения до выполнения). В PHP статическое связывание используется ключевым словом `self` для обращения к статическим свойствам и методам внутри класса? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое вертикальное и горизонтальное масштабирование в БД? Это два метода повышения производительности и пропускной способности баз данных. 🚩Вертикальное масштабирование (Vertical Scaling) Вертикальное масштабирование, также известное как масштабирование "вверх" (scale up), предполагает улучшение производительности базы данных за счет увеличения ресурсов на одном сервере. Это может включать: Добавление большего объема оперативной памяти (RAM), Увеличение мощности процессора (CPU), Увеличение объема хранилища (SSD или HDD), Использование более быстрого сетевого оборудования 🟠Плюсы и минусыПростота реализации Легко выполнить, поскольку не требует изменения архитектуры приложения. ➕Единая точка управления Администрирование базы данных проще, так как все данные находятся на одном сервере. ➖Ограничения оборудования Есть пределы, до которых можно увеличивать ресурсы на одном сервере. ➖Единая точка отказа Если сервер выходит из строя, вся база данных становится недоступной. 🟠Пример Допустим, у вас есть сервер с 16 ГБ оперативной памяти и 4-ядерным процессором. Вертикальное масштабирование может включать замену его на сервер с 64 ГБ оперативной памяти и 16-ядерным процессором. 🚩Горизонтальное масштабирование (Horizontal Scaling) Горизонтальное масштабирование, также известное как масштабирование "вширь" (scale out), включает добавление большего количества серверов для разделения нагрузки и данных. Это может включать: Добавление дополнительных серверов с аналогичными характеристиками, Распределение данных между несколькими серверами (шардирование), Использование распределенных систем и кластеров 🟠Плюсы и минусыНеограниченное масштабирование Можно добавлять столько серверов, сколько нужно для обработки увеличивающейся нагрузки. ➕Устойчивость к отказам Если один сервер выходит из строя, остальные продолжают работать, что повышает надежность системы. ➖Сложность реализации Требует изменения архитектуры приложения и настройки системы для работы в распределенной среде. ➖Администрирование Управление несколькими серверами сложнее, чем одним. 🟠Пример Предположим, у вас есть три сервера, каждый с 16 ГБ оперативной памяти и 4-ядерным процессором. Горизонтальное масштабирование может включать добавление еще трех серверов с такими же характеристиками и распределение данных между ними. Ставь 👍 и забирай 📚 Базу знаний

🤔 Разница между merge и rebase? - **Merge**: объединяет изменения из одной ветки в другую, создавая новый коммит слияния, если есть изменения в обеих ветках, что сохраняет историю всех изменений и ветвлений. - **Rebase**: переписывает историю проекта, перемещая или "перебазируя" все изменения из одной ветки на другую, начиная с текущего конца ветки. Это создает более чистую линейную историю.? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний