A system for implementing virtual columns in a column store database is provided. In some implementations, the system performs operations including accessing a database table in a column store database system, the database table comprising at least one virtual column, the column store database system storing data in a column-oriented structure. The operations further include calculating a value for the at least one virtual column based on at least one existing column of the database table, the calculated value mapped to a row identifier associated with a row of the database table. The operations further include providing, in response to a query, the calculated value to a user interface, the query associated with the row identifier.

Patent
   10762068
Priority
Apr 04 2018
Filed
Apr 04 2018
Issued
Sep 01 2020
Expiry
May 02 2039
Extension
393 days
Assg.orig
Entity
Large
0
39
currently ok
10. A method comprising:
accessing, by at least one processor, a database table in a column store database system, the database table comprising at least one virtual column, the column store database system storing data in a column-oriented structure;
calculating, by the at least one processor, a value for the at least one virtual column based on at least one existing column of the database table, the calculated value mapped to a row identifier associated with a row of the database table, wherein calculating the value comprises:
retrieving data values from a plurality of columns of the database table, the data values located in a same row of the database table, and
mapping the row identifier of the same row to the data values from the plurality of columns; and
providing, by the at least one processor and in response to a query, the calculated value to a user interface, the query associated with the row identifier.
18. A non-transitory computer readable medium storing instructions which, when executed by at least one processor, cause operations comprising:
accessing a database table in a column store database system, the database table comprising at least one virtual column, the column store database system storing data in a column-oriented structure;
calculating a value for the at least one virtual column based on at least one existing column of the database table, the calculated value mapped to a row identifier associated with a row of the database table, wherein calculating the value comprises:
retrieving data values from a plurality of columns of the database table, the data values located in a same row of the database table, and
mapping the row identifier of the same row to the data values from the plurality of columns; and
providing, in response to a query, the calculated value to a user interface, the query associated with the row identifier.
1. A system, comprising:
at least one data processor; and
at least one memory storing instructions which, when executed by the at least one data processor, result in operations comprising:
accessing a database table in a column store database system, the database table comprising at least one virtual column, the column store database system storing data in a column-oriented structure;
calculating a value for the at least one virtual column based on at least one existing column of the database table, the calculated value mapped to a row identifier associated with a row of the database table, wherein calculating the value comprises:
retrieving data values from a plurality of columns of the database table, the data values located in a same row of the database table, and
mapping the row identifier of the same row to the data values from the plurality of columns; and
providing, in response to a query, the calculated value to a user interface, the query associated with the row identifier.
2. The system of claim 1, wherein calculating the value comprises:
retrieving metadata of a logical wrapper, the logical wrapper associated with a plurality of columns of the database table, the metadata located in a same row of the database table; and
mapping the row identifier of the same row to the metadata from the plurality of columns.
3. The system of claim 1, wherein the calculated value is based on metadata of a logical wrapper associated with the at least one existing column.
4. The system of claim 1, wherein the operations further comprise:
receiving the query; and
optimizing the query based on a partition identifier of a partition of the database table.
5. The system of claim 4, wherein optimizing the query based on the partition identifier comprises joining, based on a first partition identifier of the first table and a second partition identifier of the second table, at least a portion of a first table with at least a portion of a second table to form a joined table, the calculated value of the at least one virtual column comprising the first partition identifier and the second partition identifier.
6. The system of claim 1, wherein the calculated value comprises at least one of a creation timestamp, a last locked timestamp, and/or a partition identifier.
7. The system of claim 1, wherein the providing the calculated value to the user interface comprises providing, by an application programming interface, the calculated value to the user interface.
8. The system of claim 1, wherein the row identifier comprises a hash value.
9. The system of claim 1, wherein the operations further comprise:
receiving the query, the query specifying the at least one virtual column and a threshold timestamp, wherein providing the calculated value to the user interface comprises providing one or more rows of a table associated with a creation timestamp that occurs after the threshold timestamp.
11. The method of claim 10, wherein calculating the value comprises:
retrieving metadata of a logical wrapper, the logical wrapper associated with a plurality of columns of the database table, the metadata located in a same row of the database table; and
mapping the row identifier of the same row to the metadata from the plurality of columns.
12. The method of claim 10, wherein the calculated value is based on metadata of a logical wrapper associated with the at least one existing column.
13. The method of claim 10, further comprising:
receiving the query; and
optimizing the query based on a partition identifier of a partition of the database table.
14. The method of claim 13, wherein optimizing the query based on the partition identifier comprises joining, based on a first partition identifier of the first table and a second partition identifier of the second table, at least a portion of a first table with at least a portion of a second table to form a joined table, the calculated value of the at least one virtual column comprising the first partition identifier and the second partition identifier.
15. The method of claim 10, wherein the calculated value comprises at least one of a creation timestamp, a last locked timestamp, and/or a partition identifier.
16. The method of claim 10, wherein the providing the calculated value to the user interface comprises providing, by an application programming interface, the calculated value to the user interface.
17. The method of claim 10, wherein the row identifier comprises a hash value.

