System and method for querying and updating database
The system optimizes database efficiency by routing queries to row-oriented or column-oriented databases based on operation type and optimizing column-oriented updates, addressing inefficiencies in handling large data sets.
Patent Information
- Application Number
- JP2024160564
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-02-07
- Filing Date
- 2024-09-18
- Publication Date
- 2024-12-24
AI Technical Summary
Existing database architectures face inefficiencies in handling large data sets, particularly in row-oriented and column-oriented databases, leading to increased time and complexity in query execution and data updates.
A system that directs query requests to appropriate database engines based on the type of operation, using row-oriented databases for filtering and column-oriented databases for analytical operations, and optimizes column-oriented database updates by deleting rows with updated data entries and forming separate delete data structures.
Improves query response times and database efficiency by routing requests to the most suitable database type and optimizing column-oriented database updates, enhancing analytical capabilities and reducing update times.
Smart Images

Figure 2024178269000001_ABST
Abstract
Description
[Technical field]
[0001] [CROSS REFERENCE TO RELATED APPLICATIONS] This application claims priority to and the benefit of U.S. Provisional Patent Application No. 62 / 932,931, entitled "SYSTEM AND METHODS FOR QUERYING AND UPDATING DATABASES," filed November 8, 2019, and also claims priority to and the benefit of U.S. Provisional Patent Application No. 62 / 960,567, entitled "SYSTEMS AND METHODS FOR PERFORMING UPDATED QUERY REQUESTS IN A SYSTEM OF MULTIPLE DATABASE ENGINE," filed January 13, 2020. Both U.S. provisional patent applications are incorporated herein by reference in their entireties for all purposes.
[0002] FIELD OF THE DISCLOSURE This disclosure relates generally to systems and methods for querying and updating databases, and more particularly, to systems and methods for querying appropriate databases in response to receiving a specific query request. [Background technology]
[0003] This section is intended to introduce the reader to various aspects of art that may be related to various aspects of the present disclosure, which are described and / or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present disclosure. As such, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
[0004] Organizations, regardless of size, depend on information technology (IT) and access to data and services for their continued operations and success. Each organization's IT infrastructure may have associated hardware resources (e.g., computing devices, load balancers, firewalls, switches, etc.) and software resources (e.g., productivity software, database applications, custom applications, etc.). These resources may be provided and provisioned by one or more different providers with different settings or values.
[0005] Various types of data may be organized and stored in databases that are created, stored, and maintained in different types of computer-based systems. Examples of such databases include row-oriented databases and column-oriented databases. Such databases may be used to store data ranging from personal information or data developed in large-scale industrial, commercial, and governmental contexts. Thus, such stored data sets may range in size from trivially small to those that may encompass tens of millions of records and data points or more. However, as the number of records and defined fields in a database increases, the limitations of a given database architecture may affect the ability of a given database to be used efficiently. Summary of the Invention [Means for solving the problem]
[0006] A summary of certain embodiments disclosed herein is provided below. It should be understood that these aspects are provided only to provide the reader with a brief summary of these specific embodiments, and are not intended to limit the scope of the present disclosure. In fact, the present disclosure may encompass a variety of aspects that may not be provided below.
[0007] In one embodiment, a system includes a row-oriented database including a first set of data inputs, a column-oriented database including a second set of data inputs, and a computing device including a processor configured to execute computer-executable instructions stored on a non-transitory computer-readable medium, which when executed by a processing component cause the processing component to perform actions including at least receiving a query request configured to identify one or more inputs in the first set of data inputs or the second set of data inputs, determining whether the query request includes performing a filtering operation to identify the one or more inputs or performing an analytical operation to identify the one or more inputs, querying the row-oriented database in response to the query request including the filtering operation, and querying the column-oriented database in response to the query request including the analytical operation.
[0008] In another embodiment, a method of updating a column-oriented database including a set of data inputs, the method comprising: receiving, via a processor, an indication of a modification to one or more inputs associated with the set of data; identifying, via the processor, one or more inputs in the set of data inputs in response to receiving the indication; deleting, via the processor, one or more inputs of the set of data in the column-oriented database; forming, via the processor, one or more deletion data structures including the one or more inputs in a first storage section of the column-oriented database; inserting, via the processor, one or more updated inputs in place of the one or more inputs of the set of data in the column-oriented database; joining, via the processor, an additional set of inputs associated with one or more previously executed query requests with the one or more deletion data structures; deleting, via the processor, the one or more deletion data structures and the additional set of inputs from the first storage; generating, via the processor, one or more additional deletion data structures associated with the one or more additional modifications to at least a portion of the set of data inputs in a second storage section of the column-oriented database, the second storage section being different from the first storage section.
[0009] In an additional embodiment, a non-transitory computer-readable medium is provided that includes computer-executable instructions that, when executed by a processing component, cause the processing component to perform actions including at least receiving a query request directed to a column-oriented database, determining whether the query request corresponds to one of a predefined list of query requests, and querying a row-oriented database based on the query request in response to a query request that corresponds to one of the predefined list of query requests.
[0010] Various refinements of the above-mentioned features may exist in relation to various aspects of the present disclosure. Further features may also be incorporated into these various aspects. These refinements and additional features may exist individually or in any combination. For example, various features discussed below in relation to one or more of the illustrated embodiments may be incorporated alone or in any combination into any of the above-mentioned aspects of the present disclosure. The brief summary provided above is intended only to familiarize the reader with certain aspects and circumstances of the embodiments of the present disclosure, without limitation to the subject matter described in the claims.
[0011] The various aspects of the disclosure may be better understood by reading the following detailed description and by reference to the drawings, in which: [Brief description of the drawings]
[0012] [Figure 1] FIG. 1 is a block diagram of an embodiment of a cloud architecture in which embodiments of the present disclosure may operate. [Diagram 2] 2 is a block diagram of a computing device that may be utilized in a computing system that may be present in FIG. 1 in accordance with an aspect of the present disclosure. [Diagram 3] 1 is a flowchart of a process used to determine a database engine for performing a query request, according to an aspect of the present disclosure. [Figure 4] 1 is a flowchart of a process used to update a column-oriented database according to an aspect of the present disclosure. [Diagram 5] 1 is a flowchart of a process used to evaluate the validity of a query request, according to an aspect of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0013] One or more specific embodiments are described below. In an effort to provide a concise description of these embodiments, not all features of an actual implementation are described in the specification. It should be appreciated that in the development of any such actual implementation, as in any engineering or design project, many implementation-specific decisions must be made to achieve the developer's particular goals, such as compliance with system-related and enterprise-related constraints that may vary from implementation to implementation. Moreover, it should be appreciated that such a development effort may be complex and time-consuming, but is nevertheless a routine undertaking of design, manufacturing and production for those of ordinary skill in the art having the benefit of this disclosure.
[0014] As used herein, the term "computing system" refers to an electronic computing device, such as, but not limited to, a computer, a virtual machine, a virtual container, a host, a server, a laptop, and / or a mobile device, or multiple electronic computing devices that cooperate to perform the functions described as being performed on or by the computing system. As used herein, the term "medium" refers to one or more non-transitory computer-readable physical media that together store the content described as being stored thereon. Embodiments may include non-volatile secondary storage, read-only memory (ROM) and / or random access memory (RAM). As used herein, the term "application" refers to one or more computing modules, programs, processes, workloads, threads and / or sets of computing instructions executed by a computing system. Exemplary embodiments of an application include software modules, software objects, software instances and / or other types of executable code.
[0015] As discussed in more detail below, the present embodiments described herein improve efficiency in performing queries in databases. Due to the increasing amount of data, the time and complexity of executing and responding to query requests continues to increase. As a result, directing query requests to the appropriate database engine may provide efficiencies in response times to query requests and may provide more useful analytical use cases. In one example, both row-oriented and column-oriented databases may include a set of data inputs. After a query request is received, a processor may determine whether the query request includes an analytical operation. If the query request includes an analytical operation, the processor may determine whether the column-oriented database has a data input associated with the query request. If the column-oriented database does in fact include a data input associated with the query request, the processor may send the query request to the column-oriented database for querying. If the column-oriented database does not include a data input associated with the query request, a replicator component may copy the associated data input from the row-oriented database to the column-oriented database before the processor sends the query request to the column-oriented database. On the other hand, if the query request does not include an analytical operation, the processor may send the query request to a row-oriented database.
[0016] A query request that does not include an analytical operation may be sent to a row-oriented database due to how data is stored in a memory component (e.g., a memory block) of the row-oriented database. A data block stored in a memory component of a row-oriented database includes multiple types of data for columns for one particular entity. With this in mind, updates to a data block from a row-oriented database are relatively easy to implement compared to a column-oriented database. On the other hand, due to how data is stored in a memory component of a column-oriented database, a processor may perform analytical operations more efficiently in a column-oriented database compared to a row-oriented database. A data block stored in a memory component of a column-oriented database includes multiple values for multiple entities, which causes multiple values to be associated with the same data type. As a result, since the data type of each column may be similar, performing analytical operations such as gathering data within a particular column or a query that involves running a particular algorithm on the data stored in each column may be performed more efficiently compared to performing the same algorithm on data stored in different rows.
[0017] With this in mind, updating a data entry in a column-oriented database may be relatively more difficult compared to a row-oriented database. For example, when performing an update that may be received as a row-oriented cell, the processor may read a certain number of rows in the row-oriented database to perform the update. However, due to its column-oriented nature, to perform the same update in a column-oriented database, a larger amount of columns may be read compared to a minimum number of rows before performing the same row-oriented update as would be performed in a row-oriented database. Thus, updating a column-oriented database may be time-consuming, especially when the column-oriented database includes a large amount of data entries. To address the problem of updating a column-oriented database, a row having a data entry to be updated may be deleted after receiving an indication that a modification to the data entry has been received. A new row having the updated data entry may be inserted in place of the deleted row. Deleting a row creates a separate deletion data structure having data previously stored in the deleted row. Within the first storage section of the column-oriented database, these separate deletion data structures are joined with the data entry associated with the previously executed query request (e.g., update, modification). The separate deletion data structures in the first storage section may be permanently deleted on a periodic basis (e.g., daily, monthly) such that the first storage section no longer contains the separate deletion data structures after the deletion operation has occurred. After the separate deletion data structures are deleted, new query requests may be directed to the second storage section of the columnar database. In this way, the separate deletion data structures are maintained such that the storage sections of the columnar database are efficiently utilized and additional sections of the columnar database are available for data storage and query operations.
[0018] With the foregoing in mind, the following figures relate to various types of generalized system architectures or configurations that may be utilized to provide services to organizations in a multi-instance framework and in which the present approach may be utilized. Correspondingly, these system and platform examples may also relate to systems and platforms in which the techniques discussed herein may be implemented or otherwise utilized. Referring now to FIG. 1, a schematic diagram of an embodiment of a cloud computing system 10 is shown in which an embodiment of the present disclosure may operate. The cloud computing system 10 may include a client network 12, a network 14 (e.g., the Internet), and a cloud-based platform 16. In some implementations, the cloud-based platform 16 may be a configuration management database (CMDB) platform. In one embodiment, the client network 12 may be a local private network, such as a local area network (LAN) having various network devices, including, but not limited to, switches, servers, and routers. In another embodiment, the client network 12 represents an enterprise network, which may include one or more LANs, virtual networks, data centers 18, and / or other remote networks. 1, client network 12 may be connected to one or more client devices 20A, 20B, and 20C such that the client devices may communicate with each other and / or with a network hosting platform 16. Client devices 20 may be computing systems and / or other types of computing devices, commonly referred to as Internet of Things (IoT) devices, that access cloud computing services, for example, via a web browser application or through an edge device 22 that may act as a gateway between client devices 20 and platform 16.1 includes administration or administrator devices, agents or servers, such as a management, instrumentation, and discovery (MID) server 24 that facilitates communication of data between the network hosting platform 16 and other external applications, data sources, services, and client network 12. Although not specifically shown in FIG 1, client network 12 may also include a combination of connecting network devices (e.g., gateways or routers) or devices that implement customer firewalls or intrusion protection systems.
[0019] For the illustrated embodiment, FIG. 1 shows that the client network 12 is coupled to a network 14. The network 14 may include one or more computing networks, such as other LANs, wide area networks (WANs), the Internet, and / or other remote networks, for transmitting data between the client device 20 and the network hosting the platform 16. Each computing network in the network 14 may include wired and / or wireless programmable devices operating in the electrical and / or optical domain. For example, the network 14 may include wireless networks, such as cellular networks (e.g., Global System for Mobile Communications (GSM)-based cellular networks), IEEE 802.11 networks, and / or other suitable wireless-based networks. The network 14 may utilize any number of network communication protocols, such as Transmission Control Protocol (TCP) and Internet Protocol (IP). Although not explicitly shown in FIG. 1, the network 14 may include various network devices, such as servers, routers, network switches, and / or other network hardware devices configured to carry data over the network 14.
[0020] In FIG. 1 , the network hosting the platform 16 may be a remote network (e.g., a cloud network) that may communicate with the client device 20 via the client network 12 and the network 14. The network hosting the platform 16 provides additional computing resources to the client device 20 and / or the client network 12. For example, by utilizing the network hosting the platform 16, users of the client device 20 may build and run applications for various enterprise, IT and / or other organization-related functions. In one embodiment, the network hosting the platform 16 is implemented in one or more data centers 18, each of which may correspond to a different geographic location. Each data center 18 includes multiple virtual servers 26 (also referred to herein as application nodes, application servers, virtual server instances, application instances or application server instances), each of which may be implemented on a physical computing system, such as one electronic computing device (e.g., one physical hardware server) or across multiple computing devices (e.g., multiple physical hardware servers). Examples of virtual servers 26 include, but are not limited to, a web server (e.g., a unified Apache implementation), an application server (e.g., a unified JAVA virtual machine), and / or a database server (e.g., a unified relational database management system (RDBMS) catalog).
[0021] To utilize computing resources within the platform 16, a network operator may choose to configure the data centers 18 using a variety of computing infrastructures. In one embodiment, one or more of the data centers 18 are configured using a multi-tenant cloud architecture such that one of the server instances 26 handles requests from and serves multiple customers. A data center 18 with a multi-tenant cloud architecture mixes and stores data from multiple customers, with multiple customer instances being assigned to one of the virtual servers 26. In a multi-tenant cloud architecture, a particular virtual server 26 differentiates and separates data and other information from various customers. For example, the multi-tenant cloud architecture may assign a specific identifier for each customer to identify and separate data from each customer. In general, implementing a multi-tenant cloud architecture may result in various drawbacks, such as a failure of a particular one of the server instances 26 resulting in an outage for all customers assigned to the particular server instance.
[0022] In another embodiment, one or more of the data centers 18 are configured using a multi-instance cloud architecture to provide every customer with one or more of its own unique customer instances. For example, the multi-instance cloud architecture can provide each customer instance with its own dedicated application server and dedicated database server. In other examples, the multi-instance cloud architecture can deploy one physical or virtual server 26, such as one or more dedicated web servers, one or more dedicated application servers, and one or more database servers, for each customer instance, and / or other combinations of physical and / or virtual servers 26. In a multi-instance cloud architecture, multiple customer instances can be installed on one or more respective hardware servers, with each customer instance being assigned a portion of the physical server resources, such as computing memory, storage, and processing power. By doing so, each customer instance has its own unique software stack that provides the benefits of data isolation, relatively little downtime for customers to access the platform 16, and customer-driven upgrade schedules.
[0023] Although Figure 1 illustrates a particular embodiment of cloud computing system 10, the disclosure is not limited to the particular embodiment illustrated in Figure 1. For example, although Figure 1 illustrates platform 16 being implemented using a data center, other embodiments of platform 16 are not limited to data centers and may utilize other types of remote network infrastructure. The use and discussion of Figure 1 is merely an example to facilitate ease of explanation and elaboration and is not intended to limit the disclosure to the particular example illustrated in Figure 1.
[0024] As may be appreciated, each of the architectures and frameworks discussed with respect to FIG. 1 incorporate various types of computing systems throughout (e.g., servers, workstations, client devices, laptops, tablet computers, mobile phones, etc.). For completeness, a brief, high-level overview of components typically found in such systems is provided. As may be appreciated, this overview is intended merely to provide a high-level, generalized view of components typical in such computing systems and should not be considered limiting in terms of the components discussed or omitted from the discussion.
[0025] By way of background, it may be appreciated that the present approach may be implemented using one or more processor-based systems such as that shown in Figure 2. Similarly, applications and / or databases utilized in the present approach may be stored, utilized, and / or maintained in such processor-based systems. As may be appreciated, such a system as shown in Figure 2 may exist in a distributed computing environment, networked environment, or other multi-computer platform or architecture. Similarly, a system such as that shown in Figure 2 may be used in supporting or communicating with one or more virtual environments or computing instances in which the present approach may be implemented.
[0026] With this in mind, an exemplary computer system may include some or all of the computer components illustrated in Figure 2. Figure 2 generally illustrates a block diagram of exemplary components of a computing system 200 and their potential interconnections or communication paths, such as along one or more buses. As shown, computing system 200 may include various hardware components, such as, but not limited to, one or more processors 202, one or more buses 204, memory 206, input devices 208, a power supply 210, a network interface 212, a user interface 214, and / or other computer components that aid in performing the functions described herein.
[0027] The one or more processors 202 may include one or more microprocessors capable of executing instructions stored in memory 206. In some embodiments, instructions may be pipelined from the execution stack of each process in memory 206 and stored in an instruction cache of the one or more processors 202 for faster and more efficient processing. Additionally or alternatively, the one or more processors 202 may include application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), and / or other devices designed to perform some or all of the functions discussed herein without calling instructions from memory 206.
[0028] With regard to the other components, the one or more buses 204 include suitable electrical channels for providing data and / or power between the various components of the computing system 200. The memory 206 may include any tangible, non-transitory, computer-readable storage medium. Although illustrated as a single block in FIG. 1, the memory 206 may be implemented using multiple physical units of the same or different types in one or more physical locations. The input device 208 corresponds to a structure for inputting data and / or commands to the one or more processors 202. For example, the input device 208 may include a mouse, a touchpad, a touchscreen, a keyboard, and the like. The power source 210 can be any suitable source for powering the various components of the computing device 200, such as a line power and / or a battery source. The network interface 212 includes one or more transceivers capable of communicating with other devices over one or more networks (e.g., communication channels). The network interface 212 may provide a wired or wireless network interface. The user interface 214 may include a display configured to display text or images transmitted from the one or more processors 202. In addition to and / or instead of a display, the user interface 214 may include other devices for interfacing with a user, such as lights (eg, LEDs), speakers, etc.
[0029] With this in mind, to improve efficiency in responding to a query request, the computing system 200 as discussed in FIG. 2 may perform a query request in a particular database based on the type of operation performed by the query request. Accordingly, FIG. 3 is a flow chart of a process 300 in which the computing system 200 may select a particular database for performing the query request. Before proceeding, it should be noted that the process 300 serves as a non-limiting example related to routing a query request based on the type of operation performed by the query request. That is, the process 300 may be an example of a default routing method when limited knowledge related to performing the query request in an optimal database is available. On a periodic basis, after the computing system 200 performs a query request in a particular database (e.g., a row-oriented database) based on the process 300, the computing system 200 may perform the same query request in an alternative database (e.g., a column-oriented database) to obtain information about performing the query request in two or more database engines. Based on analyzing information regarding making query requests at different database engines, the computing system 200 may make subsequent query requests at a particular database based on determining the optimal database (e.g., time efficiency, fastest results, computational efficiency) for making the query request.
[0030] The process 300 begins with the computing system 200 receiving a query request from a client server (block 302). The operation of the query request may vary in complexity and response time (i.e., the amount of time it takes for the query request to be made). The response time for a query may also vary depending on different types of databases. Exemplary query requests may include, but are not limited to, gathering data in a tabular format, analyzing data to render a report, or filtering data in an ad-hoc manner to identify data entries and corresponding lines. The query request may be received periodically from the client server or any other suitable computing device.
[0031] When a query request is received by the computing system 200, the computing system 200 may determine a type of operation of the query request. For example, in block 304, the computing system 200 may determine whether the query request includes a filtering operation (block 304). If the query request includes a filtering operation, the computing system 200 may proceed to block 306 and send the query request to a row-oriented database in which data entries are organized and stored in row format (block 306). In some embodiments, the row-oriented database may store data according to rows in contiguous memory blocks. As a result, read and write operations may be efficiently performed for records stored in the row-oriented database due to the organization of the data corresponding to the data stored in the memory blocks. For example, the row-oriented database may be used to perform a filtering operation, which may identify records or data entries that match certain criteria. In one embodiment, the filtering operation may include reading through rows to identify values associated with particular data entries in the row-oriented database. In another embodiment, the filtering operation may include replacing a value of a data entry with another value.
[0032] Referring again to block 304, if the query request is not a filtering operation, the computing system 200 may proceed to block 308. In block 308, the computing system 200 may determine whether the query request includes an analytical operation. If the query request includes an analytical operation, the computing system 200 may proceed to block 310. In block 310, the computing system 200 may determine whether a column-oriented database includes data associated with the query request. If the column-oriented database includes the requested data, the computing system 200 may send the query request to the column-oriented database in block 312 to perform the operation indicated by the query request. A column-oriented database may include data entries organized and stored in a column format. In some embodiments, a column-oriented database may organize stored data according to their arrangement or order in columns in adjacent memory blocks. Thus, certain types of analytical processing may be performed more efficiently as compared to using a row-oriented database. Although read and write operations may be slower in a column-oriented database compared to a row-oriented database, a column-oriented database may be well suited for performing operations that are applicable to an entire data set, such as analytical operations. For example, analytical operations may involve aggregation across many rows and columns. Examples of analytical operations may include aggregating data entries into lists, tables, or groups, and rendering reports from the data entries and lines.
[0033] Referring again to block 310, if the columnar database does not contain data related to the query request, the computing system 200 may proceed to block 314 and send the query request to a replicator component. In some embodiments, the replicator component may be deployed as a service on the same server where the columnar database is deployed. The replicator component may have access via source credentials to the initial database and target credentials to the target database. In one embodiment, the initial database may be a row-oriented database, while the target database may be a columnar database. For example, the replicator component may have permissions to read the query request and data entries from the initial database and copy the data entries to the target database in a columnar format. After the relevant data entries related to the query request are copied from the initial database to the target database, the query request may be sent to the target database (e.g., the columnar database).
[0034] As discussed above, after computing system 200 receives a query request, computing system 200 may determine a type of operation of the query request. If the query request involves updating a columnar database, computing system 200 performs process 400. FIG. 4, a flowchart of process 400, illustrates in more detail how computing system 200 updates a columnar database. Process 400 begins upon receiving an indication of a modification to one or more data entries of the columnar database (block 402). The modification may involve an update or change in a value or line to one or more data entries of the columnar database. Based on the indication of the modification to the value of one or more data entries, computing system 200 may identify a particular data entry of the columnar database to be updated (block 404). In some embodiments, the modification may relate to an insert, delete, or update operation performed on one or more data entries. Examples of modifications may include causing an update to a different table, automatically generating or transforming a value or line for the data entry to be updated, or invoking a function to perform a task such as issuing an alert.
[0035] After one or more data entries to be updated are identified, the computing system 200 may delete rows having the updated data entries via batch processing after receiving an indication that modifications to the data entries have been received (block 406). Batch processing may include a process involving collecting and storing data for processing at a scheduled time when a threshold amount of data has accumulated, rather than processing each data entry one at a time. In one embodiment, a series of query requests or jobs may be executed on a computer with minimal manual intervention as a result of batch processing techniques. In addition, batch processing may allow query requests or jobs to be processed at a scheduled time when computing resources are expected to be used less frequently or have a small number of jobs to process compared to the average amount of jobs the database is expected to process in a given period of time. For example, batch processing may involve report generation and data format conversion.
[0036] As discussed above, column-oriented databases may not perform read and write operations efficiently. However, due to its column-oriented nature, to perform a read or write operation, the column-oriented database, computing system 200 may read through a number of memory blocks before performing an equivalent row-oriented update. This process may be time consuming, especially if the column-oriented database contains a large number of data entries. Instead, to implement the update more efficiently, computing system 200 may remove the row of the memory block associated with the data entry to be updated from the memory block, and computing system 200 may replace the memory block with a new row consisting of the updated data entry, at block 406.
[0037] After performing the delete operation to delete the rows having the updated data entries, the computing system 200 may form one or more separate delete data structures (block 408). These separate delete data structures may represent data previously stored in the deleted rows and may be located in a first storage section of a memory component (e.g., memory block) of the column-oriented database. In place of the deleted rows, the computing system 200 may insert new rows having the updated data entries or data entries whose values have been changed via batch processing (block 410). Thereafter, within the first storage section, the computing system 200 may splice the separate delete data structures with data entries associated with previously executed query requests (e.g., updates, modifications) (block 412).
[0038] In block 414, the computing system 200 may permanently delete the separate deletion data structure of the first storage section on a periodic basis (e.g., monthly, daily), such that the first storage section no longer contains the separate deletion data structure after the deletion operation is performed. After the separate deletion data structure is deleted, the computing system 200 may direct query requests to the second storage section of the columnar database (block 416). Thereafter, the computing system 200 may direct data input of new query requests to the second storage section, while the computing system 200 permanently removes the first storage section from the memory component (block 418). This maintains the separate deletion data structure so that the storage section of the columnar database is efficiently utilized and additional sections of the columnar database are available for data storage and query operations.
[0039] As described above, a query request that includes an analytical operation may be directed to a column-oriented database. However, in some examples, a query request directed to a column-oriented database may be rerouted to a row-oriented database or may be blacklisted. If the query request is part of a predefined list of blacklist requests, the query request may be sent to a row-oriented database. The predefined list of blacklist requests may include a date trend request, a time trend request, a point query, a large field projection, or any combination thereof. If the response time of the query request in the row-oriented database is not less than a threshold amount of time X, the query may be performed in the column-oriented database. However, if the query fails in the column-oriented database due to an issue such as a syntax error or a timeout, it may be blacklisted or rerouted to the row-oriented database. Blacklisting a query request or rerouting a query request to a row-oriented database may involve determining that the response time of a query request performed in the column-oriented database is greater than a threshold amount of time Y. Another example of blacklisting a query request or rerouting a query request to a row-oriented database may involve the sum of a response time of a query request made in a column-oriented database and a threshold amount of time Z being greater than the response time of a query request made in a row-oriented database. A blacklisted query request may also be periodically reevaluated again. If blacklisting is disabled, a blacklisted query request may be removed from the blacklist.
[0040] The process by which computing system 200 may blacklist a query request intended to be performed on a column-oriented database is shown in Figure 5. For example, Figure 5 is a flowchart of a process 500 that computing system 200 may utilize to determine whether a column-oriented query request should be blacklisted and therefore ignored or rerouted to a row-oriented database. Process 500 begins with computing system 200 receiving a column-oriented query request (block 502). As mentioned in Figure 3, the column-oriented query request may include an analytical operation that may involve aggregating or grouping data.
[0041] The computing system 200 may follow steps in process 530 to determine whether the query request is sent to a row-oriented database (block 516) and to determine whether the query request is blacklisted (block 518). Blacklisting is a mechanism for controlling which entities (e.g., query requests) are allowed access to a computing entity (e.g., a database). For example, a particular query request that the computing system 200 deems to be blacklisted may be denied access to a particular database. In block 504, the computing system 200 may determine whether the query request is part of a predefined list of blacklist requests (block 504). The predefined list of blacklist requests may include date trend requests, time trend requests, point queries, large field projections, or any combination thereof. In one embodiment, performing a point query may provide an analysis for one data entry in the database, whereas a large field projection may control which fields of the database may be displayed in response to the query request. If the query request is part of a predetermined list of blacklist requests, the computing system 200 may send the query request to a row-oriented database (block 516), which may be more suitable for operations that are part of the predetermined list.
[0042] If the query request is not part of the predefined list, the computing system 200 may determine whether a response time for making a query request in the row-oriented database is less than a threshold amount of time X (block 506). In some embodiments, the threshold amount of time X may be configurable and may be set to 100 milliseconds, 1 second, 10 seconds, or any suitable time period. If a response time for making a query request in the row-oriented database is expected to be greater than the threshold amount of time X, the computing system 200 may blacklist the query request by updating the predefined list of query requests to include query requests in response to expected response times less than the threshold amount of time X (block 518). In another example, the computing system 200 may query the row-oriented database based on expected response times of query requests less than the threshold amount of time X (block 516).
[0043] Otherwise, if the response time for making the query request in the row-oriented database is expected to be less than the threshold amount of time X, the computing system 200 may proceed to block 508 and make the query request in the column-oriented database. As a result, the computing system 200 may check whether the query request fails in the column-oriented database (block 510). If the query request does in fact fail in the column-oriented database, the computing system 200 may blacklist the query request by updating a predefined list of query requests to include the query request in response to the query request that fails in the column-oriented database (block 518). In another embodiment, the computing system 200 may query the row-oriented database based on the query request that fails in the column-oriented database (block 516). In one embodiment, the query request may fail in the column-oriented database due to a syntax error or a timeout. For example, misplacing a character in an operation may cause a syntax error, thereby preventing the query request from being executed. In another example, the server may time out waiting to execute the query request.
[0044] At block 510, if the query request is not failed in the column-oriented database, the computing system 200 may determine whether the query request satisfies the conditions of blocks 512 and 514. At block 512, if the expected response time of the query request in the column-oriented database is greater than a threshold amount of time Y, the computing system 200 may blacklist the query request by updating a predefined list of query requests to include query requests responsive to expected response times of query requests greater than the threshold amount of time Y (block 518). For example, the computing system 200 may query the row-oriented database based on expected response times of query requests greater than the threshold amount of time Y (block 516).
[0045] If the expected response time of the query request in the column-oriented database is less than the threshold amount of time Y, the computing system 200 proceeds to block 514. If, at block 514, the expected response time of the query request in the column-oriented database is greater than the response time of the query request in the row-oriented database by the threshold amount of time Z, the computing system 200 blacklists the query request by updating a predefined list of query requests to include the query request in response to the sum of the expected response time and the threshold amount of time Z being greater than the response time of the query request in the row-oriented database (block 518). In another example, the computing system 200 may query the row-oriented database based on the sum of the expected response time and the threshold amount of time Z being greater than the response time of the query request in the row-oriented database (block 516).
[0046] Both time threshold amounts Y and Z may be configurable and may be set to 2 seconds, 5 seconds, or any suitable time period. The expected response time of a query request in a column-oriented database may be calculated based on a model or simulation of the query request implemented in the column-oriented database. The average response time calculated based on the simulation may be set as the expected response time. Similarly, the expected response time of a query request in a row-oriented database may be calculated based on a model or simulation of the query request implemented in the row-oriented database.
[0047] In one example, if the computing system 200 has not executed a query request in the row-oriented database, the processor may lack data associated with the query request made in the row-oriented database and the query request may be blacklisted. The computing system 200 may then send the now blacklisted query request to the row-oriented database to retrieve the associated data before performing process 530.
[0048] Otherwise, if the expected response time of the query request in the column-oriented database is less than the response time of the query request in the row-oriented database by the threshold amount of time Z, the computing system 200 may wait for the threshold amount of time W (block 520). The threshold amount of time W is configurable and may be set to 24 hours or any suitable time period. After waiting the threshold amount of time W, the computing system 200 may search for the blacklisted query request to reevaluate the blacklisted query request (block 522). In some examples, the computing system 200 may search for the recently blacklisted query request to reevaluate. In another example, the computing system 200 may search for the query request that has been blacklisted twice or at least twice or more times to reevaluate. The computing system 200 may even search for the query request that is a combination of recently blacklisted and blacklisted more than once. The computing system 200 may reevaluate the blacklisted query request based on the steps in the process 530 (block 524). In block 526, the computing system 200 determines whether the decision to blacklist the query request is valid. If blacklisting is invalid, the blacklisted query request may be removed from the blacklist (block 528). Otherwise, if blacklisting is valid, the blacklisted query request may be ignored and remain blacklisted (block 518). In some examples, if a blip, error, or bug in the backend of the computing system 200 causes unintended blacklisting, the computing system 200 may remove the blacklisted query request from the blacklist.
[0049] It should be understood that the particular embodiments described above are shown by way of example, and that these embodiments may be subject to various modifications and alternative forms. The claims are not intended to be limited to the particular forms disclosed, but are intended to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the disclosure.
[0050] The technology provided and claimed herein refers to and applies to material objects and concrete examples of a practical nature that demonstrably improve the art, and is therefore not abstract, intangible, or purely theoretical. Moreover, in the event that any claim appended to the end of this specification contains one or more elements designated as "means for [performing] [a function]" or "steps for [performing] [a function]," it is intended that such elements be construed under 35 U.S.C. 112(f). However, in the event of any claim containing an element designated in any other format, it is intended that such elements not be construed under 35 U.S.C. 112(f).
Claims
1. receiving, by one or more processors, a query request associated with a set of data entries; pursuant to a determination that the query request corresponds to a filtering operation to identify one or more data entries of the set of data entries that match one or more conditions defined by the query request, the one or more processors querying a row-oriented database based on the query request; and in accordance with a determination that the query request corresponds to an analytical operation including executing one or more algorithms on the set of data entries, the one or more processors querying a column-oriented database based on the query request.
2. The method of claim 1 , wherein the filtering operation includes identifying the set of data entries in the row-oriented database.
3. The method of claim 1 , wherein the filtering operation comprises replacing one or more values associated with the set of data entries in the row-oriented database.
4. The method of claim 1 , wherein the analysis operation includes aggregating one or more data entries related to the set of data entries in the column-oriented database.
5. The method of claim 4 , wherein the analyzing operation includes generating a report based on results of the collecting.
6. The method of claim 4 , wherein the aggregating comprises executing one or more additional algorithms on the one or more data entries associated with the set of data entries in the columnar database.
7. the one or more processors, in response to detecting an absence of the one or more data entries of the set of data entries in the column-oriented database, sending the query request to a replicator component; 2. The method of claim 1, wherein the replicator component is configured to copy the one or more data entries of the set of data entries from the row-oriented database to the column-oriented database in response to receiving the query request.
8. the one or more processors querying the row-oriented database in response to the query request that includes the filtering operation and then querying the column-oriented database; analyzing, by the one or more processors, a first response performance in responding to the query request made on the row-oriented database and a second response performance in responding to the query request made on the column-oriented database; 2. The method of claim 1, further comprising: the one or more processors making a subsequent query request including the filtering operation in the row-oriented database or the column-oriented database based on the first response performance and the second response performance.
9. the one or more processors querying the column-oriented database and then querying the row-oriented database in response to the query request that includes the analysis operation; analyzing, by the one or more processors, a first response performance in responding to the query request made on the row-oriented database and a second response performance in responding to the query request made on the column-oriented database; 2. The method of claim 1, further comprising: the one or more processors making a subsequent query request including the analysis operation in the row-oriented database or the column-oriented database based on the first response performance and the second response performance.
10. pursuant to a determination that the query request corresponds to one of a predetermined list of query requests, querying the row-oriented database based on the query request; The method of claim 1 , wherein the predetermined list comprises a blacklist of query requests that are denied access to the column-oriented database.
11. The method of claim 9 , wherein the query request corresponds to the analysis operation.
12. A processor; accessible by the processor and, when executed by the processor, causing the processor to receiving a query request associated with a set of data entries; pursuant to a determination that the query request corresponds to a filtering operation to identify one or more data entries of the set of data entries that match one or more conditions defined by the query request, querying a row-oriented database based on the query request; Querying a column-oriented database based on the query request in accordance with a determination that the query request corresponds to an analytical operation including executing one or more algorithms on the set of data entries; and a memory having stored therein one or more programs that cause the system to perform operations including the steps of:
13. The system of claim 12 , wherein the filtering operation includes identifying the set of data entries in the row-oriented database.
14. The system of claim 12 , wherein the filtering operation comprises replacing one or more values associated with the set of data entries in the row-oriented database.
15. The system of claim 12 , wherein the analysis operation includes aggregating one or more data entries related to the set of data entries in the column-oriented database.
16. pursuant to a determination that the query request corresponds to one of a predetermined list of query requests, querying the row-oriented database based on the query request; The system of claim 12 , wherein the predetermined list comprises a blacklist of query requests that are denied access to the column-oriented database.
17. The system of claim 16 , wherein the query request corresponds to the analysis operation.
18. When executed by one or more processors, the one or more processors are receiving a query request associated with a set of data entries; pursuant to a determination that the query request corresponds to a filtering operation to identify one or more data entries of the set of data entries that match one or more conditions defined by the query request, querying a row-oriented database based on the query request; Querying a column-oriented database based on the query request in accordance with a determination that the query request corresponds to an analytical operation including executing one or more algorithms on the set of data entries; A tangible, non-transitory computer-readable storage medium having stored thereon one or more programs that cause the device to perform operations including:
19. The actions to be performed by the one or more processors include: querying the row-oriented database based on the query request in accordance with a determination that the query request corresponds to one of a predetermined list of query requests; 20. The tangible, non-transitory computer-readable storage medium of claim 18, wherein the predetermined list comprises a blacklist of query requests that are denied access to the column-oriented database.
20. 20. The tangible, non-transitory computer-readable storage medium of claim 19, wherein the query request corresponds to the analysis operation.
Citation Information
Patent Citations
Data management system and data management method
JP2019021062A
Query handling in databases with replicated data
US20080281784A1
