Query handling in databases with replicated data
First Claim
Patent Images
1. A database access method comprising:
- (1) receiving a database query relating to data which is stored in each of a first database and a second database, wherein the first database and the second database are two separate and discrete databases, wherein the first database is managed by a first database management system that includes a first query processor configured to execute queries directed to the first database, wherein the second database is managed by a second database management system that is distinct from the first database management system, the second database management system including a second query processor configured to execute queries directed to the second database, wherein at least one attribute of the data stored in the first database is stored in columnar form, and wherein none of the attributes of the data stored in the second database are stored in columnar form;
(2) determining, externally from each of the first database management system and the second database management system, if the database query is to be executed on the first database or the second database based on the processing required by the database query and the form in which data is stored by the first and second database management systems, the determining comprising, checking if the database query involves computation of an aggregation and determining that the database query is to be executed on the first database responsive to the database query involving computation of an aggregation; and
(3) providing the database query to the first query processor or the second query processor based on the determination made in operation (2).
8 Assignments
0 Petitions
Accused Products
Abstract
The same data is stored in at least two different database management systems (DBMS'"'"'s), including a columnar DBMS (320.2) and a non-columnar (e.g. row-oriented) DBMS (320.1). The columnar DBMS may provide fast responses to queries involving aggregation, and such queries can be routed to the columnar DBMS. A query may be routed to the non-columnar DBMS if for example the query execution involves only small DBMS tables on the non-columnar DBMS. In some situations, an execution time estimate can be obtained from each DBMS, and the query is routed to the DBMS providing the shortest estimate.
-
Citations
13 Claims
-
1. A database access method comprising:
-
(1) receiving a database query relating to data which is stored in each of a first database and a second database, wherein the first database and the second database are two separate and discrete databases, wherein the first database is managed by a first database management system that includes a first query processor configured to execute queries directed to the first database, wherein the second database is managed by a second database management system that is distinct from the first database management system, the second database management system including a second query processor configured to execute queries directed to the second database, wherein at least one attribute of the data stored in the first database is stored in columnar form, and wherein none of the attributes of the data stored in the second database are stored in columnar form; (2) determining, externally from each of the first database management system and the second database management system, if the database query is to be executed on the first database or the second database based on the processing required by the database query and the form in which data is stored by the first and second database management systems, the determining comprising, checking if the database query involves computation of an aggregation and determining that the database query is to be executed on the first database responsive to the database query involving computation of an aggregation; and (3) providing the database query to the first query processor or the second query processor based on the determination made in operation (2). - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system configured to execute database queries, the system comprising:
-
one or more processors, configured to execute one or more computer program modules, the computer program modules comprising; a first database management system that manages a first database, wherein at least one attribute of the data within the first database is stored by the first database management system in columnar form, the first database management system including a first query processor configured to execute queries directed to the first database; a second database management system that is distinct from the first database management system, the second database management system managing a second database, wherein the first database and the second database are two separate and discrete databases, and wherein no attribute of the data within the second database is stored by the second database management system in columnar form, the second database management system including a second query processor configured to execute queries directed to the second database; and a query router that is external to each of the first database management system and the second database management system, the query router being configured to receive a database query for data stored in each of the first database and the second database, to determine whether the database query should be executed by the first query processor on the first database or by the second query processor on the second database based on the processing required by the database query and the form in which data is stored by the first and second database management systems, and to route the database query to the appropriate one of the first query processor or the second query processor, wherein the query router determines if the database query involves computation of an aggregation and routes the database query to the first query processor responsive to the database query involving computation of an aggregation. - View Dependent Claims (10, 11)
-
-
12. A system configured to route database queries, the system comprising:
one or more processors, configured to execute one or more computer program modules, the computer program modules comprising; a query router configured to communicate with (i) a first database management system that manages a first database, the first database management system including a first query processor configured to execute queries directed to the first database, and (ii) a second database management system that manages a second database, the second database management system including a second query processor configured to execute queries directed to the second database, wherein the first database and the second database are two separate and discrete databases, wherein the first database management system is distinct from the second database management system, and the query router is external to both of the first and second database management systems, wherein the first database management system stores at least one attribute of the data in the first database in columnar form, and the second database management system does not store any attributes of the data in the second database in columnar form, and wherein the query router is further configured to receive a database query for data stored in each of the first database and the second database, to determine whether the database query should be executed by the first query processor on the first database or by the second query processor on the second database based on the processing required by the database query and the form in which data is stored by the first and second database management systems, and to route the database query to the appropriate one of the first database management system or the second database management system, wherein the query router determines if the database query involves computation of an aggregation and routes the database query to the first database management system responsive to the database query involving computation of an aggregation. - View Dependent Claims (13)
Specification