The subject matter described herein relates generally to database processing and, more specifically, to query execution and optimizing database performance in column store databases.

A database may be configured to store a plurality of electronic data records. The database may be coupled with a database management system (DBMS) that supports a variety of database operations for accessing the data records held in the database including, for example, structured query language (SQL) queries and/or the like. Data may be stored in the DBMS in a column store format in column-oriented storage blocks. Data may also be stored in the DBMS in a row store format in row-oriented storage blocks.

Systems, methods, and articles of manufacture, including computer program products, are provided for data management. In one aspect, there is provided a system. The system may include at least one data processor and at least one memory. The at least one memory may store instructions that result in operations when executed by the at least one data processor. The operations may include accessing a database table in a column store database system, the database table comprising at least one virtual column, the column store database system storing data in a column-oriented structure. The operations may further include calculating a value for the at least one virtual column based on at least one existing column of the database table, the calculated value mapped to a row identifier associated with a row of the database table. The operations may further include providing, in response to a query, the calculated value to a user interface, the query associated with the row identifier.

In another aspect, there is provided a method. In another aspect, there is provided a method. The method includes accessing a database table in a column store database system, the database table comprising at least one virtual column, the column store database system storing data in a column-oriented structure. The method further includes calculating a value for the at least one virtual column based on at least one existing column of the database table, the calculated value mapped to a row identifier associated with a row of the database table. The method further includes providing, in response to a query, the calculated value to a user interface, the query associated with the row identifier.

In another aspect, there is provided a non-transitory computer program product storing instructions which, when executed by at least one data processor, causes operations which include accessing a database table in a column store database system, the database table comprising at least one virtual column, the column store database system storing data in a column-oriented structure. The operations may further include calculating a value for the at least one virtual column based on at least one existing column of the database table, the calculated value mapped to a row identifier associated with a row of the database table. The operations may further include providing, in response to a query, the calculated value to a user interface, the query associated with the row identifier.

In some variations, one or more features disclosed herein including the following features may optionally be included in any feasible combination. Calculating the value may include retrieving data values from a plurality of columns of the database table, the data values located in a same row of the database table. Calculating the value may further include mapping the row identifier of the same row to the data values from the plurality of columns. Calculating the value may include retrieving metadata of a logical wrapper, the logical wrapper associated with a plurality of columns of the database table, the metadata located in a same row of the database table. Calculating the value may further include mapping the row identifier of the same row to the metadata from the plurality of columns. The calculated value may be based on metadata of a logical wrapper associated with the at least one existing column. The operations may further include receiving the query and optimizing the query based on a partition identifier of a partition of the database table. Optimizing the query may include joining, based on a first partition identifier of the first table and a second partition identifier of the second table, at least a portion of a first table with at least a portion of a second table to form a joined table, the calculated value of the at least one virtual column comprising the first partition identifier and the second partition identifier. The calculated value may include at least one of a creation timestamp, a last locked timestamp, and/or a partition identifier. The calculated value may be provided to the user interface by an application programming interface. The row identifier may include a hash value. The operations may further include receiving the query, the query specifying the at least one virtual column and a threshold timestamp, wherein providing the calculated value to the user interface comprises providing one or more rows of a table associated with a creation timestamp that occurs after the threshold timestamp.

