Спросить
Войти

ИСПОЛЬЗОВАНИЕ ЛОКАЛЬНОГО КЭШИРОВАНИЯ ДЛЯ УВЕЛИЧЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ РАСПРЕДЕЛЕННОЙ СИСТЕМЫ

Автор: Невмержицкий Антон Александрович

ИСПОЛЬЗОВАНИЕ ЛОКАЛЬНОГО КЭШИРОВАНИЯ ДЛЯ УВЕЛИЧЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ РАСПРЕДЕЛЕННОЙ

СИСТЕМЫ

Невмержицкий А.А. Email: Nevmerzhitskiy689@scientifictext.ru

Невмержицкий Антон Александрович - магистрант, кафедра программного обеспечения ЭВМ и информационных технологий, Московский государственный технический университет им. Н.Э. Баумана, г. Москва

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

USING LOCAL CACHING TO INCREASE THE PERFORMANCE OF A DISTRIBUTED SYSTEM Nevmerzhitskiy A.A.

Nevmerzhitskiy Anton Alexandrovich - Undergraduate, COMPUTER SOFTWARE AND INFORMATION TECHNOLOGY DEPARTMENT, N.E. BAUMAN MOSCOW STATE TECHNICAL UNIVERSITY, MOSCOW

Abstract: the main attention is paid to usage of local caching in order to optimize the performance of distributed system servers. The benefits of using local caching over standard database select requests are shown. The features of using local caching, the most appropriate mechanisms and data structures for this are described. The main problems and limitations of using local caches are shown - the problems of multithreaded access, memory overflow and coherence. The main criteria for cached data, as well as problems that may arise if these criteria are not met, are considered. Keywords: databases, distributed systems, caching.

УДК 004.254

Введение

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

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

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

Локальное кэширование

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

Говоря о производительности, стоит рассмотреть основные проблемы обращения к базе данных для получения некоторой информации по первичному ключу. Можно выделить несколько узких мест, оптимизация которых позволит существенно увеличить суммарную производительность системы.

Любое обращение к базе данных связано с передачей некоторой информации по сети с использованием специальных протоколов. Например, для взаимодействия с СУБД MS SQL используется протокол прикладного уровня TDS (Tabular Data Stream [1]). Отсюда следует, что суммарное время получения клиентом какой-либо информации из SQL сервера зависит не только от специфических механизмов СУБД, направленных на обеспечение возможности производить операции чтения максимально эффективно, но и от сетевых задержек и латентности сети. Из-за этого фактора СУБД, гарантирующая десятки тысяч операций чтения в секунду, на практике будет выдавать производительность на несколько порядков меньше из-за сетевых нагрузок.

Второе узкое место связано непосредственно со структурой хранения данных в СУБД. Как правило, все таблицы, для которых задан первичный ключ, представляют собой индексы. B-tree - стандартная структура данных для хранения индексов. Она представляет собой сбалансированное, сильно ветвистое дерево и часто используется для хранения данных на внешних носителях [4, с. 515]. Являясь деревом, такая структура позволяет производить операции чтения с алгоритмической сложностью

