title: Ð Ð°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ° Ð²ÑÑÑÐ¾ÐµÐ½Ð½Ð¾Ð¹ Ð¿ÐµÑÑÐ¸ÑÑÐµÐ½ÑÐ½Ð¾Ð¹ Ð¿Ð¾Ð´ÑÐ¸ÑÑÐµÐ¼Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÐ¸Ð¿Ð° Â«ÐºÐ»ÑÑ-Ð·Ð½Ð°ÑÐµÐ½Ð¸ÐµÂ»
title: Ð²ÑÐ¿ÑÑÐºÐ½Ð°Ñ ÐºÐ²Ð°Ð»Ð¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑÐ°Ð±Ð¾ÑÐ° Ð±Ð°ÐºÐ°Ð»Ð°Ð²ÑÐ°
titleType: Subtitle
title: Development of an embedded persistent key-value data storage engine
Creators: name: Ð¢ÐºÐ°ÑÐµÐ½ÐºÐ¾, ÐÐ»ÐµÐºÑÐ°Ð½Ð´ÑÐ°
Publisher: name: Ð¡Ð°Ð½ÐºÑ-ÐÐµÑÐµÑÐ±ÑÑÐ³ÑÐºÐ¸Ð¹ Ð¿Ð¾Ð»Ð¸ÑÐµÑÐ½Ð¸ÑÐµÑÐºÐ¸Ð¹ ÑÐ½Ð¸Ð²ÐµÑÑÐ¸ÑÐµÑ ÐÐµÑÑÐ° ÐÐµÐ»Ð¸ÐºÐ¾Ð³Ð¾
Year: 2023
Subjects: Ñ ÑÐ°Ð½Ð¸Ð»Ð¸ÑÐµ Ð´Ð°Ð½Ð½ÑÑ
ÐºÐ»ÑÑ-Ð·Ð½Ð°ÑÐµÐ½Ð¸Ðµ
NoSQL
LSM-tree
B-tree
hash-table
Ð¿Ð¾Ð´ÑÐ¸ÑÑÐµÐ¼Ð° Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
storage engine
data storage
key-value
data storage engine