Implementations of the current subject matter may include methods consistent with the descriptions provided herein as well as articles that include a tangibly embodied machine-readable medium operable to cause one or more machines (e.g., computers, etc.) to result in operations implementing one or more of the described features. Similarly, computer systems are also described that may include one or more processors and one or more memories coupled to the one or more processors. A memory, which may include a non-transitory computer-readable or machine-readable storage medium, may include, encode, store, or the like one or more programs that cause one or more processors to perform one or more of the operations described herein. Computer implemented methods consistent with one or more implementations of the current subject matter may be implemented by one or more data processors residing in a single computing system or multiple computing systems. Such multiple computing systems may be connected and may exchange data and/or commands or other instructions or the like via one or more connections, including, for example, to a connection over a network (e.g. the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, or the like), via a direct connection between one or more of the multiple computing systems, etc.

The details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, and from the claims. While certain features of the currently disclosed subject matter are described for illustrative purposes in relation to web application user interfaces, it should be readily understood that such features are not intended to be limiting. The claims that follow this disclosure are intended to define the scope of the protected subject matter.

The accompanying drawings, which are incorporated in and constitute a part of this specification, show certain aspects of the subject matter disclosed herein and, together with the description, help explain some of the principles associated with the disclosed implementations. In the drawings,

FIG. 1 depicts a functional block diagram of a system in which features consistent with the described subject matter may be implemented;

FIG. 2 depicts an example of a column store database table, in accordance with some example implementations;

FIG. 3 depicts an example of virtual columns of the column store database table, in accordance with some example implementations;

FIG. 4 depicts an example of a virtual column of a table, in accordance with some example implementations;

FIG. 5 depicts a block diagram illustrating a computing apparatus, in accordance with some example implementations; and

FIG. 6 depicts a flowchart illustrating a process for using virtual columns in a column store database management system, in accordance with some example implementations.

When practical, similar reference numbers denote similar structures, features, or elements.

Database tables are generally stored by column or by row. Column store databases may vertically partition a database into a collection of individual data columns that are stored separately in a column-oriented structure. In a column store database management system (DBMS), adding new columns to a table may be easy and involve low processing. In row store DBMS, data is partitioned into row blocks are stored separately. In a row store DBMS, adding a column to a table may involve increased memory usage and processing. For example, adding the column to a row store DBMS may involve copying a row to a memory block in order to add the column to the copied row. Accordingly, while adding a column to a table in a column store DBMS may not involve much additional processing, adding a column to a table in a row store DBMS may be expensive from a memory and processing standpoint.

A column-oriented DBMS may outperform row-oriented systems on read-intensive tasks, such as business intelligence, customer relationship management, and other data warehousing tasks. Such queries typically involve searching within a subset of the attributes of the database. Because a column-oriented system may accommodate reading only the subset of columns relevant to a given query, read-intensive performance may be improved in a column-oriented system over a row-oriented system, which generally reads entire tuples (i.e. including data of all attributes) into memory.

In the row store DBMS, values correspond to a logical “row” of data, and therefore of different attributes, are stored contiguously within one or more records in physical storage (i.e. in memory, on disk, etc.), followed by records corresponding to other “rows” of data. When accessing or reading data in the row store DBMS, retrieving all data from a single row may be more efficient than retrieving row data from a column store DBMS because the data is located in a single location or row which may minimize disk seeks and processing time. For example, reading an entire row from a column store DBMS table may involve scanning every column of the table in order to read the data values of the row. In some example embodiments, column store DBMS tables may implement a virtual column to expose row specific data for faster reading and/or querying of data in a column store DBMS. Exposing row specific data may beneficially allow a user or processor to filter specific data from the table, find data-specific issues, correct broken tables, and/or the like.

