Computer implementation methods, computer programs, and systems
By identifying and selecting input/output connections based on CPU core speeds and urgency levels, the method enhances the efficiency of query handling in NoSQL databases using NVMe-based storage systems.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- INTERNATIONAL BUSINESS MACHINE CORPORATION
- Filing Date
- 2022-10-10
- Publication Date
- 2026-06-30
AI Technical Summary
NoSQL databases lack a means to utilize multiple input/output connections generated in a multi-connection input/output transmission protocol like NVMe and propagate query urgency to the storage system effectively.
A method and system for managing queries in NoSQL databases that identify logical and/or physical input/output connections to disk volumes, consider CPU core speeds, and select the appropriate connection based on input/output access characteristics and urgency levels to propagate query urgency through one of these connections.
Enables efficient utilization of multiple input/output connections and propagation of query urgency, improving the retrieval performance of objects from storage systems in NoSQL databases.
Smart Images

Figure 0007882624000001 
Figure 0007882624000002 
Figure 0007882624000003
Abstract
Description
Technical Field
[0001] The present disclosure generally relates to non-relational databases such as NoSQL databases, and more specifically, to the management of queries for non-relational databases (e.g., NoSQL databases) with multi-path storage connections (i.e., multiple paths to a storage system).
Background Art
[0002] A non-relational database is a database that is not "relational." Relational databases present data to users as relationships (tabular presentation, i.e., a set of tables each consisting of a set of rows and columns). However, non-relational databases provide a mechanism for the storage and retrieval of data modeled by means other than the tabular relationships used in relational databases. An example of such a non-relational database is a NoSQL ("Not Only SQL") database.
Summary of the Invention
[0003] According to one aspect of the invention, a computer implementation method for managing queries to a non-relational database is provided. The method comprises the step of receiving a query for retrieving an object from a storage system of a non-relational database system. The method further includes identifying a disk volume of the storage system from a record of the object. Furthermore, the method comprises the step of identifying logical and / or physical input / output connections to the disk volume of the storage system, where each logical and / or physical input / output connection corresponds to a path from the non-relational database to the disk volume of the storage system, where each logical and / or physical input / output connection includes one or more input / output queues tagged to a non-similar central processing unit (CPU) core of the storage system. Furthermore, the method comprises the step of obtaining the CPU core speed for the CPU core of the storage system. In addition, the method comprises the step of selecting one of the identified logical and / or physical input / output connections to be used to send a request to the storage system for retrieving an object based on the input / output access characteristics of the identified logical and / or physical input / output connections, the CPU core speed for the CPU core, and a determined level of urgency for retrieving the object. The method further comprises the step of sending a request to the storage system via a selected logical or physical input / output connection.
[0004] Other embodiments of the computer implementation methods described above are the form of a system and the form of a computer program product. In another embodiment, a computer program product for managing queries to a non-relational database, the computer program product comprising one or more computer-readable storage media having program code embodied thereby, the program code comprising: a procedure for receiving queries to retrieve objects from a storage system of a non-relational database system; a procedure for identifying disk volumes of the storage system from records of the objects; a procedure for identifying logical and / or physical input / output connections to the disk volumes of the storage system, where each of the logical and / or physical input / output connections corresponds to a path from the non-relational database to the disk volumes of the storage system, where the logical and / A computer program product is provided, comprising programming instructions for a procedure to send a request to the storage system for retrieving an object, and each of the physical input / output connections includes one or more input / output queues tagged to a dissimilar central processing unit (CPU) core of the storage system; a procedure for obtaining the CPU core speed for the CPU core of the storage system; a procedure for selecting one of the identified logical and / or physical input / output connections to be used to send a request to the storage system for retrieving the object, based on the input / output access characteristics of the identified logical and / or physical input / output connections, the CPU core speed for the CPU core, and a determined level of urgency for retrieving the object; and a procedure for sending the request to the storage system through the selected logical or physical input / output connection.
[0005] In another embodiment, a system comprising: memory for storing computer programs for managing queries to a non-relational database; and a processor connected to the memory, wherein the processor includes steps of: receiving queries for retrieving objects from a storage system of the non-relational database system; identifying disk volumes of the storage system from records of the objects; identifying logical and / or physical input / output connections to the disk volumes of the storage system, where each of the logical and / or physical input / output connections corresponds to a path from the non-relational database to the disk volumes of the storage system, where each of the logical and / or physical input / output connections includes one or more input / output queues tagged to dissimilar central processing unit (CPU) cores of the storage system; obtaining the CPU core speed for the CPU cores of the storage system; selecting one of the identified logical and / or physical input / output connections to be used to send a request to the storage system for retrieving the objects, based on the input / output access characteristics of the identified logical and / or physical input / output connections, the CPU core speed for the CPU cores, and a determined level of urgency for retrieving the objects; and A system is provided which is configured to execute program instructions of the computer program, including a procedure for sending the request to the storage system through the selected logical or physical input / output connections.
[0006] The foregoing outlines, in a fairly general manner, the features and technical advantages of one or more embodiments of the present disclosure so that the detailed description of the present disclosure that follows may be better understood. Additional features and advantages of the present disclosure will be described hereafter and may form the subject matter of the claims of the present disclosure. [Brief explanation of the drawing]
[0007] One or more preferred embodiments of the invention are described here by reference to the following drawings, merely as examples.
[0008] [Figure 1] This figure shows a communication system that implements the principles of this disclosure according to an embodiment of this disclosure.
[0009] [Figure 2] This embodiment of the disclosure shows multiple input / output connections between a disk volume of a storage system and a non-relational database system.
[0010] [Figure 3] This is a diagram of a software component of a non-relational database system used to select one of the input / output connections between a non-relational database system and a storage system in order to send a request issued by the non-relational database system with an appropriate level of urgency to the storage system, according to embodiments of the present disclosure.
[0011] [Figure 4] This embodiment of the disclosure shows a hardware configuration of a non-relational database system representing a hardware environment for implementing this disclosure.
[0012] [Figure 5] This is a flowchart of a method for constructing patterns of input / output access characteristics through each path between a non-relational database system and its storage system, according to embodiments of the present disclosure.
[0013] [Figure 6] This flowchart illustrates a method for managing queries to a non-relational database system by utilizing multiple input / output connections to a storage system according to embodiments of the present disclosure, where the urgency of these queries is propagated to the storage system along one of the input / output connections. [Modes for carrying out the invention]
[0014] As described in the background technology section, a non-relational database is a database that is not "relational." Relational databases present data to the user as relationships (in a tabular format, i.e., as a collection of tables, each consisting of a set of rows and columns). However, non-relational databases provide mechanisms for storing and retrieving data that is modeled by means other than the tabular relationships used in relational databases. An example of such a non-relational database is a NoSQL ("Unstructured Query Language (SQL)") database.
[0015] NoSQL databases (e.g., MongoDB®) are increasingly being used in big data and real-time web applications. NoSQL systems are sometimes referred to as "Not only SQL" to emphasize their ability to support SQL-like query languages or to coexist with SQL databases in a polyglot persistence architecture.
[0016] Motivations for this approach include design simplicity, simple "horizontal" scaling of machines into clusters (which is a problem for relational databases), finer control over availability, and limitations of object-relational impedance mismatch. The data structures used by NoSQL databases (e.g., key-value pairs, wide columns, graphs, or documents) differ from those used by default in relational databases, resulting in some operations being faster in NoSQL. The specific suitability of a given NoSQL database depends on the problem that needs to be solved. In some cases, the data structures used by NoSQL databases are also seen as "more flexible" than relational database tables.
[0017] Instead of the typical table structure of relational databases, NoSQL databases house data within a single data structure, such as JavaScript® Object Notation (JSON), Extensible Markup Language (XML), or Binary JSON (BSON) documents. This non-relational database design does not require a schema, providing rapid scalability for managing large, typically unstructured datasets. Java® and all Java®-based trademarks and logos are trademarks or registered trademarks of Oracle and / or its affiliates.
[0018] NoSQL databases are also a type of distributed database, which means that information is copied and stored on various servers, such as storage systems, which may be remote or local. This ensures data availability and reliability. If some of the data goes offline, the rest of the database can continue to run.
[0019] Such a storage system may include a set of disk volumes. As used herein, “disk volume” refers to a part of a storage system. Such a set of disk volumes may correspond to raw disk volumes that store data in raw binary format.
[0020] Storage systems may be accessible from NoSQL databases via cloud computing environments, such as hybrid cloud computing environments. A hybrid cloud computing environment is a combination of public cloud and private environments, such as private cloud or on-premises resources, which remain separate entities but are combined to provide the benefits of multiple deployment models.
[0021] In a hybrid cloud implementation, an application can run on a physical hybrid cloud server (or a virtual machine on a server layer) that issues requests to read data from a storage system connected to a NoSQL database. The storage disks of the storage system can be connected to the NoSQL database via means of an interconnected storage area network (SAN) fabric. In such a case, the SAN fabric can include different paths from the NoSQL database and the disk volumes of the storage system. That is, there can be different paths to reach the same virtual disk in the storage system from the NoSQL database, where each path to each disk volume can operate with different characteristics such as speed, processing power, etc.
[0022] A transmission protocol such as NVMe (registered trademark) (Non-Volatile Memory Express) can be used to access non-volatile memory media such as non-volatile memory media in a storage system connected to a NoSQL database. As a result of using such technology, many input / output connections can be generated through a single physical connection, obtaining the benefit of parallelizing the input / output connections. As a result, the NoSQL disk volume can have multiple paths ("multi-path"), and each path has one or more input / output queues tagged to dissimilar CPU cores in the storage system. In such a scenario, there can be a clock speed difference between CPU cores that can affect the input / output performance when requested on a particular path.
[0023] Unfortunately, NVMe-based standards do not have a multipath policy. As a result, a NoSQL database cannot obtain information about multiple input / output connections generated for the same disk volume. Further, when an application such as an AI application issues a query that desires to urgently retrieve an object (e.g., a JSON object) from the storage system (requires immediate retrieval), due to the difference in operation between the NoSQL database and the storage system, there is currently no means to propagate such query urgency (e.g., retrieval urgency) to the storage system through one of these input / output connections.
[0024] Therefore, there is currently no means for a NoSQL database to utilize multiple input / output connections generated in a multi-connection input / output transmission protocol (e.g., NVMe) and to propagate query urgency to the storage system through one of these input / output connections.
[0025] Embodiments of the present disclosure provide means for a non-relational database (e.g., a NoSQL database) to utilize multiple input / output connections generated in a multi-connection input / output transmission protocol (e.g., NVMe), where query urgency is propagated to the storage system along one of these input / output connections.
[0026] In some embodiments of this disclosure, the disclosure includes computer implementations, systems, and computer program products for managing queries against non-relational databases. In one embodiment of the disclosure, a query for retrieving objects from a storage system of a non-relational database system (e.g., a NoSQL database system) is received from an application such as an AI application, where the storage system is connected to the non-relational database system via a hybrid cloud environment. In one embodiment, the storage system is an object-based storage system, where data is stored in the storage system in the form of “objects” on a flat address space based on its content and other attributes. Disk volumes of the storage system are then identified from a record of the requested object, such as an identifier (e.g., a label) associated with such disk volumes. Once the disk volumes are identified, logical and / or physical input / output connections to the identified disk volumes, tagged to dissimilar CPU cores, are identified, for example, through a data structure that stores a list of logical and / or physical input / output connections connected to various disk volumes of the storage system. In one embodiment, each of the logical and / or physical input / output connections includes one or more input / output queues tagged to dissimilar central processing unit (CPU) cores of the storage system. After the CPU core speed (e.g., clock speed) for the CPU core of the storage system is obtained, one of the identified logical and / or physical input / output connections connected to an identified disk volume is selected based on the input / output access characteristics of the identified logical and / or physical input / output connection, the CPU core speed for the CPU core, and a determined level of urgency for retrieving the object. In one embodiment, such input / output access characteristics (e.g., input / output latency, bandwidth, response time, packet drop, congestion, etc.) and the CPU core speed for the CPU core are obtained from a data structure (e.g., a table).In one embodiment, the level of urgency for object retrieval is determined based on the object category of the object being requested for retrieval and / or the type of application requesting the object retrieval. Based on the determined level of urgency for object retrieval (e.g., critical), the required input / output access characteristics for the input / output connection and the required CPU core speed to be used to send the request to the storage system to retrieve the object are determined via a data structure enumerating such requirements associated with various levels of urgency. After identifying one of the input / output connections from identified input / output connections tagged to the CPU core that satisfies both, or most closely satisfies, such requirements, the non-relational database system sends the request (e.g., a read request) to the storage system through the selected input / output connection in a hybrid cloud environment. In this scheme, the non-relational database system can utilize multiple input / output connections established by a multi-connection input / output transmission protocol (e.g., NVMe) along which the urgency of the query is propagated to the storage system.
[0027] The following description includes many specific details to provide a deeper understanding of the disclosure. However, it will be apparent to those skilled in the art that the disclosure can be implemented without such specific details. In other cases, well-known circuits are shown in block diagram form to avoid obscuring the disclosure with unnecessary details. In most cases, details regarding timing considerations, etc., are omitted unless such details are necessary for a complete understanding of the disclosure and are within the scope of the skills of those skilled in the art.
[0028] Referring here to the drawings in detail, Figure 1 shows an embodiment of the present disclosure of a communication system 100 that implements the principles of the present disclosure. The communication system 100 includes applications such as an artificial intelligence (AI) application 101 that send queries to a non-relational database system 102, such as a NoSQL database system, in order to retrieve objects from a storage system 103 of the non-relational database system 102.
[0029] In one embodiment, the AI application 101 is connected to a non-relational database system 102 via a hybrid cloud environment (not shown in Figure 1). In such an embodiment, the AI application 101 runs on a physical hybrid cloud server. In one embodiment, the AI application 101 runs on a virtual machine above the server layer. As used herein, “artificial intelligence (AI)” refers to intelligence demonstrated by a machine. As used herein, “AI application” refers to an AI application involving applications of AI in various forms such as e-commerce, navigation, robotics, human resources, healthcare, agriculture, gaming, automotive, social media, and marketing. In one embodiment, the AI application 101 stores metadata and its training data in a storage system 103 of the non-relational database system 102. The following describes the use of the AI application in relation to this disclosure, but note that other types of applications may be used by this disclosure to send queries to retrieve objects from the storage system of a non-relational database.
[0030] The non-relational database system 102 provides a mechanism for storing and retrieving data from a storage system 103 and the like, modeled by means other than the tabular relationships used in relational databases. An example of such a non-relational database is a NoSQL ("Unstructured Query Language (SQL)") database.
[0031] In one embodiment, the non-relational database system 102 stores data within a single data structure, such as a JSON, XML, or BSON document. Such a non-relational database system may be referred to herein as a “non-relational document database” that stores “documents.” In one embodiment, such a document encapsulates and encodes data (or information) in a standard format or encoding. Encodings include XML, YAML, and JSON, and binary formats such as BSON. Documents are addressed in the database via a unique key that represents the document.
[0032] In one embodiment, a non-relational database system 102 is connected to its storage system 103 via a hybrid cloud environment 104. As used herein, the hybrid cloud environment 104 refers to a combination of public cloud and private environments, such as a private cloud or on-premises resources, which remain separate entities but are combined together.
[0033] In one embodiment, the storage system 103 is an object-based storage system, where data is stored in the storage system 103 in the form of "objects" on a flat address space, based on its content and other attributes, rather than its file name and location. In one embodiment, each object stored in the storage system 103 is identified by a unique identifier called an "object ID." The object ID enables easy access to the object without the need to specify its storage location.
[0034] In one embodiment, the storage system 103 includes a set of disk volumes 105A to 105C (identified as "disk volume A," "disk volume B," and "disk volume C," respectively). The disk volumes may be referred to collectively or individually as a plurality of disk volumes 105 or disk volume 105.
[0035] As used herein, “disk volume 105” refers to a part of the storage system 103. A set of such disk volumes 105 may correspond to raw disk volumes that store data in raw binary format. Such data may include metadata and training data stored by the AI system.
[0036] In one embodiment, a storage disk 105 of a storage system 103 is connected to a non-relational database system 102 via a hybrid cloud environment 104 through multiple paths 106. The paths 106 may be referred to collectively or individually as multiple paths 106 or path 106. In one embodiment, as described below in relation to Figure 2, there are different paths 106 to reach the same virtual disk 105 in the storage system 103, where each path 106 to each disk volume 105 may operate with different characteristics such as speed, processing power, etc. In one embodiment, such paths 106 may be logical and / or physical input / output connections. As used herein, the notation (" / ") in the phrase "input / output" connection means "or". Thus, as used herein, the phrase "input / output connection" means either an input connection or an output connection.
[0037] In one embodiment, a multi-connection input / output transmission protocol such as NVMe® (Non-Volatile Memory Express) is used to allow a non-relational database system 102 to access a virtual disk 105 of a storage system 103. In such a protocol, there are multiple input / output connections generated over a single physical connection in order to take advantage of the benefits of parallelizing the input / output connections. Such input / output connections are represented by path 106 in Figure 1. Note that the terms "input / output connection" and "path" are used interchangeably and have the same meaning in this specification.
[0038] In one embodiment, as shown in Figure 2, each path 106 may have one or more input / output queues tagged to dissimilar central processing unit (CPU) cores in the storage system 103.
[0039] Referring to Figure 2, Figure 2 shows a plurality of input / output connections between the disk volume 105 of the storage system 103 and the non-relational database system 102 according to an embodiment of the present disclosure.
[0040] As shown in Figure 2, in relation to Figure 1, paths 106A-106C, representing the input / output connections of path 106 in Figure 1, are connected between the non-relational database system 102 and the disk volume 105A of the storage system 103. As described above, each of these paths 106 (paths 106A-106C) includes one or more input / output queues tagged to different CPU cores in the storage system 103. For example, path 106A includes input / output queues 201A (identified as "I / O queue 1" in Figure 2) and input / output queues 201B (identified as "I / O queue 2" in Figure 2) tagged to CPU core 202A (identified as "CPU core 1" in Figure 2) of the storage system 103. By tagging such path 106A to CPU core 202A, requests transmitted over path 106A are processed by the associated or "tagged" CPU core 202A. Therefore, as used herein, the term "tagged" refers to identifying a specific CPU core (e.g., CPU core 202A) that processes a request transmitted over an associated input / output connection 106 (e.g., input / output connection 106A). Note that the notation (" / ") in the phrase "input / output" as used herein means "or". Therefore, as used herein, the phrase "input / output" means "input or output".
[0041] As further shown in Figure 2, path 106B includes an input / output queue 201C (identified as "I / O queue 3" in Figure 2) tagged to CPU core 202B (identified as "CPU core 2" in Figure 2) of storage system 103. Path 106C includes an input / output queue 201D (identified as "I / O queue 4" in Figure 2) tagged to CPU core 202C (identified as "CPU core 3" in Figure 2).
[0042] As described above, in one embodiment, paths 106 such as paths 106A to 106C may be logical and / or physical input / output connections. Input / output queues 201A to 201D may be referred to collectively or individually as multiple input / output queues 201 or input / output queues 201, respectively. CPU cores 202A to 202C may be referred to collectively or individually as multiple CPU cores 202 or CPU cores 202, respectively.
[0043] As used herein, the input / output queue 201 refers to an abstract data type that holds input / output requests. For example, the input / output queue 201 may temporarily store requests from a non-relational database system 102 in order to retrieve objects requested by the AI application 101 from the storage system 103 (e.g., disk volume 105A).
[0044] As used herein, CPU core 202 refers to an individual processing unit within the central processing unit of a storage system.
[0045] Figure 2 shows four input / output queues 201, but the disclosure is not limited to such embodiments. Each path 106 may include any number of input / output queues 201, and there may be any number of paths 106 between the non-relational database system 102 and the disk volume 105 of the storage system 103. Furthermore, Figure 2 shows three CPU cores 202 in the storage system 103, but the disclosure is not limited to such embodiments. The storage system 103 may include any number of CPU cores 202.
[0046] Returning to Figure 1, and in conjunction with Figure 2, in one embodiment, the non-relational database system 102 is configured to select one of these paths 106 as the I / O connection to send a request (a response issued by the non-relational database system 102 when it receives a query from the AI application 101) to retrieve an object from the storage system 103. In one embodiment, such a selection is based on the input / output access characteristics of the path 106, the core speed (clock speed) of the CPU core 202, and the type of multilevel urgency.
[0047] In one embodiment, the input / output access characteristics are determined using machine learning based on the pattern of input / output access characteristics through path 106, as will be described in more detail below.
[0048] As used herein, “multilevel urgency type” refers to one of the levels of urgency of a request (e.g., a read request) issued by the non-relational database system 102. For example, in one embodiment, the levels of urgency of a request (e.g., a read request) issued by the non-relational database system 102 include urgent, critical, and supercritical, where the critical category is assigned to requests that are more important to process than requests assigned to the urgent category, and the supercritical category is assigned to requests that are more important to process than requests assigned to the critical category. In one embodiment, such a multilevel urgency type is determined based on obtaining urgency information about the query (requesting to retrieve an object from the storage system 103), such as the object category of the object to be retrieved and the type of application requesting to retrieve the object.
[0049] A more detailed description of these and other functions of the non-relational database system 102 is provided below. Furthermore, a description of the software components of the non-relational database system 102 is provided below in relation to Figure 3, and a description of the hardware configuration of the non-relational database system 102 is provided below in relation to Figure 4.
[0050] System 100 is not limited to any one specific network architecture. System 100 may include any number of AI applications 101, a non-relational database system 102, a storage system 103, a hybrid cloud environment 104, disk volumes 105, and paths 106.
[0051] A discussion of software components used by the non-relational database system 102 to utilize multiple input / output connections 106 is provided below in relation to Figure 3, where query urgency (the urgency of queries issued by the AI application 101) is propagated to the storage system 103 along one of these input / output connections 106. As will be described in more detail below, such urgency is propagated to the storage system 103 based on the assignment of an appropriate level of urgency to requests issued to the storage system 103 by the non-relational database system 102.
[0052] Figure 3 shows a software component of the non-relational database system 102 used to select one of the input / output connections 106 between the non-relational database system 102 and the storage system 103 in order to send a request issued by the non-relational database system 102 to the storage system 103 with an appropriate level of urgency, according to an embodiment of the present disclosure.
[0053] As shown in Figure 3, in conjunction with Figures 1-2, the non-relational database system 102 includes a monitor engine 301 configured to collect input / output statistics from each of the paths 106 between the non-relational database system 102 and the storage system 103 in order to evaluate the input / output workload and latency of each path 106. As used herein, “input / output workload” refers to the amount of input collected by the input / output connection 106 and the amount of output generated by the input / output connection 106 over a given time period. As used herein, “latency” refers to time delay. Input / output statistics include, but are not limited to, input / output latency, bandwidth, response time, packet drop, congestion, etc.
[0054] In one embodiment, the monitor engine 301 evaluates the input / output workload by identifying input / output access patterns on the input / output connection 106, such as the number of read and write requests. Examples of software tools used by the monitor engine 301 to evaluate the input / output workload by identifying input / output access patterns on the input / output connection 106 include, but are not limited to, Iometer and Condusiv® I / O Assessment Tool.
[0055] In one embodiment, the monitor engine 301 evaluates the input / output latency of the input / output connection 106 by measuring the time it takes for a request to travel from one point to another and for the response to be sent back to the source (e.g., a non-relational database system 102). Such a measurement is referred to as “round-trip time”. In another embodiment, the monitor engine 301 records the time it takes for a request to travel from the point it leaves to its destination. Such a measurement is referred to as “time to first byte”. In such an embodiment, data acquisition software is installed at the destination point (e.g., a storage system 103).
[0056] Examples of software tools used by the monitor engine 301 to collect input / output statistics, such as input / output latency, from each of the paths 106 between the non-relational database system 102 and the storage system 103, and to evaluate the input / output workload and latency of each path 106, include, but are not limited to, SolarWinds® Network Performance Monitor, SolarWinds® NetFlow Traffic Analyzer, Angry IP Scanner, SolarWinds® Engineer's Toolset®, Paessler® PRTG Network Monitor, NetScanTools®, and Amazon® CloudWatch®.
[0057] In one embodiment, the monitor engine 301 measures the bandwidth of the input / output connection 106 (the maximum rate of data transfer across a given path).
[0058] Examples of software tools used by the monitor engine 301 to measure the bandwidth of the input / output connection 106 include, but are not limited to, SolarWinds® Network Performance Monitor, SolarWinds® NetFlow Traffic Analyzer, Paessler® PRTG Network Monitor, and N-able® Remote Monitoring & Management.
[0059] In one embodiment, the monitor engine 301 measures the response time of an input / output connection 106. As used herein, “response time” refers to the length of time required to complete an input / output operation. Examples of software tools used by the monitor engine 301 to measure the response time of an input / output connection 106 include, but are not limited to, SolarWinds® Engineer's Toolset®, Amazon® CloudWatch®, Dynatrace®, and ManageEngine® Applications Manager.
[0060] In one embodiment, the monitor engine 301 measures packet drop across the input / output connection 106. As used herein, “packet drop” refers to delayed or misplaced packets. Examples of software tools used by the monitor engine 301 to measure packet drop across the input / output connection 106 include, but are not limited to, SolarWinds® Network Quality Manager, SolarWinds® Network Performance Monitor, Paessler® PRTG Network Monitor, and Packet Loss Test®.
[0061] In one embodiment, the monitor engine 301 measures congestion on the input / output connection 106. As used herein, “congestion” refers to a reduction in quality of service that occurs when a connection is carrying more data than it can handle. Examples of software tools used by the monitor engine 301 to measure congestion across the input / output connection 106 include, but are not limited to, SolarWinds® NetFlow Traffic Analyzer, Wireshark®, Cacti®, LogicMonitor®, Datadog®, and Dynatrace®.
[0062] The non-relational database system 102 further includes a machine learning engine 302 configured to construct patterns of input / output access characteristics for each path 106 using input / output statistics collected from the monitor engine 301. In one embodiment, the machine learning engine 302 utilizes a machine learning algorithm to construct patterns of input / output access characteristics through each path 106 using input / output statistics collected from the monitor engine 301.
[0063] As used herein, the “pattern” of input / output access characteristics through path 106 refers to input / output access statistics typically shown by path 106, based on the input / output workload being served by path 106, a specific time, etc. Such patterns are based on input / output statistics collected from monitor engine 301 (used to evaluate the input / output workload and latency of each path 106), which are used as “training data” to train a mathematical model to predict the input / output access characteristics of path 106, based on the input / output workload being processed, etc. In one embodiment, such a pattern of input / output characteristics corresponds to values corresponding to different fields of the input / output access characteristics. For example, in a pattern of 0.3 milliseconds, 15 kHz, 5 milliseconds, 1, and 0, 0.3 milliseconds corresponds to input / output latency, 15 kHz corresponds to bandwidth, 5 milliseconds corresponds to response time, 1 corresponds to the number of packet drops over a one-hour period, and 0 corresponds to the absence of congestion.
[0064] In one embodiment, the machine learning engine 302 uses a machine learning algorithm (e.g., supervised learning) to build a mathematical model based on sample data consisting of input / output statistics collected from the monitor engine 301 (used to evaluate the input / output workload and latency of each path 106). Such a dataset is referred to herein as “training data,” which is used by the machine learning algorithm to predict or determine the input / output access characteristics of path 106 without being explicitly programmed to perform a task. In one embodiment, the training data consists of input / output statistics based on the input / output workload being processed, the time, the type of query being processed, etc. The algorithm iteratively makes predictions on the training data for the input / output access characteristics across each path 106. Examples of such supervised learning algorithms include nearest neighbors, naive Bayes, decision trees, linear regression, support vector machines, and neural networks.
[0065] In one embodiment, the mathematical model (machine learning model) corresponds to a piecewise model trained to predict input / output access characteristics through each path 106.
[0066] The non-relational database system 102 further includes a priority identification module 303 configured to determine the type of multi-level urgency (type of input / output level priority) indicated by a query received by the non-relational database system 102 from the AI application 101 to retrieve an object from the storage system 103. As used herein, “object” refers to data stored in the storage system 103, where the data in the form of an “object” is stored in a flat address space based on its content and other attributes, rather than by file name and location.
[0067] The level of urgency in such a received query is reflected in the urgency of the request issued by the non-relational database system 102 to read the requested object from the storage system 103.
[0068] As used herein, “multilevel urgency type” refers to one level of urgency for a request (e.g., a read request) issued by the non-relational database system 102 to read a requested object from the storage system 103. For example, in one embodiment, the levels of urgency for a request (e.g., a read request) issued by the non-relational database system 102 include urgent, critical, and supercritical, where the critical category is assigned to requests that are more important to process than requests assigned to the urgent category, and the supercritical category is assigned to requests that are more important to process than requests assigned to the critical category. In one embodiment, such a multilevel urgency type is determined based on obtaining urgency information about the query (requesting to retrieve an object from the storage system 103), such as the object category of the object to be retrieved and the type of application requesting to retrieve the object.
[0069] In one embodiment, the priority identification module 303 obtains urgency information regarding queries received by the non-relational database system 102. In one embodiment, such urgency information includes the object category of the object being requested to be retrieved. For example, in one embodiment, the priority identification module 303 may analyze the query to determine the type of object to be retrieved, such as the type of data (e.g., metadata, training data, analytical data, visual data, text data, numerical data, etc.). For example, in one embodiment, the query may include metadata describing the type of object (data) being requested. Such a description is then used to identify the "object category" from a data structure (e.g., a table) that stores a list of object types and their associated object categories. In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory, disk unit) of the non-relational database system 102. In one embodiment, the priority identification module 303 uses natural language processing to identify matching types of objects in the data structure and locate their associated object categories.
[0070] Upon identifying an object category, in one embodiment, the priority identification module 303 identifies the type of multilevel urgency in a request issued by the non-relational database system 102 (a request to retrieve an object) based on the identification of the object category in a data structure (e.g., a table) that stores a list of object categories (e.g., metadata) and their associated multilevel urgency (e.g., supercritical). For example, upon identifying an object category in such a data structure, the associated multilevel urgency in a request issued by the non-relational database system 102 can then be retrieved. In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory, disk unit) of the non-relational database system 102. In one embodiment, the priority identification module 303 uses natural language processing to identify matching object categories in the data structure and determine their associated multilevel urgency in a request issued by the non-relational database system 102.
[0071] In one embodiment, the priority identification module 303 identifies the type of multilevel urgency in a request (a request to retrieve an object) issued by the non-relational database system 102, based on the identification of the type of AI application 101 issuing the query. For example, the AI application 101 may involve applications of AI in various forms, such as e-commerce, navigation, robotics, human resources, healthcare, agriculture, gaming, automotive, social media, and marketing. In one embodiment, the type of AI application (e.g., gaming) is determined by its identifier (e.g., name). In one embodiment, the type of AI application 101 is used to identify the type of multilevel urgency in a request (a request to retrieve an object) issued by the non-relational database system 102, using a data structure (e.g., a table) that stores a list of types of AI applications 101 (e.g., gaming) and their associated multilevel urgency (e.g., critical). For example, once the type of AI application 101 is identified in such a data structure, the associated multilevel urgency in a request issued by the non-relational database system 102 can then be retrieved. In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory, disk unit) of the non-relational database system 102. In one embodiment, the priority identification module 303 uses natural language processing to identify matching types of AI applications 101 in the data structure and to determine their associated multi-level urgency in requests issued by the non-relational database system 102.
[0072] The non-relational database system 102 further includes a disk volume identification module 304 configured to identify disk volumes 105 from records of requested objects (e.g., object dictionary records), such as identifiers (e.g., labels) associated with such disk volumes 105. As used herein, “requested object” refers to an object that is requested to be retrieved by the AI application 101. In one embodiment, a data structure (e.g., a table) stores records associated with such objects that indicate their storage location within the storage system 103, such as a particular disk volume 105 in the storage system 103. Such records are referred to herein as “object dictionary records.” In one embodiment, such a data structure is stored in a storage device (e.g., memory, disk unit) of the non-relational database system 102.
[0073] The non-relational database system 102 further includes a core speed identification module 305 configured to identify the CPU core speed of the CPU core 202 of the storage system 103 at a specific point in time, such as when a path 106 (e.g., a logical or physical input / output connection) is selected to send a request (e.g., a read request) from the non-relational database system 102 to the storage system 103. As used herein, “CPU core speed” refers to the clock speed (operating speed) of the CPU core 202. In one embodiment, the CPU core speed is obtained by the core speed identification module 305 at the time of initializing the input / output queue 201. Examples of software tools used by the core speed identification module 305 to measure the CPU core speed of the CPU core 202 include, but are not limited to, CPUID HWMonitor, SolarWinds® Server & Application Monitor, Paessler® PRTG Network Monitor, and SysGauge.
[0074] Furthermore, the non-relational database system 102 includes path selection logic 306 configured to select a path 106 (e.g., a logical or physical input / output connection) used to send requests (e.g., read requests) from the non-relational database system 102 to the storage system 103, where query urgency is propagated to the storage system 103 along such selected path 106.
[0075] In one embodiment, the path selection logic 306 is configured to identify a logical or physical connection 106 extending from a non-relational database system 102 to an identified disk volume 105 of a storage system 103 (identified by a disk volume identification module 304).
[0076] In one embodiment, the path selection logic 306 identifies logical and / or physical connections 106 extending from the non-relational database system 102 to an identified disk volume 105 of the storage system 103, based on identifying such connections 106 in a data structure (e.g., a table) that stores a list of logical and / or physical connections 106 connected to a particular disk volume 105 of the storage system 103. In one embodiment, such disk volume 105 is identified by an identifier (e.g., a label). As a result, after obtaining an identifier for the disk volume 105 identified by the disk volume identification module 304, the path selection logic 306 can identify logical and / or physical connections 106 connected to such disk volume 105 based on the determination of the identified disk volume 105 in the data structure described above. In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory, disk unit) of the non-relational database system 102. In one embodiment, the path selection logic 306 uses natural language processing to identify matching disk volume identifiers (e.g., labels) in a data structure to determine the logical and / or physical connection 106 to which such disk volume 105 is connected.
[0077] In one embodiment, the path selection logic 306 is configured to select a path 106 (one of the logical and / or physical connections identified as being connected to an identified disk volume 105 of the storage system 103) based on a pattern of input / output access characteristics, the CPU core speed of the CPU core 202, and a determined level of urgency for object retrieval. As described above, the pattern of input / output access characteristics is generated by the machine learning engine 302. Furthermore, as described above, the CPU core speed of the CPU core 202 is determined by the core speed identification module 305. In addition, as described above, the determined level of urgency for object retrieval is determined by the priority identification module 303. Based on such information, the path selection logic 306 selects a path 106 from the non-relational database system 102 to the identified disk volume 105 with appropriate input / output access characteristics that meet the requirements of the level of urgency for object retrieval.
[0078] In one embodiment, a data structure (e.g., a table) stores a mapping of urgency levels (multilevel urgency types) to required patterns of input / output access characteristics that need to be maintained by a selected input / output connection 106, such as input / output latency range, bandwidth, response time, number of packet drops, and presence of congestion. For example, for a “critical” type of urgency, the following patterns of input / output access characteristics (in terms of values) are mapped to such urgency levels: 0.2–1.5 milliseconds (acceptable input / output latency range); 15–20 kHz (acceptable bandwidth range); 5–10 milliseconds (acceptable response time range); 1 (acceptable number of packet drops over a one-hour period) and 0 (no congestion). In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory, disk unit) of a non-relational database system 102.
[0079] Furthermore, in one embodiment, a data structure (e.g., a table) stores a mapping of urgency levels (multilevel urgency types) to ranges of CPU core speeds for CPU core 202. For example, for a "critical" type of urgency, the range of CPU core speeds for CPU core 202 is 3.5 GHz to 4.0 GHz. In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory, disk unit) of a non-relational database system 102.
[0080] Based on the level of urgency (multilevel urgency type) for object retrieval determined by the priority identification module 303, the path selection logic 306 identifies patterns of input / output access characteristics and further identifies a range of CPU core speeds for the CPU cores 202 that match such levels of urgency in the data structures described above.
[0081] Subsequently, the path selection logic 306 identifies a path 106 (e.g., a logical or physical connection) from identified logical and / or physical connections connected to identified disk volume 105 that has input / output access characteristics that match or most closely match (obtained from the machine learning engine 302) the input / output access characteristics obtained from the data structure described above, where such identified path is tagged to a CPU core 202 with a core speed (a core speed obtained from the core speed identification module 305) that satisfies a range of CPU core speeds obtained from the data structure described above. For example, path 106B (one of the paths from identified logical and / or physical connections connected to identified disk volume 105) may represent a pattern of input / output access characteristics (obtained from the machine learning engine 302) that satisfies input / output access requirements for a specified level of urgency (e.g., critical), obtained from the data structure described above. Furthermore, such a path (path 106B) may be tagged to a CPU core 202 (e.g., CPU core 202B) with a core speed (obtained from the core speed identification module 305) that meets the required range of CPU core speeds for a specified level of urgency (e.g., critical), obtained from the data structure described above. As a result, in such an example, path 106B is selected by the path selection logic 306 to be used to send a request (e.g., a read request) from the non-relational database system 102 to the storage system 103, where the urgency of the query is propagated to the storage system 103 along such selected path 106.
[0082] In one embodiment, in a scenario where no path 106 is identified that satisfies the input / output access requirements for a specified level of urgency (e.g., critical), the path selection logic 306 selects a path tagged with a CPU core 202 that most closely satisfies the input / output access requirements for the specified level of urgency and satisfies or closely satisfies the required range of CPU core speed for the specified level of urgency (e.g., critical).
[0083] Further explanations of these and other features are provided below in connection with the discussion of methods for managing queries against non-relational databases.
[0084] Before discussing methods for managing queries against non-relational databases, a description of the hardware configuration of the non-relational database system 102 (Figure 1) is provided below in relation to Figure 4.
[0085] Referring now to Figure 4, Figure 4 shows an embodiment of the hardware configuration of a non-relational database 102 (Figure 1) representing a hardware environment for implementing the present disclosure.
[0086] The non-relational database system 102 has a processor 401 connected to various other components by a system bus 402. An operating system 403 runs on the processor 401 and provides control over the various components shown in Figure 4, and makes their functions cooperate. An application 404 according to the principles of this disclosure runs with the operating system 403 and provides calls to the operating system 403, where the calls implement various functions or services to be performed by the application 404. The application 404 may include, for example, a monitor engine 301 (Figure 3), a machine learning engine 302 (Figure 3), a priority identification module 303 (Figure 3), a disk volume identification module 304 (Figure 3), a core speed identification module 305 (Figure 3), and a path selection logic 306 (Figure 3). Furthermore, the application 404 may include, for example, a program for managing queries against the non-relational database system, which will be further described below in relation to Figures 5-6.
[0087] Referring again to Figure 4, a read-only memory (ROM) 405 is connected to the system bus 402 and includes a basic input / output system (BIOS) that controls certain basic functions of the non-relational database system 102. Random access memory ("RAM") 406 and a disk adapter 407 are also connected to the system bus 402. Note that software components, including the operating system 403 and applications 404, may be loaded into RAM 406, which may be the main memory of the non-relational database system 102, for execution. The disk adapter 407 may be an integrated drive electronics ("IDE") adapter that communicates with a disk unit 408, for example, a disk drive. Note that a program for managing queries against the non-relational database system, as further described below in relation to Figures 5-6, may reside in the disk unit 408 or in applications 404.
[0088] The non-relational database system 102 may further include a communication adapter 409 connected to the bus 402. The communication adapter 409 interconnects the bus 402 with an external network (e.g., a hybrid cloud environment 104) to communicate with other devices such as the storage system 103 (Figure 1).
[0089] In one embodiment, the application 404 of the non-relational database system 102 includes software components of a monitor engine 301, a machine learning engine 302, a priority identification module 303, a disk volume identification module 304, a core speed identification module 305, and a path selection logic 306. In one embodiment, such components may be implemented in hardware, in which case such hardware components would be connected to the bus 402. The functions performed by such components described above are not comprehensive computer functions. As a result, the non-relational database system 102 is a specific machine that results in the implementation of specific non-general-purpose computer functions.
[0090] In one embodiment, the functionality of such software components of a non-relational database system 102, including functions for managing queries (e.g., a monitor engine 301, a machine learning engine 302, a priority identification module 303, a disk volume identification module 304, a core speed identification module 305, and a path selection logic 306), can be embodied in an application-specific integrated circuit.
[0091] The present invention may be a system, method, and / or computer program product in an integration of any possible level of technical detail. The computer program product may include one or more computer-readable storage media having computer-readable program instructions for causing a processor to execute an aspect of the present invention.
[0092] A computer-readable storage medium can be a tangible device capable of holding and storing instructions used by an instruction execution device. A computer-readable storage medium may be, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any preferred combination thereof. A non-exclusive list of more specific examples of computer-readable storage media includes, namely, portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital multipurpose disks (DVDs), memory sticks, floppy disks, mechanically encoded devices such as punch cards or grooved raised structures on which instructions are recorded, and any preferred combination thereof. As used herein, a computer-readable storage medium should not be construed as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a pulse of light passing through an optical fiber cable), or a transient signal itself, such as an electrical signal transmitted through a wire.
[0093] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device, or to an external computer or external storage device via a network such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface within each computing / processing device receives computer-readable program instructions from the network and transfers them for storage in a computer-readable storage medium within each computing / processing device.
[0094] The computer-readable program instructions that perform the operation of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, integrated circuit configuration data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk® or C++, and procedural programming languages such as the C programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN), or this connection may be made to an external computer (for example, through the Internet using an Internet service provider). In some embodiments, for example, an electronic circuit including a programmable logic circuit, a field-programmable gate array (FPGA), or a programmable logic array (PLA) may be personalized by executing computer-readable program instructions by utilizing state information of computer-readable program instructions in order to perform an aspect of the present invention.
[0095] Aspects of the present invention are described herein with reference to flowcharts and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the present invention. It will be understood that each block in the flowcharts and / or block diagrams, and combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer-readable program instructions.
[0096] These computer-readable program instructions may be provided to a computer processor or other programmable data processing device to generate a machine that creates means for instructions executed via the processor of the computer or other programmable data processing device to implement functions / operations specified in one or more blocks of a flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can instruct a computer, programmable data processing device, and / or other device to function in a particular manner, such that the storage medium containing the instructions has a product containing instructions that implements the modes of functions / operations specified in one or more blocks of a flowchart and / or block diagram.
[0097] Furthermore, computer-readable program instructions may be loaded into a computer, other programmable data processing device, or other device to execute a series of operational steps on the computer, other programmable device, or other device, thereby generating a computer implementation process in which the instructions executed on the computer, other programmable device, or other device implement the functions / operations specified in one or more blocks of a flowchart and / or block diagram.
[0098] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions comprising one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions described in a block may be performed in an order different from the order shown in the drawings. For example, two blocks shown consecutively may actually be implemented as a single step, executed simultaneously, substantially simultaneously, partially or entirely, with overlapping timelines, or blocks may be executed in reverse order depending on the functions involved. It should also be noted that each block in a block diagram and / or flowchart, and combinations of blocks in a block diagram and / or flowchart, may be implemented by a special-purpose hardware-based system that performs a specified function or operation, or a combination of special-purpose hardware and computer instructions.
[0099] As described above, transmission protocols such as NVMe® (Non-Volatile Memory Express) can be used to access non-volatile storage media, such as non-volatile storage media, in storage systems connected to non-relational databases, such as NoSQL databases. As a result of using such technology, many input / output connections may be generated through a single physical connection, gaining the benefit of parallelizing input / output connections. Consequently, a NoSQL disk volume may have multiple paths ("multipath"), each path having one or more input / output queues tagged to dissimilar CPU cores in the storage system. In such a scenario, there may be clock speed differences between CPU cores that can affect input / output performance when requested on a particular path. Unfortunately, NVMe-based standards do not have a multipath policy. As a result, NoSQL databases cannot retrieve information about multiple input / output connections generated for the same disk volume. Furthermore, if an application such as an AI application issues a query that requires immediate retrieval of an object (e.g., a JSON object) from the storage system, there is currently no way to propagate such query urgency (e.g., retrieval urgency) to the storage system via one of these input / output connections, due to differences in operation between the NoSQL database and the storage system. Therefore, there is currently no way for a NoSQL database to utilize the multiple input / output connections generated in a multi-connection input / output transmission protocol (e.g., NVMe) and propagate query urgency to the storage system via one of these input / output connections.
[0100] As described below in relation to Figures 5 and 6, embodiments of the present disclosure provide means for a non-relational database (e.g., a NoSQL database) to utilize multiple input / output connections generated in a multi-connection input / output transmission protocol (e.g., NVMe), where query urgency is propagated to the storage system along one of these input / output connections. Figure 5 is a flowchart of a method for constructing patterns of input / output access characteristics through each path between a non-relational database system and its storage system. Figure 6 is a flowchart of a method for managing queries to a non-relational database system by utilizing multiple input / output connections to the storage system, where query urgency is propagated to the storage system along one of these input / output connections.
[0101] As described above, Figure 5 is a flowchart of Method 500 for constructing patterns of input / output access characteristics through each path between a non-relational database system 102 (Figures 1 and 2) and its storage system 103 (Figures 1 and 2) according to embodiments of the present disclosure.
[0102] Referring here to Figures 1-4 and Figure 5, in operation 501, the monitoring engine 301 of the non-relational database system 102 collects input / output statistics from each of the available paths 106 extending from the non-relational database system 102 to the virtual disk 105 of the storage system 103 via the hybrid cloud environment 104, and evaluates the input / output workload and latency of each path 106.
[0103] As described above, as used herein, “input / output workload” refers to the amount of input collected by the input / output connection 106 over a specific time period, and the amount of output generated by the input / output connection 106. As used herein, “latency” refers to time delay. Input / output statistics include, but are not limited to, input / output latency, bandwidth, response time, packet drop, congestion, etc.
[0104] In one embodiment, the monitor engine 301 evaluates the input / output workload by identifying input / output access patterns on the input / output connection 106, such as the number of read and write requests. Examples of software tools used by the monitor engine 301 to evaluate the input / output workload by identifying input / output access patterns on the input / output connection 106 include, but are not limited to, Iometer and Condusiv® I / O Assessment Tool.
[0105] In one embodiment, the monitor engine 301 evaluates the input / output latency of the input / output connection 106 by measuring the time it takes for a request to travel from one point to another and for the response to be sent back to the source (e.g., a non-relational database system 102). Such a measurement is referred to as “round-trip time”. In another embodiment, the monitor engine 301 records the time it takes for a request to travel from the point it leaves to its destination. Such a measurement is referred to as “time to first byte”. In such an embodiment, data acquisition software is installed at the destination point (e.g., a storage system 103).
[0106] Examples of software tools used by the monitor engine 301 to collect input / output statistics, such as input / output latency, from each of the paths 106 between the non-relational database system 102 and the storage system 103, and to evaluate the input / output workload and latency of each path 106, include, but are not limited to, SolarWinds® Network Performance Monitor, SolarWinds® NetFlow Traffic Analyzer, Angry IP Scanner, SolarWinds® Engineer's Toolset®, Paessler® PRTG Network Monitor, NetScanTools®, and Amazon® CloudWatch®.
[0107] In one embodiment, the monitor engine 301 measures the bandwidth of the input / output connection 106 (the maximum rate of data transfer across a given path).
[0108] Examples of software tools used by the monitor engine 301 to measure the bandwidth of the input / output connection 106 include, but are not limited to, SolarWinds® Network Performance Monitor, SolarWinds® NetFlow Traffic Analyzer, Paessler® PRTG Network Monitor, and N-able® Remote Monitoring & Management.
[0109] In one embodiment, the monitor engine 301 measures the response time of an input / output connection 106. As used herein, “response time” refers to the length of time required to complete an input / output operation. Examples of software tools used by the monitor engine 301 to measure the response time of an input / output connection 106 include, but are not limited to, SolarWinds® Engineer's Toolset®, Amazon® CloudWatch®, Dynatrace®, and ManageEngine® Applications Manager.
[0110] In one embodiment, the monitor engine 301 measures packet drop across the input / output connection 106. As used herein, “packet drop” refers to delayed or misplaced packets. Examples of software tools used by the monitor engine 301 to measure packet drop across the input / output connection 106 include, but are not limited to, SolarWinds® Network Quality Manager, SolarWinds® Network Performance Monitor, Paessler® PRTG Network Monitor, and Packet Loss Test®.
[0111] In one embodiment, the monitor engine 301 measures congestion on the input / output connection 106. As used herein, “congestion” refers to a reduction in quality of service that occurs when a connection is carrying more data than it can handle. Examples of software tools used by the monitor engine 301 to measure congestion across the input / output connection 106 include, but are not limited to, SolarWinds® NetFlow Traffic Analyzer, Wireshark®, Cacti®, LogicMonitor®, Datadog®, and Dynatrace®.
[0112] In operation 502, the machine learning engine 302 of the non-relational database system 102 uses the collected input / output statistics to construct patterns of input / output access characteristics for each path 106.
[0113] As described above, as used herein, the “pattern” of input / output access characteristics through path 106 refers to input / output access statistics typically shown by path 106, based on the input / output workload being served by path 106, a specific time, etc. Such patterns are based on input / output statistics collected from monitor engine 301 (used to evaluate the input / output workload and latency of each path 106), which are used as “training data” to train a mathematical model to predict the input / output access characteristics of path 106, based on the input / output workload being processed, etc. In one embodiment, such a pattern of input / output characteristics corresponds to values corresponding to different fields of the input / output access characteristics. For example, in a pattern of 0.3 milliseconds, 15 kHz, 5 milliseconds, 1, and 0, 0.3 milliseconds corresponds to input / output latency, 15 kHz corresponds to bandwidth, 5 milliseconds corresponds to response time, 1 corresponds to the number of packet drops over a period of one hour, and 0 corresponds to the absence of congestion.
[0114] In one embodiment, the machine learning engine 302 uses a machine learning algorithm (e.g., supervised learning) to build a mathematical model based on sample data consisting of input / output statistics collected from the monitor engine 301 (used to evaluate the input / output workload and latency of each path 106). Such a dataset is referred to herein as “training data,” which is used by the machine learning algorithm to predict or determine the input / output access characteristics of path 106 without being explicitly programmed to perform a task. In one embodiment, the training data consists of input / output statistics based on the input / output workload being processed, the time, the type of query being processed, etc. The algorithm iteratively makes predictions on the training data for the input / output access characteristics across each path 106. Examples of such supervised learning algorithms include nearest neighbors, naive Bayes, decision trees, linear regression, support vector machines, and neural networks.
[0115] In one embodiment, the mathematical model (machine learning model) corresponds to a piecewise model trained to predict input / output access characteristics through each path 106.
[0116] Based on the determination of the input / output access characteristics pattern for each path 106, the non-relational database system 102 selects an appropriate path 106 (input / output connection) for sending a request (e.g., a read request) to the storage system 103, where the urgency of the query (query urgency) is propagated to the storage system 103 along the selected path 106 (input / output connection), as described below in relation to Figure 6.
[0117] Figure 6 is a flowchart of a method 600 for managing queries to a non-relational database system 102 (Figures 1 and 2) by utilizing multiple input / output connections 106 (Figures 1 and 2) to a storage system 103 (Figures 1 and 2) according to an embodiment of the present disclosure, where query urgency is propagated to the storage system 103 along one of these input / output connections 106.
[0118] Referring to Figure 6 in conjunction with Figures 1-5, in operation 601, the non-relational database system 102 receives a query from the AI application 101 to retrieve an object from the storage system 103.
[0119] As described above, in one embodiment, the storage system 103 is an object-based storage system, where data is stored in the storage system 103 in the form of "objects" in a flat address space, based on its content and other attributes, rather than file names and locations. In one embodiment, each object stored in the storage system 103 is identified by a unique identifier called an "object ID". The object ID enables easy access to the object without the need to specify the storage location.
[0120] In operation 602, the priority identification module 303 of the non-relational database system 102 obtains urgency information regarding the query. In one embodiment, such urgency information includes the object category of the object being requested to be retrieved, and the type of application 101 requesting the object to be retrieved.
[0121] In operation 603, the priority identification module 303 of the non-relational database system 102 determines the level of urgency for retrieving the object based on the acquired urgency information. Such “level of urgency” refers to a multi-level urgency type (input / output level priority type) indicated by the query received by the non-relational database system 102 from the AI application 101 for retrieving the object from the storage system 103.
[0122] As described above, the level of urgency in such a received query is reflected in the urgency of the request issued by the non-relational database system 102 to read the requested object from the storage system 103.
[0123] As used herein, “multilevel urgency type” refers to one level of urgency for a request (e.g., a read request) issued by the non-relational database system 102 to read a requested object from the storage system 103. For example, in one embodiment, the levels of urgency for a request (e.g., a read request) issued by the non-relational database system 102 include urgent, critical, and supercritical, where the critical category is assigned to requests that are more important to process than requests assigned to the urgent category, and the supercritical category is assigned to requests that are more important to process than requests assigned to the critical category. In one embodiment, such a multilevel urgency type is determined based on obtaining urgency information about the query (requesting to retrieve an object from the storage system 103), such as the object category of the object to be retrieved and the type of application requesting to retrieve the object.
[0124] In one embodiment, the priority identification module 303 obtains urgency information regarding queries received by the non-relational database system 102. In one embodiment, such urgency information includes the object category of the object being requested to be retrieved. For example, in one embodiment, the priority identification module 303 may analyze the query to determine the type of object to be retrieved, such as the type of data (e.g., metadata, training data, analytical data, visual data, text data, numerical data, etc.). For example, in one embodiment, the query may include metadata describing the type of object (data) being requested. Such a description is then used to identify the "object category" from a data structure (e.g., a table) that stores a list of object types and their associated object categories. In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory 405, disk unit 408) of the non-relational database system 102. In one embodiment, the priority identification module 303 uses natural language processing to identify matching types of objects in the data structure and locate their associated object categories.
[0125] Upon identifying an object category, in one embodiment, the priority identification module 303 identifies the type of multilevel urgency in a request issued by the non-relational database system 102 (a request to retrieve an object) based on the identification of the object category in a data structure (e.g., a table) that stores a list of object categories (e.g., metadata) and their associated multilevel urgency (e.g., supercritical). For example, upon identifying an object category in such a data structure, the associated multilevel urgency in a request issued by the non-relational database system 102 can then be retrieved. In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device of the non-relational database system 102 (e.g., memory 405, disk unit 408). In one embodiment, the priority identification module 303 uses natural language processing to identify matching object categories in the data structure and determine their associated multilevel urgency in a request issued by the non-relational database system 102.
[0126] In one embodiment, the priority identification module 303 identifies the type of multilevel urgency in a request (a request to retrieve an object) issued by the non-relational database system 102, based on the identification of the type of AI application 101 issuing the query. For example, the AI application 101 may involve applications of AI in various forms, such as e-commerce, navigation, robotics, human resources, healthcare, agriculture, gaming, automotive, social media, and marketing. In one embodiment, the type of AI application (e.g., gaming) is determined by its identifier (e.g., name). In one embodiment, the type of AI application 101 is used to identify the type of multilevel urgency in a request (a request to retrieve an object) issued by the non-relational database system 102, using a data structure (e.g., a table) that stores a list of types of AI applications 101 (e.g., gaming) and their associated multilevel urgency (e.g., critical). For example, once the type of AI application 101 is identified in such a data structure, the associated multilevel urgency in a request issued by the non-relational database system 102 can then be retrieved. In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory 405, disk unit 408) of the non-relational database system 102. In one embodiment, the priority identification module 303 uses natural language processing to identify matching types of AI applications 101 in the data structure and to determine their associated multi-level urgency in requests issued by the non-relational database system 102.
[0127] In operation 604, the disk volume identification module 304 of the non-relational database system 102 identifies the disk volume from a record of the requested object, such as an identifier (e.g., a label) associated with such a disk volume.
[0128] As described above, the disk volume identification module 304 identifies disk volume 105 from records of the requested object (e.g., object dictionary records), such as an identifier (e.g., label) associated with such disk volume 105. As used herein, “requested object” refers to an object that is requested to be retrieved by the AI application 101. In one embodiment, a data structure (e.g., a table) stores records associated with such objects that indicate their storage location within the storage system 103, such as a specific disk volume 105 in the storage system 103. Such records are referred to herein as “object dictionary records.” In one embodiment, such a data structure is stored in a storage device (e.g., memory 405, disk unit 408) of a non-relational database system 102.
[0129] In operation 605, the path selection logic 306 of the non-relational database system 102 identifies a logical and / or physical connection 105 extending from the non-relational database system 102 to an identified disk volume 105 of the storage system 103.
[0130] As described above, in one embodiment, the path selection logic 306 identifies logical and / or physical connections 106 extending from the non-relational database system 102 to the identified disk volume 105 of the storage system 103 (identified in operation 604) based on identifying such connections 106 in a data structure (e.g., a table) that stores a list of logical and / or physical connections 106 connected to a particular disk volume 105 of the storage system 103. In one embodiment, such disk volume 105 is identified by an identifier (e.g., a label). As a result, after obtaining an identifier for the disk volume 105 identified by the disk volume identification module 304 in operation 604, the path selection logic 306 can identify logical and / or physical connections 106 connected to such disk volume 105 based on the determination of the identified disk volume 105 in the data structure described above. In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory 405, disk unit 408) of a non-relational database system 102. In one embodiment, path selection logic 306 uses natural language processing to identify matching disk volume identifiers (e.g., labels) in the data structure to determine the logical and / or physical connection 106 to which such disk volume 105 is connected.
[0131] In operation 606, the core speed identification module 305 of the non-relational database system 102 identifies the CPU core speed of the CPU cores 202 of the storage system 103 at a specific point in time, such as when a path 106 (e.g., a logical or physical input / output connection) is selected to send a request (e.g., a read request) from the non-relational database system 102 to the storage system 103.
[0132] As stated above, as used herein, “CPU core speed” refers to the clock speed (operating speed) of the CPU core 202. In one embodiment, the CPU core speed is obtained by the core speed identification module 305 at the time of initializing the input / output queue 201. Examples of software tools used by the core speed identification module 305 to measure the CPU core speed of the CPU core 202 include, but are not limited to, CPUID HWMonitor, SolarWinds® Server & Application Monitor, Paessler® PRTG Network Monitor, and SysGauge.
[0133] In operation 607, the path selection logic 306 of the non-relational database system 102 selects one of the identified logical and / or physical input / output connections 106 (identified in operation 605) to be used to send a request (e.g., a read request) from the non-relational database system 102 to the storage system 103 across the hybrid cloud environment 104, based on the input / output access characteristics pattern of the identified logical and / or physical input / output connections 106 (obtained in operation 502), the CPU core speed for the CPU cores 202 (obtained in operation 606), and the determined type of multilevel urgency (obtained in operation 603).
[0134] As described above, the input / output access characteristics pattern is generated by the machine learning engine 302. Furthermore, as described above, the CPU core speed for CPU core 202 is determined by the core speed identification module 305. In addition, as described above, the determined level of urgency for object retrieval is determined by the priority identification module 303. Based on such information, the path selection logic 306 selects a path 106 from the non-relational database system 102 to the identified disk volume 105 with appropriate input / output access characteristics that satisfy the requirement of the level of urgency for object retrieval.
[0135] In one embodiment, a data structure (e.g., a table) stores a mapping of levels of urgency (multilevel urgency type) to required patterns of input / output access characteristics that need to be maintained by a selected input / output connection 106, such as input / output latency range, bandwidth, response time, number of packet drops, and presence of congestion. For example, for a “critical” type of urgency, the following patterns of input / output access characteristics (in terms of values) are mapped to such levels of urgency: 0.2–1.5 milliseconds (acceptable input / output latency range); 15–20 kHz (acceptable bandwidth range); 5–10 milliseconds (acceptable response time range); 1 (acceptable number of packet drops over a period of one hour) and 0 (no congestion). In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory 405, disk unit 408) of a non-relational database system 102.
[0136] Furthermore, in one embodiment, a data structure (e.g., a table) stores a mapping of urgency levels (multilevel urgency types) to ranges of CPU core speeds for CPU core 202. For example, for a "critical" type of urgency, the range of CPU core speeds for CPU core 202 is 3.5 GHz to 4.0 GHz. In one embodiment, such a data structure is pre-configured by an expert. In one embodiment, such a data structure is stored in a storage device (e.g., memory 405, disk unit 408) of a non-relational database system 102.
[0137] Based on the level of urgency (multilevel urgency type) for object retrieval determined by the priority identification module 303, the path selection logic 306 identifies patterns of input / output access characteristics and further identifies a range of CPU core speeds for the CPU cores 202 that match such levels of urgency in the data structures described above.
[0138] Subsequently, the path selection logic 306 identifies a path 106 (e.g., a logical or physical connection) from identified logical and / or physical connections connected to an identified disk volume 105 (obtained in operation 605) with input / output access characteristics obtained from the data structure described above (which match or closely match the input / output access characteristics obtained from the machine learning engine 302), where such identified path is tagged to a CPU core 202 having a core speed (a core speed obtained from the core speed identification module 305 in operation 606) that satisfies a range of CPU core speeds obtained from the data structure described above. For example, path 106B (one of the paths from identified logical and / or physical connections connected to an identified disk volume 105) may represent a pattern of input / output access characteristics (obtained from the machine learning engine 302) that satisfies input / output access requirements for a specified level of urgency (e.g., critical), obtained from the data structure described above. Furthermore, such a path (path 106B) may be tagged to a CPU core 202 (e.g., CPU core 202B) with a core speed (obtained from the core speed identification module 305 in operation 606) that meets the required range of CPU core speeds for a specified level of urgency (e.g., critical) obtained from the data structure described above. As a result, in such an example, path 106B is selected by the path selection logic 306 used to send a request (e.g., a read request) from the non-relational database system 102 to the storage system 103 (e.g., disk volume 105A), where the urgency of the query is propagated to the storage system 103 along such selected path 106.
[0139] In one embodiment, in a scenario where no path 106 is identified that satisfies the input / output access requirements for a specified level of urgency (e.g., critical), the path selection logic 306 selects a path tagged with a CPU core 202 that most closely satisfies the input / output access requirements for the specified level of urgency and satisfies or closely satisfies the required range of CPU core speed for the specified level of urgency (e.g., critical).
[0140] In operation 608, the non-relational database system 102 sends a request (e.g., a read request) to the storage system 103 through a selected logical or physical input / output connection 106. That is, the non-relational database system 102 sends the request through a selected logical or physical input / output connection 106 connected to the appropriate disk volume 105 (disk volume 105 identified from the record of the requested object).
[0141] In this scheme, embodiments of the present disclosure provide means for a non-relational database (e.g., a NoSQL database) to utilize multiple input / output connections generated in a multi-connection input / output transmission protocol (e.g., NVMe), where query urgency is propagated to the storage system along one of these input / output connections.
[0142] Furthermore, the principles of this disclosure improve technologies or technologies involving non-relational databases. As described above, transmission protocols such as NVMe® (Non-Volatile Memory Express) can be used to access non-volatile storage media, such as non-volatile storage media, in storage systems connected to non-relational databases, such as NoSQL databases. As a result of using such technologies, many input / output connections may be generated through a single physical connection, gaining the benefit of parallelizing the input / output connections. Consequently, a NoSQL disk volume may have multiple paths ("multipaths"), each path may have one or more input / output queues tagged to dissimilar CPU cores in the storage system. In such scenarios, there may be clock speed differences between CPU cores that can affect input / output performance when requested on a particular path. Unfortunately, NVMe-based standards do not have a multipath policy. Consequently, a NoSQL database cannot obtain information about multiple input / output connections generated for the same disk volume. Furthermore, if an application such as an AI application issues a query that requires immediate retrieval of an object (e.g., a JSON object) from a storage system, there is currently no way to propagate such query urgency (e.g., retrieval urgency) to the storage system via one of its input / output connections, due to differences in how NoSQL databases and storage systems operate. Therefore, there is currently no way for NoSQL databases to utilize the multiple input / output connections generated in multi-connection input / output transmission protocols (e.g., NVMe), or to propagate query urgency to the storage system through one of these input / output connections.
[0143] Embodiments of the present disclosure improve such techniques by receiving queries from applications such as AI applications for retrieving objects from a storage system of a non-relational database system (e.g., a NoSQL database system), wherein the storage system is connected to the non-relational database system via a hybrid cloud environment. In one embodiment, the storage system is an object-based storage system, where data is stored in the storage system in the form of “objects” on a flat address space based on its content and other attributes. Disk volumes of the storage system are then identified from a record of the requested object, such as an identifier (e.g., a label) associated with such disk volumes. Once the disk volumes are identified, logical and / or physical input / output connections to the identified disk volumes, tagged to dissimilar CPU cores, are identified, for example, through a data structure that stores a list of logical and / or physical input / output connections connected to various disk volumes of the storage system. In one embodiment, each of the logical and / or physical input / output connections includes one or more input / output queues tagged to a central processing unit (CPU) core of the storage system. After the CPU core speed (e.g., clock speed) for the CPU core of the storage system is obtained, one of the identified logical and / or physical input / output connections connected to an identified disk volume is selected based on the input / output access characteristics of the identified logical and / or physical input / output connection, the CPU core speed for the CPU core, and a determined level of urgency for retrieving the object. In one embodiment, such input / output access characteristics (e.g., input / output latency, bandwidth, response time, packet drop, congestion, etc.) and the CPU core speed for the CPU core are obtained from a data structure (e.g., a table).In one embodiment, the level of urgency for object retrieval is determined based on the object category of the object being requested for retrieval and / or the type of application requesting the object retrieval. Based on the determined level of urgency for object retrieval (e.g., critical), the required input / output access characteristics for the input / output connection and the required CPU core speed to be used to send the request to the storage system to retrieve the object are determined via a data structure that enumerates such requirements associated with various levels of urgency. After identifying one of the input / output connections from identified input / output connections tagged to the CPU core that satisfies both of these requirements, or the one that most closely satisfies them, the non-relational database system sends the request (e.g., a read request) to the storage system through the selected input / output connection in a hybrid cloud environment. In this scheme, the non-relational database system can utilize multiple input / output connections established by a multi-connection input / output transmission protocol (e.g., NVMe) along which the urgency of the query is propagated to the storage system. Furthermore, this scheme presents improvements in the field of non-relational databases.
[0144] The technical solutions provided by this disclosure cannot be performed in the human mind or by a person using pen and paper. That is, the technical solutions provided by this disclosure cannot be implemented in the human mind or by a person using pen and paper without the use of a computer, in any reasonable amount of time, and with any reasonable expectation of accuracy.
[0145] The descriptions of the various embodiments of this disclosure are presented for illustrative purposes only and are not intended to be exhaustive or limitful to the embodiments disclosed. Many modifications and variations that do not deviate from the scope and spirit of the embodiments described will be apparent to those skilled in the art. The terminology used herein has been selected to best describe the principles of the embodiments, their practical applications, or technical improvements to the technology available on the market, or to enable other those skilled in the art to understand the embodiments disclosed herein. (Other possible items) (Item 1) A computer implementation method for managing queries against a non-relational database, wherein the computer implementation method is: The stage where a query is received to retrieve an object from the storage system of a non-relational database system; A step of identifying the disk volume of the storage system from the record of the object; A step of identifying logical and / or physical input / output connections to the disk volume of the storage system, wherein each of the logical and / or physical input / output connections corresponds to a path from the non-relational database to the disk volume of the storage system, wherein each of the logical and / or physical input / output connections includes one or more input / output queues tagged to a non-similar central processing unit (CPU) core of the storage system; A step of obtaining the CPU core speed for the CPU core of the storage system; A step of selecting one of the identified logical and / or physical input / output connections to be used to send a request to the storage system to retrieve the object, based on the input / output access characteristics of the identified logical and / or physical input / output connections, the CPU core speed for the CPU core, and a determined level of urgency for retrieving the object; and The step of sending the request to the storage system through the selected logical or physical input / output connection. A computer implementation method comprising the above. (Item 2) The computer implementation method according to item 1, further comprising the step of collecting input / output statistics for each of a plurality of paths from the non-relational database to the storage system, and evaluating the input / output workload and latency of each path. (Item 3) The computer implementation method according to item 2, further comprising the step of constructing patterns of input / output access characteristics through each of the multiple paths using the collected input / output statistics. (Item 4) The computer implementation method according to item 2 or 3, wherein the multiple paths occur through a hybrid network environment connected between the non-relational database system and the storage system. (Item 5) The step of obtaining urgency information regarding the aforementioned query; and The step of determining the level of urgency for retrieving the object based on the acquired urgency information. A computer implementation method described in any one of items 1 to 4, further comprising the above. (Item 6) The computer implementation method described in item 5, wherein the acquired urgency information is selected from a group including the object category of the object to be retrieved and the type of application requesting the retrieval of the object. (Item 7) The query for retrieving the aforementioned object is received from an artificial intelligence application, and is a computer implementation method according to any one of items 1 to 6. (Item 8) A computer program product for managing queries against a non-relational database, the computer program product comprising one or more computer-readable storage media having program code embodied thereby, the program code being: A procedure for receiving queries to retrieve objects from the storage system of a non-relational database system; A procedure for identifying the disk volume of the storage system from the record of the object; A procedure for identifying logical and / or physical input / output connections to the disk volume of the storage system, wherein each of the logical and / or physical input / output connections corresponds to a path from the non-relational database to the disk volume of the storage system, wherein each of the logical and / or physical input / output connections includes one or more input / output queues tagged to dissimilar central processing unit (CPU) cores of the storage system; A procedure for obtaining the CPU core speed of the CPU core of the aforementioned storage system; A procedure for selecting one of the identified logical and / or physical input / output connections to be used to send a request to the storage system to retrieve the object, based on the input / output access characteristics of the identified logical and / or physical input / output connections, the CPU core speed for the CPU core, and a determined level of urgency for retrieving the object; and A procedure for sending the request to the storage system through the selected logical or physical input / output connection. A computer program product that includes programming instructions for use. (Item 9) The aforementioned program code further: A procedure to collect input / output statistics for each of the multiple paths from the non-relational database to the storage system, and to evaluate the input / output workload and latency of each path. A computer program product as described in item 8, including the aforementioned programming instructions for the purpose of the computer program product described in item 8. (Item 10) The program code uses the collected input / output statistics to construct a pattern of input / output access characteristics through each of the multiple paths. The computer program product described in item 9, further comprising the aforementioned programming instructions for the computer program. (Item 11) The computer program product described in item 9 or 10, wherein the multiple paths occur through a hybrid network environment connected between the non-relational database system and the storage system. (Item 12) The aforementioned program code further: Procedure for obtaining urgency information regarding the aforementioned query; and A procedure for determining the level of urgency for retrieving the object based on the acquired urgency information. A computer program product as described in any one of items 8 to 11, including the aforementioned programming instructions for the purpose of: (Item 13) The acquired urgency information is selected from a group including the object category of the object to be retrieved and the type of application requesting the retrieval of the object, as described in item 12, for the computer program product. (Item 14) The query for retrieving the aforementioned object is received from an artificial intelligence application, a computer program product as described in any one of items 8 to 13. (Item 15) Memory for storing computer programs for managing queries against non-relational databases; and Processor connected to the aforementioned memory A system comprising, the processor, A procedure for receiving queries to retrieve objects from the storage system of a non-relational database system; A procedure for identifying the disk volume of the storage system from the record of the object; A procedure for identifying logical and / or physical input / output connections to the disk volume of the storage system, wherein each of the logical and / or physical input / output connections corresponds to a path from the non-relational database to the disk volume of the storage system, wherein each of the logical and / or physical input / output connections includes one or more input / output queues tagged to dissimilar central processing unit (CPU) cores of the storage system; A procedure for obtaining the CPU core speed of the CPU core of the aforementioned storage system; A procedure for selecting one of the identified logical and / or physical input / output connections to be used to send a request to the storage system to retrieve the object, based on the input / output access characteristics of the identified logical and / or physical input / output connections, the CPU core speed for the CPU core, and a determined level of urgency for retrieving the object; and A procedure for sending the request to the storage system through the selected logical or physical input / output connection. A system configured to execute program instructions of the computer program, including the computer program. (Item 16) The program instructions of the aforementioned computer program further: A procedure to collect input / output statistics for each of the multiple paths from the non-relational database to the storage system, and to evaluate the input / output workload and latency of each path. The system described in item 15, including the system described in item 15. (Item 17) The program instructions of the aforementioned computer program further: A procedure for constructing patterns of input / output access characteristics through each of the multiple paths, using the collected input / output statistics. The system described in item 16, including the system described in item 16. (Item 18) The system described in item 16 or 17, wherein the multiple paths occur through a hybrid network environment connected between the non-relational database system and the storage system. (Item 19) The program instructions of the aforementioned computer program further: Procedure for obtaining urgency information regarding the aforementioned query; and A procedure for determining the level of urgency for retrieving the object based on the acquired urgency information. A system including any one of items 15 through 18. (Item 20) The system described in item 19, wherein the acquired urgency information is selected from a group including the object category of the object to be retrieved and the type of application requesting the retrieval of the object. (Item 21) A computer program comprising program code means adapted to perform the computer implementation method described in any one of items 1 to 7 when the program is executed on a computer.
Claims
1. A computer implementation method for managing queries against a non-relational database, wherein the computer implementation method is: The stage where a query is received to retrieve an object from the storage system of a non-relational database system; The step of identifying the disk volume of the storage system from the record of the object; A step of identifying a plurality of paths from the non-relational database to the disk volume of the storage system, wherein each of the plurality of paths includes one or more input / output queues tagged to a non-similar central processing unit (CPU) core of the storage system; A step of obtaining the clock speed of the CPU core of the storage system; A step of selecting one of the identified paths to be used to send a request to the storage system to retrieve the object, based on the input / output access characteristics of a plurality of identified paths, the clock speed of the CPU core, and a level indicating the urgency of retrieving the object; and The step of sending the request to the storage system through the selected path. A computer implementation method comprising the above.
2. The computer implementation method according to claim 1, further comprising the step of collecting input / output statistics for each of the plurality of paths from the non-relational database to the disk volume of the storage system, and evaluating the input / output workload and latency of each path.
3. The computer implementation method according to claim 2, further comprising the step of constructing a pattern of input / output access characteristics through each of the plurality of paths using the collected input / output statistics.
4. The computer implementation method according to claim 2, wherein the plurality of paths are generated through a hybrid network environment connected between the non-relational database system and the storage system.
5. The step of obtaining urgency information regarding the aforementioned query; and The step of determining the level indicating the urgency for retrieving the object based on the acquired urgency information. The computer implementation method according to claim 1, further comprising the following:
6. The computer implementation method according to claim 5, wherein the acquired urgency information is selected from a group including the object category of the object to be retrieved and the type of application requesting the retrieval of the object.
7. The computer implementation method according to claim 1, wherein the query for retrieving the object is received from an artificial intelligence application.
8. A computer program for managing queries against a non-relational database, wherein the computer program includes program code, and the program code is: A procedure for receiving queries to retrieve objects from the storage system of a non-relational database system; A procedure for identifying the disk volume of the storage system from the record of the object; A procedure for identifying a plurality of paths from the non-relational database to the disk volume of the storage system, wherein each of the plurality of paths includes one or more input / output queues tagged to a non-similar central processing unit (CPU) core of the storage system; Procedure for obtaining the clock speed of the CPU core of the aforementioned storage system; A procedure for selecting one of the identified paths to be used to send a request to the storage system to retrieve the object, based on the input / output access characteristics of the identified paths, the clock speed of the CPU core, and a level indicating the urgency of retrieving the object; and A procedure for sending the request to the storage system through the selected path. A computer program that includes programming instructions for a computer.
9. The aforementioned program code further: A procedure for collecting input / output statistics for each of the multiple paths from the non-relational database to the disk volume of the storage system, and for evaluating the input / output workload and latency of each path. The computer program according to claim 8, comprising the programming instructions for the purpose of the computer program.
10. The program code uses the collected input / output statistics to construct a pattern of input / output access characteristics through each of the multiple paths. The computer program according to claim 9, further comprising the programming instructions for the computer.
11. The computer program according to claim 9, wherein the plurality of paths occur through a hybrid network environment connected between the non-relational database system and the storage system.
12. The aforementioned program code further: Procedure for obtaining urgency information regarding the aforementioned query; and A procedure for determining the level indicating the urgency of retrieving the object, based on the acquired urgency information. The computer program according to claim 8, comprising the programming instructions for the purpose of the computer program.
13. The computer program according to claim 12, wherein the acquired urgency information is selected from a group including the object category of the object to be retrieved and the type of application requesting the retrieval of the object.
14. The computer program according to claim 8, wherein the query for retrieving the object is received from an artificial intelligence application.
15. Memory for storing computer programs for managing queries against non-relational databases; and Processor connected to the aforementioned memory A system comprising, the processor, A procedure for receiving queries to retrieve objects from the storage system of a non-relational database system; A procedure for identifying the disk volume of the storage system from the record of the object; A procedure for identifying a plurality of paths from the non-relational database to the disk volume of the storage system, wherein each of the plurality of paths includes one or more input / output queues tagged to a non-similar central processing unit (CPU) core of the storage system; Procedure for obtaining the clock speed of the CPU core of the aforementioned storage system; A procedure for selecting one of the identified buses to be used to send a request to the storage system to retrieve the object, based on the input / output access characteristics of a plurality of identified paths, the clock speed of the CPU core, and a level indicating the urgency of retrieving the object; and A procedure for sending the request to the storage system through the selected path. A system configured to execute program instructions of the computer program, including the computer program.
16. The program instructions of the aforementioned computer program further: A procedure for collecting input / output statistics for each of the multiple paths from the non-relational database to the disk volume of the storage system, and for evaluating the input / output workload and latency of each path. The system according to claim 15, including the system described in claim 15.
17. The program instructions of the aforementioned computer program further: A procedure for constructing patterns of input / output access characteristics through each of the multiple paths, using the collected input / output statistics. The system according to claim 16, including the system described in claim 16.
18. The system according to claim 16, wherein the plurality of paths are generated through a hybrid network environment connected between the non-relational database system and the storage system.
19. The program instructions of the aforementioned computer program further: Procedure for obtaining urgency information regarding the aforementioned query; and A procedure for determining the level indicating the urgency of retrieving the object, based on the acquired urgency information. The system according to claim 15, including the system described in claim 15.
20. The system according to claim 19, wherein the acquired urgency information is selected from a group including the object category of the object to be retrieved and the type of application requesting the retrieval of the object.
21. A computer program comprising program code means adapted to perform the computer implementation method described in any one of claims 1 to 7 when the program is executed on a computer.