description: Ð Ð°Ð±Ð¾ÑÐ° Ð¿Ð¾ÑÐ²ÑÑÐµÐ½Ð° ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐºÐµ ÑÑÑÐµÐºÑÐ¸Ð²Ð½Ð¾Ð¹ Ð¿ÐµÑÑÐ¸ÑÑÐµÐ½ÑÐ½Ð¾Ð¹ Ð¿Ð¾Ð´ÑÐ¸ÑÑÐµÐ¼Ñ ÑÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÐ¸Ð¿Ð° "ÐºÐ»ÑÑ-Ð·Ð½Ð°ÑÐµÐ½Ð¸Ðµ" Ð½Ð° ÑÐ·ÑÐºÐµ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Java. Ð¦ÐµÐ»ÑÑ ÑÐ°Ð±Ð¾ÑÑ ÑÐ²Ð»ÑÐµÑÑÑ Ð¿Ð¾Ð²ÑÑÐµÐ½Ð¸Ðµ ÑÑÑÐµÐºÑÐ¸Ð²Ð½Ð¾ÑÑÐ¸ Ð¿Ð¾ÑÐ»ÐµÐ´Ð¾Ð²Ð°ÑÐµÐ»ÑÐ½Ð¾Ð³Ð¾ ÑÑÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿ÑÑÐµÐ¼ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÐ¾Ð±ÑÑÐ²ÐµÐ½Ð½Ð¾Ð³Ð¾ ÑÐµÑÐµÐ½Ð¸Ñ. ÐÐ²ÑÐ¾Ñ ÑÐ°Ð±Ð¾ÑÑ Ð¿ÑÐµÐ´Ð²Ð°ÑÐ¸ÑÐµÐ»ÑÐ½Ð¾ Ð¸Ð·ÑÑÐ°ÐµÑ ÑÐµÐ¾ÑÐµÑÐ¸ÑÐµÑÐºÑÑ Ð¸Ð½ÑÐ¾ÑÐ¼Ð°ÑÐ¸Ñ Ð¾ ÑÐ°Ð·Ð»Ð¸ÑÐ½ÑÑ ÑÐ¸Ð¿Ð°Ñ ÑÑÐ°Ð½Ð¸Ð»Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ, Ð¿Ð¾Ð´ÑÐ¾Ð´Ð°Ñ, Ð¸ÑÐ¿Ð¾Ð»ÑÐ·ÑÐµÐ¼ÑÑ Ð² Ð¸Ñ ÑÐ¸ÑÑÐµÐ¼Ð½Ð¾Ð¹ Ð°ÑÑÐ¸ÑÐµÐºÑÑÑÐµ Ð¸ Ð°ÑÑÐ¸ÑÐµÐºÑÑÑÐµ ÑÑÐ°Ð½ÐµÐ½Ð¸Ñ, Ð° ÑÐ°ÐºÐ¶Ðµ Ð¾ÑÐ³Ð°Ð½Ð¸Ð·Ð°ÑÐ¸Ð¸ Ð´Ð°Ð½Ð½ÑÑ Ð¸ Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑÐ°ÑÐ¸Ð¸. Ð­ÑÐ¾ Ð¾Ð±ÐµÑÐ¿ÐµÑÐ¸Ð²Ð°ÐµÑ Ð½ÐµÐ¾Ð±ÑÐ¾Ð´Ð¸Ð¼ÑÑ Ð±Ð°Ð·Ñ Ð·Ð½Ð°Ð½Ð¸Ð¹ Ð´Ð»Ñ ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ¸ Ð¾Ð¿ÑÐ¸Ð¼Ð°Ð»ÑÐ½Ð¾Ð¹ Ð¿ÐµÑÑÐ¸ÑÑÐµÐ½ÑÐ½Ð¾Ð¹ Ð¿Ð¾Ð´ÑÐ¸ÑÑÐµÐ¼Ñ ÑÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ. ÐÐ»Ñ Ð´Ð¾ÑÑÐ¸Ð¶ÐµÐ½Ð¸Ñ ÑÑÐ¾Ð¹ ÑÐµÐ»Ð¸ Ð°Ð²ÑÐ¾Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸ÑÑÐµÑ ÑÑÑÐµÑÑÐ²ÑÑÑÐ¸Ðµ ÑÐµÐ°Ð»Ð¸Ð·Ð°ÑÐ¸Ð¸ ÑÑÐ°Ð½Ð¸Ð»Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ, Ð¸ÑÐ¿Ð¾Ð»ÑÐ·ÑÑ ÑÐ°Ð·Ð»Ð¸ÑÐ½ÑÐµ Ð¸ÑÑÐ¾ÑÐ½Ð¸ÐºÐ¸, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑÐ¸ÑÑ ÐºÐ°ÑÐµÑÑÐ²ÐµÐ½Ð½ÑÑ Ð¸ ÐºÐ¾Ð»Ð¸ÑÐµÑÑÐ²ÐµÐ½Ð½ÑÑ Ð¸Ð½ÑÐ¾ÑÐ¼Ð°ÑÐ¸Ñ Ð¾Ð± ÑÑÐ¸Ñ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½ÑÑ ÑÐµÑÐµÐ½Ð¸ÑÑ. ÐÐ½Ð°Ð»Ð¸Ð· Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð°Ð²ÑÐ¾ÑÑ ÑÐ´ÐµÐ»Ð°ÑÑ Ð²ÑÐ²Ð¾Ð´ Ð¾ ÑÐ¾Ð¼, ÑÑÐ¾ ÑÑÑÐµÑÑÐ²ÑÑÑÐ¸Ðµ ÑÐµÑÐµÐ½Ð¸Ñ Ð½ÐµÐ´Ð¾ÑÑÐ°ÑÐ¾ÑÐ½Ð¾ ÑÐ¾ÑÐ¾ÑÐ¾ ÑÐµÑÐ°ÑÑ Ð¿Ð¾ÑÑÐ°Ð²Ð»ÐµÐ½Ð½ÑÑ ÑÐµÐ»Ñ. ÐÐ° Ð¾ÑÐ½Ð¾Ð²Ðµ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð½ÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¸ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ð°Ð²ÑÐ¾Ñ Ð¿ÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ ÑÐ¾Ð±ÑÑÐ²ÐµÐ½Ð½Ð¾Ðµ ÑÐµÑÐµÐ½Ð¸Ðµ, ÐºÐ¾ÑÐ¾ÑÐ¾Ðµ ÑÐ°Ð·ÑÐ°Ð±Ð°ÑÑÐ²Ð°ÐµÑÑÑ Ñ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ Ð¿ÐµÑÐµÐ´Ð¾Ð²ÑÑ ÑÐµÑÐ½Ð¾Ð»Ð¾Ð³Ð¸Ð¹ Ð¸ Ð¼ÐµÑÐ¾Ð´Ð¾Ð»Ð¾Ð³Ð¸Ð¹ ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ¸ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ Ð¾Ð±ÐµÑÐ¿ÐµÑÐµÐ½Ð¸Ñ Ð½Ð° Ð²ÑÐµÑ ÑÑÐ°Ð¿Ð°Ñ Ð¿ÑÐ¾ÑÐµÑÑÐ°, Ð½Ð°ÑÐ¸Ð½Ð°Ñ Ñ Ð²ÑÑÐ¾ÐºÐ¾ÑÑÐ¾Ð²Ð½ÐµÐ²Ð¾Ð³Ð¾ Ð¿ÑÐ¾ÐµÐºÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ð·Ð°ÐºÐ°Ð½ÑÐ¸Ð²Ð°Ñ ÑÐµÑÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸ÐµÐ¼, Ð´Ð¾ÐºÑÐ¼ÐµÐ½ÑÐ°ÑÐ¸ÐµÐ¹ Ð¸ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸ÐµÐ¼ ÐºÐ¾Ð½ÐµÑÐ½Ð¾Ð³Ð¾ Ð´Ð¸ÑÑÑÐ¸Ð±ÑÑÐ¸Ð²Ð°. ÐÑÐ¾Ð¼Ðµ ÑÐ¾Ð³Ð¾, Ð°Ð²ÑÐ¾ÑÐ¾Ð¼ Ð¿ÑÐ¾Ð²ÐµÐ´ÐµÐ½ Ð¸ÑÐ¾Ð³Ð¾Ð²ÑÐ¹ ÑÑÐ°Ð²Ð½Ð¸ÑÐµÐ»ÑÐ½ÑÐ¹ Ð°Ð½Ð°Ð»Ð¸Ð· Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ÑÐµÐ»ÑÐ½Ð¾ÑÑÐ¸ Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑÐµÐ»ÑÐ½ÑÐ¼ Ð¸ÑÐ¾Ð³Ð¾Ð¼. Ð ÐµÐ·ÑÐ»ÑÑÐ°ÑÑ ÑÐ°Ð±Ð¾ÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½Ð¸Ð¼Ñ Ð² ÑÐ°Ð·Ð»Ð¸ÑÐ½ÑÑ Ð¾Ð±Ð»Ð°ÑÑÑÑ, Ð³Ð´Ðµ ÑÑÐµÐ±ÑÐµÑÑÑ Ð¾Ð¿ÑÐ¸Ð¼Ð°Ð»ÑÐ½Ð¾Ðµ ÑÑÐµÐ½Ð¸Ðµ Ð´Ð°Ð½Ð½ÑÑ.
description: This paper focuses on the development of an efficient persistent key-value data storage subsystem using the Java programming language. The aim of the study is to improve the efficiency of sequential data reading by creating a customized solution. The author examines the theoretical information about various types of data storage, approaches used in their system architecture and storage architecture, as well as data organization and indexing. This provides the necessary knowledge base for developing an optimal persistent data storage subsystem. To achieve this goal, the author analyzes existing implementations of data storage from various sources to obtain qualitative and quantitative information about these software solutions. The analysis leads the author to conclude that the existing solutions do not sufficiently address the stated problem. Based on the acquired data and analysis, the author proposes their own solution, which is developed using cutting-edge technologies and software develop-ment methodologies throughout the entire process, starting from high-level design and concluding with testing, documentation, and the creation of the final distribution. Additionally, the author conducts a comprehensive performance comparative analysis with positive outcomes. The results of this work can be applicable in various domains where optimal data reading is required.