A virtual column may be defined as a table column whose value is automatically calculated using other existing columns values, or another deterministic expression. In some aspects, the virtual column may not store data in physical storage but rather points to physical data of a column and/or to metadata of a logical wrapper. The virtual column may also be queried to retrieve the metadata information from database tables that may not typically be assessable to a user. For example, the virtual column may be able to retrieve operational data, such as creation timestamps, deletion timestamps, lock timestamps, and/or other data. In some aspects, the query results with this metadata may be returned to the user. This typically internal information may enable opportunities for application optimizations or completely new scenarios.

FIG. 1 illustrates a functional block diagram of a system 100 in which features consistent with the described subject matter may be implemented. As illustrated, the system 100 may include a computing system 110 capable of communicating with one or more user access devices 140. In some aspects, the computing system 110 may utilize one or more interfaces 118 for communication. Communication among the devices of the system 100 may be through the use of direct communications, such as through the use of a wireless connection like Bluetooth, near-field communication (NFC), ZigBee, and/or the like, and/or a hard wire connection such as universal serial bus (USB). Communication may additionally or alternatively occur through indirect communications, such as over a network 160 (e.g., a local area network, a wide area network, a wireless network, the Internet, or the like).

Communication over the network 160 may utilize a network access device 165, such as a base station, a Node B, an evolved Node B (eNB), an access nodes (ANs), a hotspot, and/or the like. In some aspects, any of the user access device 140 may include personal computers, desktop computers, laptops, workstations, cell phones, digital media devices, smart phones, smart watches, PDAs (personal digital assistants), tablets, hardware/software servers, sensors, sensor devices, terminals, access terminals (ATs), mobile stations, user equipment (UE), subscriber units, and/or the like.

As illustrated, the computing system 110 may include core software 112 and/or one or more software modules 114. The core software 112 may provide one or more features of a high-level programming software system. The software modules 114 may provide more specialized functionality. For example, the core software 112 and/or software modules 114 may include database management features, such as those described herein.

In some aspects, the core software 112 or other similar software/hardware may be capable of accessing a database layer, such as the database 120, which includes at least one table 122, which may in turn include at least one virtual column 123. The database table 122 may store any kind of data, including transactional data, metadata, timestamp data, lock data, access data, master data, and/or the like.

In some aspects, one or more of the software modules 114 may be configured to utilize data stored in the memory 116, data stored in the database 120, and/or data otherwise accessible to the computing system 110. As further illustrated, the computing system 110 may be capable of utilizing external software 130. In some aspects, the external software 130 may provide additional functionalities or services which may not be available at the computing system 110. In some aspects, the external software 130 may include cloud services. In some aspects, the computing system 110 may aggregate or otherwise provide a gateway via which users may access functionality provided the external software 130. In some implementations, the database 120 and/or the external software 130 may be located across one or more servers, and/or communication among the computing system 110, the database, and/or the external software 130 may occur over the network 160.

At least a portion of the illustrated system 100 may include hardware and/or software that interacts with a database, users, and/or other software applications for defining, creating, and/or updating data, for receiving, handling, optimizing, and/or executing database queries, and/or for running software/applications (e.g., software modules 114, and/or external software 130) which utilize a database. In some aspects, the database 120 may be a structured, organized collection of data, such as schemas, tables, queries, reports, views, and/or the like, which may be processed for information. The database 120 may be physically stored in a hardware server or across a plurality of hardware servers. The database 120 may include a row store database or a column store database. In some aspects, the computing system 110 may be configured to perform OLTP (online transaction processing) and/or OLAP (online analytical processing), which may include complex analytics and tasks. Any of the data stored in the database 120 may additionally or alternatively be stored in the memory 116, which may be required in order to process the data.

