# A Novel Global Key-Value Storage System Based on Kinetic Drives +
## 1 Introduction  
Currently, with more and more data being generated every day at a rapid rate, Big Data applications are very popular. It is important to provide better data storage and processing for these applications. Recently, in addition to traditional relational databases, NoSQL databases [1, 2] offer more flexible and higher performance, especially for data in irregular formats. As one of the NoSQL databases, key-value stores (KVS) [3] provide a simple, but efficient data access. KVS systems (e.g., Amazon Dynamo [4], Facebook Cassandra [5], and LinkedIn Voldemort [6]) have been widely adopted for many data intensive applications. In a key-value store system, a data record consists of a _key_ and a _value_. A _key_ is an index for identifying the data record. A _value_ stores the actual data of any type, such as numbers, web pages, or images. With a given _key_, the data record can be quickly retrieved, changed, or deleted. Recently, Seagate [7] developed a new disk drive device called the \"Kinetic Drive\" [8, 9]. Specifically designed for storing key-value pairs, the Kinetic Drive is an example of object-based storage devices (OSDs) [10, 11] and active disks [12, 13, 14]. With its own CPU, RAM, and built-in LevelDB system [15], the Kinetic Drive can independently run key-value operations. The Kinetic Drive significantly changes the storage stack and data management for key-value stores. As shown in Figure 0(a), there is a storage server in the traditional storage stack for accessing data stored in block-based disk drives. However, as shown in Figure 0(b), key-value pairs stored in Kinetic Drives can be directly accessed by the application via Ethernet connection. Hence, the Kinetic storage stack offers easy and flexible data access. In Big Data environments, huge amounts of key-value data are generated from different regions worldwide. It is necessary to manage those data by a global key-value store system. Many Kinetic Drives form a very large pool of key-value store devices when they are connected to networks. Users should be provided with efficient data access by this global key-value store system. Given a _key_, this KVS system should quickly find which Kinetic Drive stores the data. In that case, we need metadata servers to manage key-value data stored in Kinetic Drives. Hence, this global KVS system requires a good design and architecture of data management for these metadata servers. It is challenging to propose such data management for metadata servers in a global KVS system. First, it is important to map huge amounts of key-value pairs to Kinetic Drives in various regions. Second, data usually are stored in multiple copies in this global KVS system due to redundancy and fault tolerance requirements. Third, the fact that key-value pairs are dynamically received should be considered. Fourth, a location-aware design is necessary for quick data access. Fifth, the data management scheme should have a small and affordable overhead. Last but not least, with multiple metadata servers, coordination among them is needed. A good design should include these considerations. This paper is an extended version of the work published in [17]. In this paper, we propose a novel global key-value store system based on Kinetic Drives. Several indexing scheme designs of Kinetic Drives were proposed in [16; 18], which only considered data allocation in a cluster from one location rather than focusing on a global system. In contrast, we offer a comprehensive design and architecture for a global key-value store system using Kinetic Drives among various regions. The contributions of this paper are as follows. * A data management scheme with small storage overhead is proposed for metadata servers to manage Kinetic Drives in different regions. * A comprehensive solution is offered considering several practical aspects, such as data access, _key_ indexing, data backup, and recovery. * Quick data access is provided by a location-aware design.