O(logt где t - минимальная степень дерева. Однако дерево - не самая

эффективная структура для получения информации по ключу. Хэш-таблицы и словари позволяют производить операции чтения с алгоритмической сложностью O(1). Стоит отметить, что использовать эти структуры непосредственно в самих базах данных не целесообразно.

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

• Поверить, есть ли информация по данному ключу в локальном кэше.

• Если есть, то вернуть эту информацию клиенту или продолжить ее обработку на сервере.

• Если информация в кэше не найдена, производится обращение к базе данных.

• Прочитанные данные сохраняются в локальном кэше и отправляются клиенту или обрабатываются сервером.

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

Таким образом, требуемая информация хранится на каждом сервере в его оперативной памяти в виде максимально оптимальных структур. И на практике такой подход дает существенный прирост к суммарной производительности системы.

Проблемы и ограничения при использовании локального кэширования

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

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

Хранение локального кэша в оперативной памяти приводит к другой проблеме -проблеме ее переполнения. Оперативная память - самая быстрая, но ее немного. Поэтому в случае ее переполнения применяются различные алгоритмы вытеснения [5]. Некоторые из них:

• Вытеснение давно неиспользуемых (англ. Least Recently Used). В первую очередь вытесняется неиспользованный дольше всех элемент. Этот алгоритм требует отслеживания того, что и когда использовалось, что может оказаться затратно.

• Наименее часто используемый (англ. Least Frequently Used). Подсчитывает, как часто используется элемент. Те элементы, обращения к которым происходят реже всего, вытесняются в первую очередь.

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

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

Еще одна проблема связана с тем, что в распределенной системе есть несколько серверов, выполняющих свои функции и при этом имеющие свои локальные кэши. Так, при получении очередного запроса на изменение данных сервер изменяет их в базе данных и в своем локальном кэше. В этом случае возникает следующая проблема - кэши всех остальных серверов не имеют информации об изменении соответствующих данных. В общем случае такая проблема называется проблемой когерентности кэшей. Существует множество методов обеспечения когерентности кэшей кластера - например, использование временных меток и триггеров. На сегодняшний день наиболее популярное решение - использование журналов предзаписи баз данных [2], [3]. Из-за этой проблемы также не рекомендуется кэшировать часто изменяемые данные.

Заключение

В результате проделанной работы были рассмотрены особенности использования локального кэширования для оптимизации работы распределенной системы серверов.

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

Список литературы /References

1. MSDN. Tabular Data Streams protocol. [Электронный ресурс]. Режим доступа

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-tds/b46a581a-39de4745-b076-ec4dbb7d13ec/ (дата обращения: 20.05.2020).

2. Debezium documentation. [Электронный ресурс]. Режим доступа

https://debezium.io/documentation/ (дата обращения: 15.05.2020).

3. DBLog Netflix documentation. [Электронный ресурс]. Режим доступа https://netflixtechblog.com/dblog-a-generic-change-data-capture-framework-69351fb9099b/ (дата обращения: 16.05.2020).
4. Кормен Томас Х., Лейзерсон Чарльз И., Ривест Рональд Л., Штайн Клиффорд. // Алгоритмы: построение и анализ. 2-е изд. М.: Вильямс, 2006.
5. Definitions of various cache algorithms. [Электронный ресурс]. Режим доступа https://www.usenix.org/legacy/events/usenix01/full_papers/zhou/zhou_html/node3.html/ (дата обращения: 18.05.2020).

DEVELOPMENTAL STUDY OF COTTON STALK PULLER

PERFORMANCE

1 2 Tursunov O.A. , Biloldinov Z.

Email: Tursunov689@scientifictext.ru

1Tursunov Oybek Abduhalim ugli - Assistant Lecturer, AUTOMOTIVE ENGINEERING DEPARTMENT; 2Biloldinov Husanboy Zafar ugli - Master&s degree Student, AUTOMOTIVE ENGINEERING FACULTY, ANDIJANMACHINE-BUILDING INSTITUTE, ANDIJAN, REPUBLIC OF UZBEKISTAN

Abstract: most part of the cultivated area in Uzbekistan is devoted to cotton production. Manual pulling of cotton stalks after cotton picking is difficult and time consuming for the manual power, which could be devoted to some other productive work. In order to overcome these problems, a study was carried out on designing the mechanization for pulling and baling cotton stalks in one tillage, by changing the existing version of Cotton Stalk Puller called "Grubber-swather". This article describes the research results and technical and economical features of the newly designed mechanization as well as work productivity of it. Keywords: cotton stalk; cotton stalk puller.

ИССЛЕДОВАНИЕ РАЗВИТИЯ ПРОИЗВОДИТЕЛЬНОСТИ

КОРЧЕВАТЕЛЯ СТЕБЛЕЙ ХЛОПЧАТНИКА

12 Турсунов О.А. , Билолдинов Х.З.
1Турсунов Ойбек Абдухалим угли - ассистент, кафедра автомобилестроения; 2Билолдинов Хусанбой Зафар угли - магистрант,

факультет автомобилестроения, Андижанский машиностроительный институт, г. Андижан, Республика Узбекистан

Аннотация: большая часть посевных площадей в Узбекистане отведена под производство хлопка. Ручное вытягивание стеблей хлопчатника после сбора хлопка является трудным и трудоемким для ручного труда, который может быть посвящен какой-то другой продуктивной работе. Для преодоления этих проблем было проведено исследование по проектированию механизации вытягивания и прессования хлопковых стеблей в одну обработку почвы путем изменения существующей версии устройства для удаления хлопковых стеблей под названием «Корчеватель-валкоукладчик». В данной статье описываются результаты исследований и технико-экономические особенности вновь проектируемой механизации, а также производительность труда рабочих. Ключевые слова: стебли хлопчатника, корчеватель-валкоукладчик.

БАЗЫ ДАННЫХ РАСПРЕДЕЛЕННЫЕ СИСТЕМЫ КЭШИРОВАНИЕ databases distributed systems caching
Другие работы в данной теме:
Контакты
Обратная связь
support@uchimsya.com
Учимся
Общая информация
Разделы
Тесты