In some aspects, the core software 112 may be configured to load the information from the database 120 to memory 116 (e.g., main memory) in response to some event and/or determination. For example, in some aspects, data may be retrieved from the database 120 and/or loaded into the memory 116 based on receipt of a query instantiated by a user or computer system, which may occur through one or more user access device 140, external software 130, and/or the like. In some implementations, at least a portion of the data for the database 120 may reside in-memory (e.g., in random-access memory (RAM)), within the memory 116, for example. In some aspects, data stored in-memory may be accessed faster than data stored in long term storage (also referred to herein as “on disk”).

Although the database 120 may be illustrated as described as being separate from the computing system 110, in various implementations, at least a portion of the database 120 may be located within the memory 116 of the computing system 110. Procedures for using virtual columns, such as virtual column 123, to expose row specific details when executing queries in column store databases are described herein.

FIG. 2 depicts an example of a column store database table 200, in accordance with some example implementations. As shown in FIG. 2, the database table 200 includes rows 1-1000 and columns 202-207 storing physical data 212-217, respectively. The database table 200 further includes logical wrappers 222-227 for the columns 202-207, respectively.

In some aspects, the logical wrappers 222-227 comprise an abstraction layer which wraps around the physical data 212-217 in the columns 202-207. The logical wrappers may include metadata, properties, attributes, and/or the like that defines or specifies what the physical data 212-217 is. For example, the physical data 212 stored in column 202 may be name values and the logical wrapper 222 may specify a data type of the name values, such as integer or string values. The physical data 212-217 may include attributes, values, and/or the like. In some aspects, this data may include names, product identifiers, dates, locations, and/or other types of data.

In some implementations, use of the virtual columns may allow an application program interface (API) to expose and/or enable access to at least a portion of the physical data 212-217 and/or at least a portion of the logical wrappers 222-227 of a given row of the database table 200. In some aspects, the API may be executed by the computing system 110 of FIG. 1 and may be used to query the columns of the database table 200 and provide the query results to a user.

FIG. 3 depicts an example of virtual columns 331-333 of the column store database table 200, in accordance with some example implementations. As shown in FIG. 3, virtual column 331 may be configured to map a row identifier (ID) of the table 200 to calculated values of the virtual column 331. For example, the virtual column 331 may be configured to reference at least a portion of the physical data 212-217 and/or the logical wrappers 222-227, such as the data of a given row of the database table 200. The virtual column 331 may also be queried to return the calculated values to a user. As shown in FIG. 3, the API may then map the row ID to the calculated value of the virtual column 331.

For example, column 202, 203, and 204 may include data relating to a user's name, address, and telephone number, respectively. In a typical column store database, a user querying for all the contact information for a given person (i.e. row) would require scanning all the contents of columns 202, 203, and 204 to return the name, address, and telephone number for the queried person. In some aspects, virtual column 331 can be configured to return entire row data in response to a query. For example, virtual column 331 can be configured to return the physical data 212, 213, and 214 of Row 1 of FIG. 3. The same mapping and querying may also be applied to virtual columns 332 and 333. For example, virtual columns 332 and 333 may be configured to return the physical data 212, 213, and 214 of Row 2 and Row 3 of FIG. 3, respectively. The virtual columns 331, 332, and 332 may also be configured to return metadata or other operational data of the logical wrappers 222, 223, and 234 of Rows 1, 2, and 3, respectively. While the examples described with respect to FIG. 3 include columns 202, 203, and 204 and Rows 1, 2, and 3, virtual columns, such as virtual columns 331, 332, and 332 may be configured to return data for any row and/or column of table 200. Additionally, more or fewer virtual columns may be added and/or removed to query the table 200.

FIG. 4 depicts an example of using a virtual column 420 of a table 401 to access information of a database table 450, in accordance with some example implementations. As shown in FIG. 4, table 401 includes column 410, column 430, and column 440. In some aspects, column 410 includes row position values, column 430 includes “X” values, and column 440 includes “Y” values. As shown in FIG. 4, the virtual column 420 (labeled “$cts$”) points to a multi-version concurrency control (MVCC) creation timestamp (CTS) information of table 450. Table 450 includes column 460 and column 470. Column 460 includes CTS information and column 470 includes deletion timestamp (DTS) information. As further shown in FIG. 4, row 1 of virtual column 420 points to CTS field 461, row 2 of virtual column 420 points to CTS field 462, and row 3 of virtual column 420 points to CTS field 463.

In some aspects, the virtual column 420 may be configured to point to the MVCC CTS data of the corresponding record “commit timestamp (CommitTS) of the insertion of the record.” In some implementations, if the record in the table 450 is committed, then the value for the $cts$ virtual column 420 should be the corresponding CommitTS. In some aspects, if the record is committed but the CTS is still a temporary MVCC timestamp, the record may to be resolved to a CommitTS). The temporary MVCC timestamp may include the temporary MVCC timestamp as disclosed in U.S. Pat. No. 9,665,609. If the record is not committed, such as the temporary MVCC timestamp, the value for the $cts$ virtual column 420 should be NULL. As shown in FIG. 4, CTS field 461 has a value of 42, CTS field 462 includes a committed, but temporary, MVCC timestamp which is resolved on-the-fly to a CommitTS value of 99, and the CTS field 463 is an uncommitted timestamp and therefore returns a NULL value to the $cts$ virtual column 420. Table 480 shows the calculated values for the $cts$ virtual column 420 in response to a query “select ‘$cts$’, x, y from Table, order by x,y.” In some implementations, the query may be executed by a query processing execution engine of the computing system 110, such as by software modules 114, and/or external software 130.

In some aspects, the use of the virtual columns, such as virtual columns 123, 331-333, and 420, may increase the speed in query results and reduce memory storage because virtual columns may avoid redundant storage of data, such as commit timestamps. Additionally, since virtual columns, such as such as virtual columns 123, 331-333, and 420, do not store any data, they do not take up any physical space. Further, since the virtual columns may be configured to point to other column values or calculate values based on other column values, only the columns involve in the query are calculated and/or scanned which may save on processing time. The virtual columns may also be used for logical row identifiers that could be a hash value or identifier number for every row of a table.

In some aspects, the queries performed on the virtual columns may also return information not previously accessible by a user of the database. Such information may include information identifying a physical placement of data such as: partition identifiers, main/delta, numa location, server identifier, lock timestamp, creation timestamp, and/or the like. Virtual columns may also allow for sophisticated optimizations of databases and database queries such as joins between specific partitions, joins between delta-only data (to separate new data from old data), and/or the like.

FIG. 5 depicts a block diagram illustrating a computing apparatus 500 consistent with implementations of the current subject matter. Referring to FIGS. 1-3, at least a portion of the computing apparatus 500 may be used to implement at least a portion of the computing device 110, an apparatus providing the database 120, an apparatus providing the external software 130, one or more of the user access devices 140, an access device 165, the process 600 and/or the like.

As shown in FIG. 5, the computing apparatus 500 may include a processor 510, a memory 520, a storage device 530, and input/output devices 540. The processor 510, the memory 520, the storage device 530, and the input/output devices 540 may be interconnected via a system bus 550. The processor 510 is capable of processing instructions for execution that may implement operations consistent with those described herein. Such executed instructions may be implement by one or more components of, for example, the computing device 110, the user access device 140 and/or the access device 165. In some example implementations, the processor 510 may be a single-threaded processor. Alternately, the processor 510 may be a multi-threaded processor. The processor 510 is capable of processing instructions stored in the memory 520 and/or on the storage device 530 to display graphical information for a user interface provided via the input/output device 540.

The memory 520 is a computer readable medium such as volatile or non-volatile that stores information within the computing apparatus 500. The memory 520 may store data structures representing configuration object databases, for example. The storage device 530 is capable of providing persistent storage for the computing apparatus 500. The storage device 530 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, or other suitable persistent storage means. The input/output device 540 provides input/output operations for the computing apparatus 500. In some example implementations, the input/output device 540 includes a keyboard and/or pointing device. In various implementations, the input/output device 540 includes a display unit for displaying graphical user interfaces.

According to some example implementations, the input/output device 540 may provide input/output operations for a network device. For example, the input/output device 540 may include Ethernet ports or other networking ports to communicate with one or more wired and/or wireless networks (e.g., a local area network (LAN), a wide area network (WAN), the Internet). The input/output device 540 may include one or more antennas for communication over the network 160 with the computing device 110, the user access device 140 and/or the access device 165. Wireless networks may include Wi-Fi, WiMAX, and cellular networks (2G/3G/4G/5G), and/or any other wireless network.

In some example implementations, the computing apparatus 500 may be used to execute various interactive computer software applications that may be used for organization, analysis and/or storage of data in various formats. Alternatively, the computing apparatus 500 may be used to execute any type of software applications. These applications may be used to perform various functionalities, e.g., planning functionalities (e.g., generating, managing, editing of spreadsheet documents, word processing documents, and/or any other objects, etc.), computing functionalities, communications functionalities, etc. The applications may include various add-in functionalities or may be standalone computing products and/or functionalities. Upon activation within the applications, the functionalities may be used to generate the user interface provided via the input/output device 540. The user interface may be generated and presented to a user by the computing apparatus 500 (e.g., on a computer screen monitor, etc.).

FIG. 6 depicts a flowchart illustrating a process 600 for using virtual columns in a column store database management system, in accordance with some example implementations. Referring to FIGS. 1-5, the process 600 may be performed by a computing apparatus such as, for example, the computing device 110, the user access device 140 and/or the access device 165, and/or the computing apparatus 500.

At operational block 610, the apparatus 500, for example, may access a database table in a column store database system. In some aspects, the database table includes at least one virtual column and the column store database system stores data in a column-oriented structure. At operational block 620, the apparatus 500, for example, may calculate a value for the at least one virtual column based on at least one existing column of the database table. In some implementations, the calculated value is mapped to a row identifier associated with a row of the database table. At operational block 630, the apparatus 500, for example, may provide, in response to a query, the calculated value to a user interface. In some aspects, the query is associated with the row identifier.

One or more aspects or features of the subject matter described herein may be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs, field programmable gate arrays (FPGAs) computer hardware, firmware, software, and/or combinations thereof. These various aspects or features may include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device. The programmable system or computing system may include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

These computer programs, which may also be referred to as programs, software, software applications, applications, components, or code, include machine instructions for a programmable processor, and may be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the term “machine-readable medium” refers to any computer program product, apparatus and/or device, such as for example magnetic discs, optical disks, memory, and Programmable Logic Devices (PLDs), used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor. The machine-readable medium may store such machine instructions non-transitorily, such as for example as would a non-transient solid-state memory or a magnetic hard drive or any equivalent storage medium. The machine-readable medium may alternatively or additionally store such machine instructions in a transient manner, such as for example, as would a processor cache or other random access memory associated with one or more physical processor cores.

To provide for interaction with a user, one or more aspects or features of the subject matter described herein may be implemented on a computer having a display device, such as for example a cathode ray tube (CRT) or a liquid crystal display (LCD) or a light emitting diode (LED) monitor for displaying information to the user and a keyboard and a pointing device, such as for example a mouse or a trackball, by which the user may provide input to the computer. Other kinds of devices may be used to provide for interaction with a user as well. For example, feedback provided to the user may be any form of sensory feedback, such as for example visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including acoustic, speech, or tactile input. Other possible input devices include touch screens or other touch-sensitive devices such as single or multi-point resistive or capacitive track pads, voice recognition hardware and software, optical scanners, optical pointers, digital image capture devices and associated interpretation software, and the like.

In the descriptions above and in the claims, phrases such as “at least one of” or “one or more of” may occur followed by a conjunctive list of elements or features. The term “and/or” may also occur in a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it used, such a phrase is intended to mean any of the listed elements or features individually or any of the recited elements or features in combination with any of the other recited elements or features. For example, the phrases “at least one of A and B;” “one or more of A and B;” and “A and/or B” are each intended to mean “A alone, B alone, or A and B together.” A similar interpretation is also intended for lists including three or more items. For example, the phrases “at least one of A, B, and C;” “one or more of A, B, and C;” and “A, B, and/or C” are each intended to mean “A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together.” Use of the term “based on,” above and in the claims is intended to mean, “based at least in part on,” such that an unrecited feature or element is also permissible.

The subject matter described herein may be embodied in systems, apparatus, methods, and/or articles depending on the desired configuration. The implementations set forth in the foregoing description do not represent all implementations consistent with the subject matter described herein. Instead, they are merely some examples consistent with aspects related to the described subject matter. Although a few variations have been described in detail above, other modifications or additions are possible. In particular, further features and/or variations may be provided in addition to those set forth herein. For example, the implementations described above may be directed to various combinations and subcombinations of the disclosed features and/or combinations and subcombinations of several further features disclosed above. In addition, the logic flows depicted in the accompanying figures and/or described herein do not necessarily require the particular order shown, or sequential order, to achieve desirable results. Other implementations may be within the scope of the following claims.

Legler, Thomas, Tonder, Andreas

Patent Priority Assignee Title
Patent Priority Assignee Title
10268704, Oct 12 2017 Vast.com, Inc. Partitioned distributed database systems, devices, and methods
10275832, Mar 15 2013 GUIDEWIRE SOFTWARE, INC Custom data
10402383, Dec 18 2015 SAP SE DBMS-supported score assignment
10540343, Oct 14 2011 Pure Storage, Inc. Data object attribute based event detection in a storage system
10664470, Aug 16 2019 Capital One Services, LLC Optimization of database write operations by combining and parallelizing operations based on a hash value of primary keys
5812840, Mar 24 1994 SPEEDWARE LTEE LTD Database query system
6938260, Jul 14 2000 INTELLECTUAL DISCOVERY, INC Complex data navigation, manipulation and presentation support for visualage Java
7966343, Apr 07 2008 Teradata Corporation; TERADATA US, INC Accessing data in a column store database based on hardware compatible data structures
9430550, Sep 28 2012 Oracle International Corporation Clustering a table in a relational database management system
20020095421,
20080120321,
20110137890,
20140095471,
20150088856,
20150088885,
20150089282,
20150121371,
20160267141,
20160371795,
20170255709,
20170308547,
20180113839,
20180150518,
20180240020,
20180246809,
20180268050,
20180300806,
20180336263,
20180365290,
20190057458,
20190102390,
20190146972,
20190163678,
20190206370,
20190220619,
20190266163,
20190303470,
20190311051,
20190354620,
///
Executed onAssignorAssigneeConveyanceFrameReelDoc
Apr 02 2018TONDER, ANDREASSAP SEASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0488370219 pdf
Apr 03 2018LEGLER, THOMASSAP SEASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0488370219 pdf
Apr 04 2018SAP SE(assignment on the face of the patent)
Date Maintenance Fee Events
Apr 04 2018BIG: Entity status set to Undiscounted (note the period is included in the code).
Feb 21 2024M1551: Payment of Maintenance Fee, 4th Year, Large Entity.


Date Maintenance Schedule
Sep 01 20234 years fee payment window open
Mar 01 20246 months grace period start (w surcharge)
Sep 01 2024patent expiry (for year 4)
Sep 01 20262 years to revive unintentionally abandoned end. (for year 4)
Sep 01 20278 years fee payment window open
Mar 01 20286 months grace period start (w surcharge)
Sep 01 2028patent expiry (for year 8)
Sep 01 20302 years to revive unintentionally abandoned end. (for year 8)
Sep 01 203112 years fee payment window open
Mar 01 20326 months grace period start (w surcharge)
Sep 01 2032patent expiry (for year 12)
Sep 01 20342 years to revive unintentionally abandoned end. (for year 12)