Storing derived summaries on persistent memory of a storage device

Information

  • Patent Grant
  • 11086876
  • Patent Number
    11,086,876
  • Date Filed
    Friday, September 29, 2017
    6 years ago
  • Date Issued
    Tuesday, August 10, 2021
    2 years ago
Abstract
Region summaries of database data are stored in persistent memory of a storage cell. Because the region summaries are stored in persistent memory, when a storage cell is powered off and data in volatile memory is not retained, region summaries are nevertheless preserved in persistent memory. When the storage cell comes online, the region summaries already exist and may be used without the delay attendant to regenerating the region summaries stored in volatile memory.
Description

The present application is related to U.S. patent application Ser. No. 15/720,949, entitled REMOTE ONE-SIDED PERSISTENT WRITES, filed by Jia Shi, et al., on the equal day herewith, having attorney docket No. 50277-5047, the entire contents of which are incorporated herein by reference.


The present application is related to U.S. patent application Ser. No. 15/720,949, entitled DATABASE WITH NVDIMM AS PERSISTENT STORAGE, filed by Nilesh Choudhury, et al., on the equal day herewith, having attorney docket No. 50277-5048, the entire contents of which are incorporated herein by reference.


The present application is related to U.S. patent application Ser. No. 15/720,972, entitled NV CACHE, filed by Zuoyu Tao, et al., on the equal day herewith, having attorney docket No. 50277-5049, the entire contents of which are incorporated herein by reference.


The present application is related to U.S. patent application Ser. No. 14/726,372, entitled OPTIMIZING A QUERY WITH EXTREMA FUNCTION USING IN-MEMORY DATA SUMMARIES ON THE STORAGE SERVER, filed by Adrian Ng, et al., on May 29, 2015, the entire contents of which are incorporated herein by reference.


TECHNICAL FIELD

The present disclosure relates to database systems. More specifically, the disclosure relates to processing database requests for data more efficiently.


BACKGROUND

A DBMS (Database Management System) is an important mechanism for storing and managing many types of data. A DBMS comprises at least one database server. The database server is hosted on at least one computing element (e.g. computer, server blade) and may store database data in block mode storage devices. The block mode storage devices may be one or more disk drives and flash drives connected via a high speed bus of the computing element to the one or more hardware processors (“processors”) of the computing element and/or memory of the computing element. A block mode storage device may also be a network enabled storage device that is connected via a network to the computing element and that comprises other block storage devices such as disk drives and flash drives.


To respond to a query, a database server retrieves over a network the relevant data blocks from the storage server and processes the data blocks to generate the result set for the query. Such processing includes applying filtering criteria specified by a query predicate to rows in the data blocks. (The term criteria is used herein in both a singular sense or plural sense criteria, i.e. to mean a criterion or multiple criteria). Applying filtering criteria filters out rows from the retrieved data blocks. The filtered rows may not be returned as part of the result set for the query. Thus, network resources and memory resources on the database server are used to process filtered rows which are not needed for the result set.


To reduce use of network and memory resources for processing such filtered rows, storage devices have been configured with the capability to filter rows in data blocks before transmitting the rows and/or data blocks over a network to the database server. A database server transmits the filtered data block request to a storage device. The filtered data block request specifies filtering criteria and a range of one or more data blocks to which to apply the filtering criteria.


To service a filtered data block request for a range of data blocks, the storage device performs a filtered data block scan, which entails reading and evaluating each data block in the range. The storage device may return any data block that has at least one row that satisfies the filtering criteria. Alternatively, the storage device may marshal any rows that satisfy the filtering criteria into a new “return” data block which is returned to the database server.


To accelerate filtered data block scans, region summaries are used by a storage device to ignore regions of data blocks (“region”) that could not contain a row that satisfies the filtering criteria. Ignoring regions in this way is referred to herein as region pruning. As the term is used herein, a region is a set of data blocks that are contiguously stored within a range of a memory address space exposed by a storage device, such as block addresses of a disk or flash memory device. The region summaries contain summary data about column values in columns stored in a region. Summary data is data that may be used to prune a region based on filtering criteria, such as a maximum value or a minimum value. For example, the in-memory summary for a particular region may specify that the maximum value in the column C1 is 1000. A storage device receives a filtered data block request covering the region, the filtering criteria specifying that C1 must be greater than 5000. Based on summary data on the column C1 in the region summary, the storage device determines that the particular region cannot contain any row satisfying the filtering criteria.


To enable quick access and updating of the region summaries, the region summaries are stored in volatile memory. Thus, region summaries disappear when a storage device goes down and are regenerated later when the storage device is powered on and comes online. Until region summaries are regenerated, the full benefit of using the summaries cannot be realized.





BRIEF DESCRIPTION OF THE DRAWINGS

The example embodiment(s) of the present invention are illustrated by way of example, and not in way by limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:



FIG. 1 illustrates a DBMS using a storage devices that use summaries of data stored on non-volatile memory of the storage devices to process requests for database data more efficiently.



FIG. 2 illustrates an access-derived summary according to an embodiment of the present invention.



FIG. 3 illustrates a coherent data block write operation according to an embodiment of the present.



FIG. 4 is a diagram of a computer system on which embodiments may be implemented.



FIG. 5 is a diagram of a software system that may be employed for controlling the operation of a computer system according to an embodiment of the present invention.





DESCRIPTION OF THE EXAMPLE EMBODIMENT(S)

In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the example embodiment(s) of the present invention. It will be apparent, however, that the example embodiment(s) may be practiced without these specific details.


General Overview


Described herein are techniques for storing region summaries in persistent memory. Because region summaries are stored in persistent memory, when a storage cell is powered off and data in volatile memory is not retained, region summaries are nevertheless preserved in persistent memory. When the storage cell comes online, the region summaries already exist and may be used without the delay attendant to regenerating the region summaries stored in volatile memory.


The techniques described for storing region summaries on persistent memory use a form of region summaries referred to as access-derived region summaries or access-derived summaries. Access-derived summaries are generated and updated in response to performing filtered data block scans on data blocks by a storage device or in response to writes of data blocks to the storage device. For example, a storage device receives a filtered data block request covering multiple regions, the filtering criteria specifying that column C1 must be greater than 5000. While scanning the multiple regions, the storage device detects that one region does not have any rows that satisfy the criteria. For this one region, the storage device updates the access-derived summary for the region to indicate that the region does not contain a value that is greater than 5000 in column C1. Later, the storage device receives a request to write a data block to the region. The storage device compares the values in the data block for column C1 to the access-derived summary for that region and determines column C1 now has a new value larger than 5000. In response to the determination, the storage device modifies the access-derived summary to reflect the maximum value.


The access-derived summaries can be persisted by storing the summaries on persistent storage devices, such as flash or disk. However, flash and disk are block mode storage devices with relatively very high read and write latency. Use of such devices would add the overhead of high latency read and/or write operations when performing a filtered data block scan or a data block write operation of a data block.


In addition, the smallest amount of data that may be modified in a block mode storage device is a block. Updating an access-derived summary stored in a block mode storage device may require reading a block from the block mode storage device into a memory location within RAM, updating the block within the RAM, and writing the entire block back to the block mode storage device. In addition, a data block may have to be unserialized into an in-memory form and serialized before being written back to the block mode storage device. Updating an access-derived summary may also only entail changing a number of bytes that is much smaller than a block. However, even though a small number of bytes need to be changed in an access-derived summary that is stored in the block, all the operations mentioned above need to be performed to update the summary in the block.


To persist access-derived summaries in a way that allows the access-derived summaries to be generated and maintained more efficiently than in a block mode storage device, the access-derived summaries are stored in non-volatile random access memories (NVRAMs) of storage devices. NVRAM may have higher latency than volatile RAM but has much less latency than other forms of persistent storage, such as disk or flash. Like non-volatile RAM, NVRAM is byte addressable; an addressable byte or word may be loaded from NVRAM via a bus to a register of a hardware processor. Thus, access-derived summaries are modified in place in RAM, that is, without moving a block from a block device to RAM to be modified.


Illustrative DBMS


Persisted access-derived summaries are illustrated in the context of a multi-node DBMS. A DBMS comprises at least one database server. The database server is hosted on at least one computing element and may store database data in block mode storage devices. The block mode storage devices may be disk drives and flash drives connected via a high speed bus of the computing element to the one or more hardware processors of the computing element and/or memory of the computing element. A block mode storage device may also be a network enabled storage device that is connected via a network to the computing element and that compromises other block mode storage devices such as disk drives and flash drives.


More powerful DBMSs are hosted on a parallel processer hardware platform. Such DBMSs are referred to herein as multi-node DBMSs. A multi-node DBMS comprises multiple computing elements referred to herein as computing nodes. Each computing node comprises a hardware processor or multiple hardware processors that each share access to the same main memory.



FIG. 1 is a block diagram that illustrates a multi-node DBMS. Referring to FIG. 1, multi-node DBMS 100 comprises database server instances, each hosted on a respective computing node, and each providing access to the same database stored on shared storage 121. The database server instances of DBMS 100 comprise database server instances 103-1 and 103-2, which are hosted on computing nodes 102-1 and 102-2 respectively. The shared storage 121 comprises storage cells 122-1 and 122-2. Each of database server instances 103-1 and 103-2 is connected by a high speed network 101 to each of storage cells 122-1 and 122-2.


Each of storage cells 122-1 and 122-2 is a computing element that includes persistent storage (e.g., disk, flash memory) for storing “database files” of the one or more databases of DBMS 100. Storage cell 122-1 includes persistent storage 129-1 and main memory 124-1 and storage cell 122-2 includes persistent storage 129-2 and main memory 124-2. Main memory 124-1 and main memory 124-2 are volatile RAMs. Persistent storage 129-1 and persistent storage 129-2 may comprise persistent storage devices such as disk devices or flash memory devices.


One or more storage processes running on each of storage cells 122-1 and 122-2, such as storage process 125-1a and storage process 125-2a, receive requests from any of database server instances 103-1 and 103-2 to read or write data blocks from or to database files stored in persistent storage.


Volatile buffer pool 128-1 and volatile buffer pool 128-2 are buffer pools allocated from main memory 124-1 and main memory 124-2, respectively. Volatile buffer pool 128-1 and volatile buffer pool 128-2 each comprises buffers, and each is used for temporarily staging and/or caching of data blocks stored in persistent storage 129-1 and persistent storage 129-2, respectively.


Storage cells 122-1 and 122-2 also include NVRAM 123-1 and NVRAM 123-2, respectively. NV buffer pool 127-1 and NV buffer pool 127-2 are buffer pools allocated from NVRAM 123-1 and NVRAM 123-2, respectively. NV buffer pool 127-1 and NV buffer pool 127-2 each comprises buffers that are being used for temporarily staging and/or caching data blocks from persistent storage 129-1 and 129-2, respectively. NV buffer pool 127-1 and NV buffer pool 127-2 may each be referred to herein as a NV cache.


Database Server Instances


Each of the database server instances of DBMS 100 comprise database processes that run on the computing node that hosts the database server instance. A database process may be, without limitation, a process running within a database session that executes database commands issued within the database session or a query execution process belonging to a pool of processes that is assigned to execute queries issued through database sessions.


Referring to FIG. 1, each of database server instances 103-1 and 103-2 comprise multiple database processes and database buffers that cache data blocks read from shared storage 121. Database server instances 103-1 and 103-2 are hosted on computing nodes 102-1 and 102-2, respectively. Database server instance 103-1 comprises DB processes 105-1a and 105-1b, which run on computing node 102-1, and database buffer pool 108-1, which is allocated from main memory 104-1. Database server instance 103-2 comprises database processes 105-2a and 105-2b, which run on computing node 102-2, and database buffer pool 108-2, which is allocated from main memory 104-2.


Access-Derived Summaries



FIG. 2 is a diagram depicting access-derived summaries according to an embodiment. Referring to FIG. 2, access-derived summary 200 includes entries with each entry having an attribute region ID 212, col ID 214, min 216 and max 218. Although access-derived summary 200 is depicted as a tabular structure, any in-RAM data structure that provides for entries that are accessible using one or more attributes as an access key may be used.


Region ID 212 contains region IDs, each of which identifies a region. A region ID may be generated based on a location of a region and is used to look up summary data for a range of data blocks specified by a filtered data block request. A range in a filtered data block request may cover multiple regions. Col ID 214 identifies a column stored in the region about which an entry has statistics. Min 216 and max 218 contain extrema values about the column in the region. According to an embodiment, max 218 specifies a “max” value not exceeded by a column value in a column in a region. The value may not be an actual maximum in the column. According to an embodiment, Min 216 specifies a “min” value not exceeded by a column value in a column in a region; there is no column in the region that is less. The value may not be the actual minimum in the column.


Each entry in access-derived summary 200 includes a min and max value for the region and column identified by the values in region ID 212 and rol ID 214. For example, the first entry for access-derived summary 200 specifies a max value 5000 for the column in the region that are identified by column ID 1 and region ID 1, respectively. The fourth entry specifies a min value of “Adams” and max value of “Jefferson” for the column in the region that are identified by column ID 3 and region ID 4, respectively.


As mentioned before, when a storage device comes online after having lost data retained in volatile memory due to, for example, loss of power to the volatile memory, the access-derived summary is preserved in NVRAM. The entries that were in the access-derived summary that were used for region pruning before the power loss may be used for region pruning after when storage device comes back online.


Generating Access-Derived Summaries


According to an embodiment, access-derived summaries are updated in response to filtered data block requests, and are updated based on the results of the filtered data block requests.


Database processes running on DBMS 100 may issue a filtered data block request to a storage process running on a storage cell of shared storage 121. The filtered data block request specifies a range of data blocks and filtering criteria. In response to receiving a filtered data block request, a storage process performs filtered data block scans. Filtered data block scans comprise reading data blocks specified in the request, and applying the filtering criteria to return data blocks that satisfy the criteria.


Filtered data blocks returned as satisfying the request may be data blocks containing at least one row satisfying the filtering criteria or may be data blocks that contain only rows that satisfy the filtering criteria, the rows having been extracted from the specified data blocks by the storage process. The term data block is used herein to refer to either copies of data blocks stored in persistent storage or data blocks that contain rows extracted from the data blocks.


Examples of filtered data block requests and handling thereof are described in U.S. patent application Ser. No. 14/480,009, entitled Query And Exadata Support For Hybrid Columnar Compressed Data, filed on Sep. 8, 2014, by Vineet Marwah, et al., the entire contents of which are incorporated herein by reference.


According to an embodiment, access-derived summaries are updated in response to filtered data block requests when “summary update” criteria is satisfied. For example, under an approach for updating summaries referred to as the fully-selectively approach, summary update includes at least two criteria. One is that the filtering criteria be fully selective for a region. That is, no row in any data block in a region satisfies the filtering criteria. Another is that the Boolean result of the filtering criteria is a result from which summary data may be derived, such as filtering criteria based on conditions like less than and greater than. For example, if the filtering criteria is that a column value for a column be greater than 5000 and the result of the filtering criteria for a region is that no rows in the region include a column value for the column that is greater than 5000, then the summary update criteria is satisfied and the accessed-derived summary for that region may be updated accordingly.


An advantage of access-derived summaries stems from the fact that summaries are generated for actual accesses to regions. Specifically, filtered data block requests for ranges of data blocks are probative of what ranges will be the subject of filtered data block requests in the imminent future. Memory usage is thus restricted to an conserved for storing access-derived summaries for regions that are more likely to be accessed imminently. Similarly, because updating of the access-derived summaries under the fully selective approach is limited to predicates that have eliminated entire regions, creation and storing of summary data is restricted to columns that are more likely to be used in filtering criteria of future data block requests and for filtering criteria that more likely to eliminate regions.


As mentioned previously, the access-derived summaries are updated in NVRAM. Thus, the advantages of persisting access-derived summaries are achieved without the overhead attendant to updating access-derived summaries that are stored in block mode persistent storage mechanisms, such as flash.


Access-derived summaries may be updated in response to filtered data block requests under different criteria and conditions than those described above. For example, while a range of data blocks is scanned against filtering criteria for a column, the actual min and max values encountered for the column may be recorded in access-derived summaries even though one or more data block satisfied filtering criteria. This alternative has the advantage recording summary data for column values in a manner that piggybacks onto work being performed any, i.e., filtering on the filtering criteria, by adding negligible work to that operation.


Maintaining Coherency


Access-derived summaries are coherent with the respective regions when the access-derived summaries are maintained and used in a way that ensures the access-derived summaries validly reflect the respective regions. Obviously, since the access-derived summaries are used to prune regions, maintaining coherency is important.


Writes of a data block to a region may require updating the corresponding access-derived summary for that region. Using an access-derived summary for pruning the respective region while an ongoing write operation is occurring in the region should be prevented to ensure coherency. According to an embodiment, ensuring coherency entails preventing the use of an access-derived summary for a region once a write of that data block has commenced and until the write is complete, and until the determination of whether to update the access-derived summary and any determined update is also complete.


According to an embodiment, to ensure coherency, at least in part, the use of access-derived summaries by region pruning for regions is synchronized with data block write operations to those regions. When a data block write operation is commenced for a data block within the region, “in-flight metadata” stored in NRVAM is marked to indicate the corresponding region is undergoing a write. Specifically, the in-flight metadata contains an entry for each region and an in-flight counter. When a data block write operation is commenced for a data block within the region, the in-flight counter for the region is incremented. After incrementing the in-flight counter, the data block is written, a determination is made of whether the respective access-derived summary requires updating, and then the access-derived summary is updated as accordingly. Next, the in-flight counter is decremented.


Between the incrementing and decrementing of the counter for a data block write operation, the data block write operation is referred to herein as being in-flight. At a given instant, there may be multiple in-flight data block write operations for a region, and the in-flight counter for the region reflects the number of in-flight data block write operations.


When an in-flight counter reflects there is at least one in-flight data block write operation, the region is referred to as being marked as undergoing a data block write. When the in-flight counter reflects there is no in-flight data block write operation, the region is referred to as being marked as not undergoing a data block write operation.


Performing a data block write operation and the operations needed to carry out the data block operation in a way that ensures coherency is referred to herein as a coherent data block write operation. FIG. 3 depicts a procedure for a coherent data block write operation according to an embodiment of the present invention. For purposes of illustration, a data block is being written to a region having region ID 1.


Referring to FIG. 3, at 305, the in-flight counter is incremented. At 310, the data block is written to persistent storage.


At 315, it is determined whether any of the summary data for the region is superseded by column values in the data block. For each column in the access-derived entries for the region, summary data is compared to values in the data block for that column and the summary data is updated if the values require. For example, for a column having column identifier 2, the data block contains a column value Nov. 19, 2016, which exceeds the max value Oct. 1, 2017 in max 218 for access-derived summary entry for the column identifier 2. Accordingly, the column value Nov. 19, 2016 supersedes the max value Oct. 1, 2017 in max 218 of the entry, and max 218 for the entry is updated to Nov. 19, 2016.


At 320, the in-flight counter for the region is decremented.


Pruning with Coherance


A filtered data block request for which region pruning may be performed may specify a data block address range for multiple regions. For each of these regions, the in-flight metadata is consulted to determine whether the access-derived summary for the region is coherent with the region and may therefore be relied upon for region pruning. If it is determined that the in-flight counter indicates one or more data block write operations are in-flight for the region, the access-derived summary is ignored, and the data blocks in the region are scanned and filtered.


It is also possible a region for which access-derived summary data is generated may be used to store a different table than the table for which the summary data was generated. According to an embodiment, an accessed-derived summary associates a table with a region. The table may be a separate column or attribute like a region ID or column ID, or may be embedded within a region ID or column ID, such as a table ID included as a prefix to a region ID or column ID. A request issued to a storage for data block write operation to a region would indicate the table for which a write is being performed by, for example, specifying the table id. If the table specified by the request and table specified for the region by the access-derived summary do not match, then the entries for the region are deleted or otherwise invalidated.


NVRAM-Based In-Flight Metadata Advantages & Caveats


In-flight metadata is stored in NVRAM so that in-flight metadata persists along with the access-derived summary. When a storage device comes online after having lost data retained in volatile memory due to, for example, loss of power to the volatile memory, not only is the access-derived summary preserved in NVRAM for region pruning but so is in-flight metadata. Importantly, the in-flight metadata, which is needed to determine the coherency of the access-derived summary for specific regions, is available. For regions that have in-flight counters in the access-derived summary that mark the regions as having in-flight data block write operations, the entries for the regions are deleted or otherwise marked as invalidate so that the entries are no longer used for region pruning.


In addition, storing the in-flight metadata in NVRAM avoids overhead of updating the access-derived summary that would be attendant to storing the access-derived summary in block mode storage mechanisms, such as flash. Such overhead is avoided twice for a data block operation, once to increment an in-flight counter in persistent and once to decrement an in-flight counter memory.


Memory Overview


Because embodiments of the invention involve a novel use of a non-volatile RAM, a description of memory is pertinent and useful. As used herein, “non-volatile” refers to a characteristic of memory that retains data in the absence of any form of electrical power, including external or battery backup. Examples of non-volatile memory include e-prom memory, flash memory, and disk memory. Non-volatile memory does not include volatile memory for which power is retained by a battery backup in the absence of another external power source. For example, volatile memory coupled to a board with an embedded battery-backup is not non-volatile memory, because, without the power provided by a battery, the volatile memory does not retain data.


Byte-addressable memory is distinguishable from block-addressable memory. A byte is eight bits and is the minimum amount of data that may be addressed, retrieved from memory, or written to in byte-addressable memory. Thus, to manipulate a bit in a byte, a byte containing the bit must be fetched to a register of the processor executing a machine instruction that references the byte (or word containing the byte) and manipulated according to the machine instruction or another machine instruction.


In contrast, the minimum size for a unit of block-addressable memory is a data block. A data block comprises multiple bytes and multiple words and cannot be entirely stored within a register of processor. For block-addressable memory, a data block is the minimum amount of data that may be addressed, retrieved from memory, or written to memory. Examples of block-addressable memory include flash memory and disk memory. To manipulate a bit or a byte in a block, a block containing those bits is loaded into a byte-addressable memory by an instruction referencing the block issued to a block-based interface.


RAM is distinguishable from read-only memory (ROM) in that data in RAM can be overwritten. As used herein, overwriting data refers to replacing the data with new data without first having to erase the data in the memory. Thus, as used herein, RAM refers to byte-addressable memory that can be overwritten.


DBMS Overview


A DBMS manages one or more databases. A DBMS may comprise one or more database servers referred to herein as database server instances. A database comprises database data and a database dictionary that are stored on a persistent memory mechanism. Database data may be stored in one or more data containers. Each container contains records. The data within each record is organized into one or more fields. In relational DBMS's, the data containers are referred to as tables, the records are referred to as rows, and the fields are referred to as columns. In object-oriented databases, the data containers are referred to as object classes, the records are referred to as objects, and the fields are referred to as attributes. Other database architectures may use other terminology.


Users interact with a database server instance of a DBMS by submitting to the database server commands that cause the database server instance to perform operations on data stored in a database, as well as other kinds of operations. A database command may be in the form of a database statement that conforms to a database language. A database language for expressing the database commands is the Structured Query Language (SQL). There are many different versions of SQL, some versions are standard and some proprietary, and there are a variety of extensions. Data definition language commands are issued to a database server to create or configure database objects, such as tables, views, or complex data types. DDL commands are used to configure a database server for a particular hardware environment, to configure computer resource usage of the database server, as well as other operating aspects of the database server.


A server, such as a database server, is a combination of software and an allocation of computational resources, such as memory, a node, and processes on the node for executing the integrated software components on a processor, the combination of the software and computational resources being dedicated to performing a particular function on behalf of one or more clients.


Resources from multiple nodes in a multi-node database system can be allocated to running a particular database server's software. Each combination of the software and allocation of resources from a node is a server that is referred to as a “server instance” or “instance.” A database server may comprise multiple database server instances, some or all of which are running on separate computer elements.


Database processes that comprise a database server run under the control of the database server (i.e., can be created or terminated by the database server) and perform various database server functions. Such processes are referred to herein as database processes. Database processors include listeners, garbage collectors, log writers, processes for database sessions for executing database commands issued by database clients (including processes executing within shared sessions), and recovery processes.


A database process may comprise state objects that indicate state information for the process and allows the DBMS to manage and track the process. A typical database thread may also comprise a state object. A state object is a resource that is visible to the DBMS and indicates to the DBMS the state of the process. For example, a state object may indicate whether a process is free, unavailable, or failed. Thus, the DBMS can use the state object to determine how many processes are running in the database system, which ones are available, and clean up failed processes.


In an embodiment, the DBMS comprises a resource manager, which handles database processes for the database system. The resource manager may be a background daemon, a database component, software module, or some combination thereof. The resource manager may monitor database instance(s) and track processor and I/O resources across database processes. In an embodiment, the resource manager is a process scheduler that interrupts, de-schedules, schedules, or otherwise controls when database processes may run.


In an embodiment, state objects are used by the resource manager to track the current state of database processes. As used herein, a state can include information regarding a database process, login credentials for a database session, current database transactions, and resources held by a process or thread. Examples of state objects include process, session, and call state objects. Process state objects keep a process' information, attributes (such as dead, system process, fatal system process, cleanup process, shared server, and etc.), and other process structures such as a process interrupt queue.


Data Blocks


A data block is used by a DBMS to store one or row more database rows, or portions of rows, including one or more columns of a row. When rows are read from persistent storage, a data block containing the row is copied into a data block buffer in RAM and/or main memory of a database server. A data block that is used to store database data maybe referred to herein as a database block. A database block usually contains multiple rows, and database block metadata describing the contents of the database block. Metadata includes control and formatting information, such as offsets to sequences of bytes representing rows or other data structures, and a list of transactions affecting a row.


A database block is referred to as being atomic because, at least in part, a database block is the smallest unit of database data a database server may request from a persistent storage device. For example, when a database server seeks a row that is stored in a data block, the data block may only read the row from a persistent storage device by reading in the entire data block.


Hardware Overview


According to one embodiment, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques.


For example, FIG. 4 is a block diagram that illustrates a computer system 400 upon which an embodiment of the invention may be implemented. Computer system 400 includes a bus 402 or other communication mechanism for communicating information, and a hardware processor 404 coupled with bus 402 for processing information. Hardware processor 404 may be, for example, a general purpose microprocessor.


Computer system 400 also includes a main memory 406, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 402 for storing information and instructions to be executed by processor 404. Main memory 406 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 404. Such instructions, when stored in non-transitory storage media accessible to processor 404, render computer system 400 into a special-purpose machine that is customized to perform the operations specified in the instructions.


Computer system 400 further includes a read only memory (ROM) 408 or other static storage device coupled to bus 402 for storing static information and instructions for processor 404. A storage device 410, such as a magnetic disk, optical disk, or solid-state drive is provided and coupled to bus 402 for storing information and instructions.


Computer system 400 may be coupled via bus 402 to a display 412, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 414, including alphanumeric and other keys, is coupled to bus 402 for communicating information and command selections to processor 404. Another type of user input device is cursor control 416, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 404 and for controlling cursor movement on display 412. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.


Computer system 400 may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system 400 to be a special-purpose machine. According to one embodiment, the techniques herein are performed by computer system 400 in response to processor 404 executing one or more sequences of one or more instructions contained in main memory 406. Such instructions may be read into main memory 406 from another storage medium, such as storage device 410. Execution of the sequences of instructions contained in main memory 406 causes processor 404 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions.


The term “storage media” as used herein refers to any non-transitory media that store data and/or instructions that cause a machine to operate in a specific fashion. Such storage media may comprise non-volatile media and/or volatile media. Non-volatile media includes, for example, optical disks, magnetic disks, or solid-state drives, such as storage device 410. Volatile media includes dynamic memory, such as main memory 406. Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid-state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge.


Storage media is distinct from but may be used in conjunction with transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 402. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.


Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor 404 for execution. For example, the instructions may initially be carried on a magnetic disk or solid-state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 400 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 402. Bus 402 carries the data to main memory 406, from which processor 404 retrieves and executes the instructions. The instructions received by main memory 406 may optionally be stored on storage device 410 either before or after execution by processor 404.


Computer system 400 also includes a communication interface 418 coupled to bus 402. Communication interface 418 provides a two-way data communication coupling to a network link 420 that is connected to a local network 422. For example, communication interface 418 may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 418 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 418 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.


Network link 420 typically provides data communication through one or more networks to other data devices. For example, network link 420 may provide a connection through local network 422 to a host computer 424 or to data equipment operated by an Internet Service Provider (ISP) 426. ISP 426 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 428. Local network 422 and Internet 428 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 420 and through communication interface 418, which carry the digital data to and from computer system 400, are example forms of transmission media.


Computer system 400 can send messages and receive data, including program code, through the network(s), network link 420 and communication interface 418. In the Internet example, a server 430 might transmit a requested code for an application program through Internet 428, ISP 426, local network 422 and communication interface 418.


The received code may be executed by processor 404 as it is received, and/or stored in storage device 410, or other non-volatile storage for later execution.


In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. The sole and exclusive indicator of the scope of the invention, and what is intended by the applicants to be the scope of the invention, is the literal and equivalent scope of the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction.


Software Overview



FIG. 5 is a block diagram of a basic software system 500 that may be employed for controlling the operation of computer system 400. Software system 500 and its components, including their connections, relationships, and functions, is meant to be exemplary only, and not meant to limit implementations of the example embodiment(s). Other software systems suitable for implementing the example embodiment(s) may have different components, including components with different connections, relationships, and functions.


Software system 500 is provided for directing the operation of computer system 400. Software system 500, which may be stored in system memory (RAM) 406 and on fixed storage (e.g., hard disk or flash memory) 410, includes a kernel or operating system (OS) 510.


The OS 510 manages low-level aspects of computer operation, including managing execution of processes, memory allocation, file input and output (I/O), and device I/O. One or more application programs, represented as 502A, 502B, 502C . . . 502N, may be “loaded” (e.g., transferred from fixed storage 410 into memory 406) for execution by the system 500. The applications or other software intended for use on computer system 400 may also be stored as a set of downloadable computer-executable instructions, for example, for downloading and installation from an Internet location (e.g., a Web server, an app store, or other online service).


Software system 500 includes a graphical user interface (GUI) 515, for receiving user commands and data in a graphical (e.g., “point-and-click” or “touch gesture”) fashion. These inputs, in turn, may be acted upon by the system 500 in accordance with instructions from operating system 510 and/or application(s) 502. The GUI 515 also serves to display the results of operation from the OS 510 and application(s) 502, whereupon the user may supply additional inputs or terminate the session (e.g., log off).


OS 510 can execute directly on the bare hardware 520 (e.g., processor(s) 404) of computer system 400. Alternatively, a hypervisor or virtual machine monitor (VMM) 530 may be interposed between the bare hardware 520 and the OS 510. In this configuration, VMM 530 acts as a software “cushion” or virtualization layer between the OS 510 and the bare hardware 520 of the computer system 400.


VMM 530 instantiates and runs one or more virtual machine instances (“guest machines”). Each guest machine comprises a “guest” operating system, such as OS 510, and one or more applications, such as application(s) 502, designed to execute on the guest operating system. The VMM 530 presents the guest operating systems with a virtual operating platform and manages the execution of the guest operating systems.


In some instances, the VMM 530 may allow a guest operating system to run as if it is running on the bare hardware 520 of computer system 400 directly. In these instances, the same version of the guest operating system configured to execute on the bare hardware 520 directly may also execute on VMM 530 without modification or reconfiguration. In other words, VMM 530 may provide full hardware and CPU virtualization to a guest operating system in some instances.


In other instances, a guest operating system may be specially designed or configured to execute on VMM 530 for efficiency. In these instances, the guest operating system is “aware” that it executes on a virtual machine monitor. In other words, VMM 530 may provide para-virtualization to a guest operating system in some instances.


A computer system process comprises an allotment of hardware processor time, and an allotment of memory (physical and/or virtual), the allotment of memory being for storing instructions executed by the hardware processor, for storing data generated by the hardware processor executing the instructions, and/or for storing the hardware processor state (e.g. content of registers) between allotments of the hardware processor time when the computer system process is not running. Computer system processes run under the control of an operating system, and may run under the control of other programs being executed on the computer system.


Cloud Computing


The term “cloud computing” is generally used herein to describe a computing model which enables on-demand access to a shared pool of computing resources, such as computer networks, servers, software applications, and services, and which allows for rapid provisioning and release of resources with minimal management effort or service provider interaction.


A cloud computing environment (sometimes referred to as a cloud environment, or a cloud) can be implemented in a variety of different ways to best suit different requirements. For example, in a public cloud environment, the underlying computing infrastructure is owned by an organization that makes its cloud services available to other organizations or to the general public. In contrast, a private cloud environment is generally intended solely for use by, or within, a single organization. A community cloud is intended to be shared by several organizations within a community; while a hybrid cloud comprises two or more types of cloud (e.g., private, community, or public) that are bound together by data and application portability.


Generally, a cloud computing model enables some of those responsibilities which previously may have been provided by an organization's own information technology department, to instead be delivered as service layers within a cloud environment, for use by consumers (either within or external to the organization, according to the cloud's public/private nature). Depending on the particular implementation, the precise definition of components or features provided by or within each cloud service layer can vary, but common examples include: Software as a Service (SaaS), in which consumers use software applications that are running upon a cloud infrastructure, while a SaaS provider manages or controls the underlying cloud infrastructure and applications. Platform as a Service (PaaS), in which consumers can use software programming languages and development tools supported by a PaaS provider to develop, deploy, and otherwise control their own applications, while the PaaS provider manages or controls other aspects of the cloud environment (i.e., everything below the run-time execution environment). Infrastructure as a Service (IaaS), in which consumers can deploy and run arbitrary software applications, and/or provision processing, storage, networks, and other fundamental computing resources, while an IaaS provider manages or controls the underlying physical cloud infrastructure (i.e., everything below the operating system layer). Database as a Service (DBaaS) in which consumers use a database server or Database Management System that is running upon a cloud infrastructure, while a DbaaS provider manages or controls the underlying cloud infrastructure, applications, and servers, including one or more database servers.


Extensions and Alternatives

Although some of the figures described in the foregoing specification include flow diagrams with steps that are shown in an order, the steps may be performed in any order, and are not limited to the order shown in those flowcharts. Additionally, some steps may be optional, may be performed multiple times, and/or may be performed by different components. All steps, operations and functions of a flow diagram that are described herein are intended to indicate operations that are performed using programming in a special-purpose computer or general-purpose computer, in various embodiments. In other words, each flow diagram in this disclosure, in combination with the related text herein, is a guide, plan or specification of all or part of an algorithm for programming a computer to execute the functions that are described. The level of skill in the field associated with this disclosure is known to be high, and therefore the flow diagrams and related text in this disclosure have been prepared to convey information at a level of sufficiency and detail that is normally expected in the field when skilled persons communicate among themselves with respect to programs, algorithms and their implementation. In the foregoing specification, the example embodiment(s) of the present invention have been described with reference to numerous specific details. However, the details may vary from implementation to implementation according to the requirements of the particular implement at hand. The example embodiment(s) are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims
  • 1. A method, comprising: a storage device receiving a filtered data block request from a database server specifying a range of data blocks to scan according to one or more filtering criteria specified by said filtered data block request, said range of data blocks corresponding to a plurality of regions described by an access-derived summary that is stored in non-volatile RAM (NVRAM) of said storage device;for a subset of regions of said plurality of regions: based on said access-derived summary, determining that said subset of regions do not contain any data blocks that have rows that satisfy said one or more filtering criteria;in response to determining that said subset of regions contains no data blocks that have rows that satisfy said one or more filtering criteria, pruning said subset of regions from scanning and filtering; andperforming a data block write operation to a particular data block within a second region of said plurality of regions;modifying in-flight metadata stored in said NVRAM to mark said second region as being subject to an in-flight data block write operation;for said filtered data block request; determining said in-flight metadata marks said second region as being subject to an in-flight data block write operation;in response to determining said in-flight metadata marks said second region as being subject to an in-flight data block write operation, performing a filtered data block scan of said second region;for a first region of said plurality of regions not in said subset of regions: in response to determining a result for said one or more filtering criteria for a filtered data block scan on said first region of said plurality of regions, updating said access-derived summary based on said result for said one or more filtering criteria.
  • 2. The method of claim 1, further including in response to completing writing said particular data block, modifying said in-flight metadata to mark said second region as not being subject of an in-flight data block write operation.
  • 3. The method of claim 2, wherein modifying said in-flight metadata includes incrementing an in-flight counter for said second region; andwherein the method further comprises decrementing said in-flight counter in response to completing writing said particular data block.
  • 4. The method of claim 2, further including: after volatile memory in said storage device losing data due to loss of power to said volatile memory: determining that an entry in said in-flight metadata marks said second region as being subject to an in-flight data block write operation; andin response to determining that an entry in said in-flight metadata marks said second region as being subject of an in-flight data block write operation, invalidating said entry.
  • 5. The method of claim 1, further including: after volatile memory in said storage device losing data due to loss of power to said volatile memory: receiving another filtered data block request; andto performing region pruning for said another filtered data block request, using entries in said access-derived summary that were stored were in said NVRAM before said loss of power.
  • 6. The method of claim 1, after volatile memory in said storage device losing data due to loss of power to said volatile memory: receiving another filtered data block request; andto perform region pruning another filtered data block request: using entries in said access-derived summary that were stored were in said NVRAM before said loss of power; andusing entries in said in-flight metadata that were stored were in said NVRAM before said loss of power.
  • 7. The method of claim 1, wherein updating said access-derived summary based on a result said filtered data block scan includes: determining that no rows in said first region of data blocks satisfy said filtering criteria; andupdating said access-derived summary in response to determining that no rows in said first region satisfy said filtering criteria.
  • 8. The method of claim 1, wherein said access-derived summary indicates at least one or max value and min value in a column stored at least some of said plurality of regions.
  • 9. One or more non-transitory computer-readable media storing one or more sequences of instructions that, when executed by one or more hardware processors, cause: a storage device receiving a filtered data block request from a database server specifying a range of data blocks to scan according to one or more filtering criteria specified by said filtered data block request, said range of data blocks corresponding to a plurality of regions described by an access-derived summary that is stored in nonvolatile RAM (NVRAM) of said storage device;for a subset of regions of said plurality of regions: based on said access-derived summary, determining that said subset of regions do not contain any data blocks that have rows that satisfy said one or more filtering criteria;in response to determining that said subset of regions contains no data blocks that have rows that satisfy said one or more filtering criteria, pruning said subset of regions from scanning and filtering; andperforming a data block write operation to a particular data block within a second region of said plurality of regions;modifying in-flight metadata stored in said NVRAM to mark said second region as being subject to an in-flight data block write operation:for said filtered data block request; determining said in-flight metadata marks said second region as being subject to an in-flight a data block write operation;in response to determining said in-flight metadata marks said second region as being subject to an in-flight data block write operation, performing a filtered data block scan of said second region;for a first region of said plurality of regions not in said subset of regions: in response to determining a result for said one or more filtering criteria for said filtered data block scan on said first region of said plurality of regions, updating said access-derived summary based on said result for said one or more filtering criteria.
  • 10. The one or more non-transitory computer-readable media of claim 9, wherein the one or more sequences of instructions include instructions that, when executed by one or more hardware processors, cause in response to completing writing said particular data block, modifying said in-flight metadata to mark said second region as not being subject to an in-flight data block write operation.
  • 11. The one or more non-transitory computer-readable media of claim 10, wherein modifying said in-flight metadata includes incrementing an in-flight counter for said second region; andwherein the one or more sequences of instructions include instructions that, when executed by one or more hardware processors, cause: decrementing said in-flight counter in response to completing writing said particular data block.
  • 12. The one or more non-transitory computer-readable media of claim 10, wherein the one or more sequences of instructions include instructions that, when executed by one or more hardware processors, cause after volatile memory in said storage device losing data due to loss of power to said volatile memory: determining that an entry in said in-flight metadata marks said second region as being subject to an in-flight data block write operation; andin response to determining that an entry in said in-flight metadata marks said second region as being subject of an in-flight data block write operation, invalidating said entry.
  • 13. The one or more non-transitory computer-readable media of claim 9, wherein the one or more sequences of instructions include instructions that, when executed by one or more hardware processors, cause after volatile memory in said storage device losing data due to a loss of power to said volatile memory: receiving another filtered data block request; andto perform region pruning for said another filtered data block request, using entries in said access-derived summary that were stored were in said NVRAM before said loss of power.
  • 14. The one or more non-transitory computer-readable media of claim 9, wherein the one or more sequences of instructions include instructions that, when executed by one or more hardware processors, cause after volatile memory in said storage device losing data due to a loss of power to said volatile memory: receiving another filtered data block request; andto perform region pruning for said another filtered data block request: using entries in said access-derived summary that were stored were in said NVRAM before said loss of power; andusing entries in said in-flight metadata that were stored were in said NVRAM before said loss of power.
  • 15. The one or more non-transitory computer-readable media of claim 9, wherein updating said access-derived summary based on said result for said one or more filtering criteria includes: determining that no rows in said first region satisfy said filtering criteria; andupdating said access-derived summary in response to determining that no rows in said first region satisfy said filtering criteria.
  • 16. The one or more non-transitory computer-readable media of claim 9, wherein said access-derived summary indicates at least one max value and min value in a column stored at least some of said plurality of regions.
US Referenced Citations (616)
Number Name Date Kind
4425615 Swenson et al. Jan 1984 A
4782325 Jeppsson et al. Nov 1988 A
4881166 Thompson Nov 1989 A
5095421 Freund Mar 1992 A
5241675 Sheth et al. Aug 1993 A
5255356 Michelman et al. Oct 1993 A
5263156 Bowen et al. Nov 1993 A
5265246 Li Nov 1993 A
5287496 Chen et al. Feb 1994 A
5333265 Orimo et al. Jul 1994 A
5333316 Champagne Jul 1994 A
5355477 Strickland et al. Oct 1994 A
5359724 Earle Oct 1994 A
5369757 Spiro et al. Nov 1994 A
5388196 Pajak et al. Feb 1995 A
5423037 Hvasshovd Jun 1995 A
5454102 Tang et al. Sep 1995 A
5504890 Sanford Apr 1996 A
5553279 Goldring Sep 1996 A
5555404 Torbjørnsen et al. Sep 1996 A
5559991 Kanfi Sep 1996 A
5566315 Milillo et al. Oct 1996 A
5574906 Morris Nov 1996 A
5581753 Terry et al. Dec 1996 A
5603024 Goldring Feb 1997 A
5613113 Goldring Mar 1997 A
5649156 Vishlitzky et al. Jul 1997 A
5717893 Mattson Feb 1998 A
5742792 Yanai et al. Apr 1998 A
5765034 Recio Jun 1998 A
5774643 Lubbers Jun 1998 A
5778430 Ish et al. Jul 1998 A
5806076 Ngai et al. Sep 1998 A
5848408 Jakobsson et al. Dec 1998 A
5870758 Bamford et al. Feb 1999 A
5870759 Bauer et al. Feb 1999 A
5870761 Demers et al. Feb 1999 A
5893086 Schmuck Apr 1999 A
5905985 Malloy May 1999 A
5924096 Draper et al. Jul 1999 A
5943666 Kleewein Aug 1999 A
5943689 Tamer Aug 1999 A
5951695 Kolovson Sep 1999 A
5953719 Kleewein Sep 1999 A
5956731 Bamford et al. Sep 1999 A
5960428 Lindsay Sep 1999 A
5974427 Reiter Oct 1999 A
5983277 Heile et al. Nov 1999 A
5987453 Krishna et al. Nov 1999 A
5987506 Carter Nov 1999 A
5991771 Falls et al. Nov 1999 A
5999943 Nori et al. Dec 1999 A
6009432 Tarin Dec 1999 A
6014669 Slaughter et al. Jan 2000 A
6023695 Osborn et al. Feb 2000 A
6035306 Lowenthal et al. Mar 2000 A
6044367 Wolff Mar 2000 A
6049798 Bishop et al. Apr 2000 A
6122630 Strickler et al. Sep 2000 A
6128621 Weisz Oct 2000 A
6192377 Ganesh et al. Feb 2001 B1
6298319 Heile et al. Oct 2001 B1
6298342 Graefe Oct 2001 B1
6317750 Tortolani et al. Nov 2001 B1
6341281 MacNicol Jan 2002 B1
6345267 Lohman Feb 2002 B1
6353828 Ganesh Mar 2002 B1
6353835 Lieuwen Mar 2002 B1
6370622 Chiou et al. Apr 2002 B1
6393485 Chao et al. May 2002 B1
6397195 Pinard et al. May 2002 B1
6397204 Liu May 2002 B1
6405208 Raghavan et al. Jun 2002 B1
6385604 Bakalash et al. Jul 2002 B1
6446063 Chen Sep 2002 B1
6457105 Spencer et al. Sep 2002 B1
6460045 Aboulnaga et al. Oct 2002 B1
6484179 Roccaforte Nov 2002 B1
6516327 Zondervan et al. Feb 2003 B1
6526483 Cho et al. Feb 2003 B1
6529896 Leung et al. Mar 2003 B1
6574717 Ngai et al. Jun 2003 B1
6611898 Slattery et al. Aug 2003 B1
6618729 Bhashyam et al. Sep 2003 B1
6636870 Roccaforte Oct 2003 B2
6662174 Shah et al. Dec 2003 B2
6665684 Zait et al. Dec 2003 B2
6691139 Ganesh et al. Feb 2004 B2
6711563 Koskas Mar 2004 B1
6728823 Walker et al. Apr 2004 B1
6732115 Shah et al. May 2004 B2
6748394 Shah et al. Jun 2004 B2
6775682 Ballamkonda Aug 2004 B1
6778996 Roccaforte Aug 2004 B2
6785666 Nareddy et al. Aug 2004 B1
6804714 Tummalapalli Oct 2004 B1
6839751 Dietz et al. Jan 2005 B1
6865575 Smith et al. Mar 2005 B1
6886084 Kawashima et al. Apr 2005 B2
6898608 Hopeman et al. May 2005 B2
6920640 Srinivasan et al. Jul 2005 B2
6922754 Liu et al. Jul 2005 B2
6928451 Mogi et al. Aug 2005 B2
6957210 Ramesh Oct 2005 B1
6957222 Ramesh Oct 2005 B1
6959304 Teig et al. Oct 2005 B1
6965891 Jakobsson Nov 2005 B1
6973457 Bastawala Dec 2005 B1
7007029 Chen Feb 2006 B1
7024656 Ahad Apr 2006 B1
7028046 Anjur et al. Apr 2006 B2
7031953 Shah et al. Apr 2006 B2
7031994 Lao et al. Apr 2006 B2
7047253 Murthy et al. May 2006 B1
7069324 Tiwana et al. Jun 2006 B1
7072897 Shah et al. Jul 2006 B2
7076507 Tarin Jul 2006 B1
7076508 Brourbonnais et al. Jul 2006 B2
7080090 Shah et al. Jul 2006 B2
7089331 Gollapudi et al. Aug 2006 B1
7092954 Ramesh Aug 2006 B1
7093162 Barga et al. Aug 2006 B2
7096224 Murthy et al. Aug 2006 B2
7103590 Murthy et al. Sep 2006 B1
7113951 Bourekas Nov 2006 B2
7143098 Chen Nov 2006 B2
7149769 Lubbers et al. Dec 2006 B2
7159076 Madter Jan 2007 B2
7165144 Choubal et al. Jan 2007 B2
7167859 Shah et al. Jan 2007 B2
7222136 Brown et al. May 2007 B1
7228300 Lei et al. Jun 2007 B2
7228354 Chambliss et al. Jun 2007 B2
7231387 Sauermann et al. Jun 2007 B2
7233952 Chen Jun 2007 B1
7237027 Raccah et al. Jun 2007 B1
7272589 Guay Sep 2007 B1
7287022 Netz et al. Oct 2007 B2
7287034 Wong et al. Oct 2007 B2
7290017 Wang et al. Oct 2007 B1
7290090 Madter Oct 2007 B2
7313559 Netz et al. Dec 2007 B2
7315849 Bakalash et al. Jan 2008 B2
7320001 Chen Jan 2008 B1
7324991 Anjur Jan 2008 B1
7333982 Bakalash et al. Feb 2008 B2
7334064 Davies Feb 2008 B2
7337163 Srinivasan Feb 2008 B1
7366730 Greenfield et al. Apr 2008 B2
7373353 Adler et al. May 2008 B2
7379944 Adler et al. May 2008 B2
7383275 Chen et al. Jun 2008 B2
7389283 Adler Jun 2008 B2
7389284 Surlaker et al. Jun 2008 B1
7392248 Bakalash Jun 2008 B2
7346617 Wong Aug 2008 B2
7415457 Dombroski et al. Aug 2008 B2
7415723 Pandya Aug 2008 B2
7418438 Gould et al. Aug 2008 B2
7433886 Rathakrishnan Oct 2008 B2
7437372 Chen et al. Oct 2008 B2
7461147 Mowat et al. Dec 2008 B1
7464113 Girkar et al. Dec 2008 B1
7467127 Baccash et al. Dec 2008 B1
7480662 Postapov et al. Jan 2009 B2
7480663 Colossi et al. Jan 2009 B2
7496589 Jain et al. Feb 2009 B1
7505888 Legault et al. Mar 2009 B2
7506103 Madter Mar 2009 B2
7548898 Tarenskeen et al. Jun 2009 B1
7558290 Nucci Jul 2009 B1
7558779 Luo Jul 2009 B2
7570451 Bedillion et al. Aug 2009 B2
7593955 Legault et al. Sep 2009 B2
7610300 Legault et al. Oct 2009 B2
7610351 Gollaapudi et al. Oct 2009 B1
7617235 Srinivassan Nov 2009 B2
7617312 Tummalapalli Nov 2009 B2
7627612 Ahal et al. Dec 2009 B2
7636814 Karr et al. Dec 2009 B1
7644084 Rapp Jan 2010 B2
7657503 Cormode et al. Feb 2010 B1
7657516 Zaman et al. Feb 2010 B2
7660823 Clover Feb 2010 B2
7660945 Lee Feb 2010 B1
7685092 Reichert et al. Mar 2010 B2
7689621 Huber et al. Mar 2010 B1
7693886 Novick Apr 2010 B1
7707143 Bruce et al. Apr 2010 B2
7716167 Colossi et al. May 2010 B2
7716172 Anjur et al. May 2010 B2
7725425 Smartt May 2010 B2
7725559 Landis May 2010 B2
7734652 Tamayo Jun 2010 B2
7765246 Basu et al. Jul 2010 B2
7769733 Chen et al. Aug 2010 B2
7769802 Smith Aug 2010 B2
7774303 Shoup Aug 2010 B2
7774379 Basu et al. Aug 2010 B2
7774568 Sudhakar Aug 2010 B2
7779038 Adler et al. Aug 2010 B2
7797320 Thomsen Sep 2010 B2
7814104 Raghavan et al. Oct 2010 B2
7831082 Adler et al. Nov 2010 B2
7831615 Bailey et al. Nov 2010 B2
7836262 Gunna et al. Nov 2010 B2
7860891 Adler et al. Dec 2010 B2
7873664 Andersch et al. Jan 2011 B2
7873684 Sounder et al. Jan 2011 B2
7885953 Chen Feb 2011 B2
7890546 Shah et al. Feb 2011 B2
7895191 Colossi et al. Feb 2011 B2
7904327 Phelan et al. Mar 2011 B2
7904562 Takase et al. Mar 2011 B2
7912051 Rowlands et al. Mar 2011 B1
7917539 Srinivasan Mar 2011 B1
7921686 Bagepalli Apr 2011 B2
7930200 McGuirtk et al. Apr 2011 B1
7949674 Middelfart May 2011 B2
7962458 Holenstein Jun 2011 B2
7966293 Owara et al. Jun 2011 B1
7966322 Clover Jun 2011 B2
7966330 Raghavan et al. Jun 2011 B2
7979425 Garg et al. Jul 2011 B2
7996378 Wang et al. Aug 2011 B2
8000996 Sanli et al. Aug 2011 B1
8001112 Dombroski et al. Aug 2011 B2
8032499 Faerber et al. Oct 2011 B2
8041670 Bakalash Oct 2011 B2
8051102 Everett Nov 2011 B2
8065262 Bailey Nov 2011 B2
8082239 Yang et al. Dec 2011 B2
8126871 Malloy et al. Feb 2012 B2
8131533 Legault et al. Mar 2012 B2
8135688 Shankar et al. Mar 2012 B2
8145838 Miller et al. Mar 2012 B1
8150850 Hernstadt Apr 2012 B2
8160917 Solanki et al. Apr 2012 B1
8161085 Souder et al. Apr 2012 B2
8170984 Bakalash et al. May 2012 B2
8195602 Bakalash et al. Jun 2012 B2
8195645 Thiebaut-George Jun 2012 B2
8200612 Soylemez Jun 2012 B2
8203972 Sauermann Jun 2012 B2
8204892 Balebail et al. Jun 2012 B2
8209208 Kearney et al. Jun 2012 B2
8209294 Shankar et al. Jun 2012 B2
8244984 Glasco et al. Aug 2012 B1
8266472 Bose Sep 2012 B2
8311975 Gonsalves Nov 2012 B1
8327080 Der Dec 2012 B1
8359429 Sharma et al. Jan 2013 B1
8370452 Harvell et al. Feb 2013 B2
8392382 Marwah et al. Mar 2013 B2
8433684 Munoz Apr 2013 B2
8521923 Lee et al. Aug 2013 B2
8554761 Ahmed Oct 2013 B1
8566297 Dowers Oct 2013 B1
8583692 Ganesh Nov 2013 B2
8627136 Shankar Jan 2014 B2
8645337 Kapoor et al. Feb 2014 B2
8683139 Gaither Mar 2014 B2
8706687 Fineberg Apr 2014 B2
8788453 Bakalash Jul 2014 B2
8799209 Bakalash Aug 2014 B2
8832142 Marwah et al. Sep 2014 B2
8856484 Ben-Tsion et al. Oct 2014 B2
8868831 Goyal et al. Oct 2014 B2
8977801 Grube Mar 2015 B2
9003159 Deshkar Apr 2015 B2
9075710 Talagala Jul 2015 B2
9164702 Nesbit et al. Oct 2015 B1
9183254 Cole Nov 2015 B1
9256542 Flower Feb 2016 B1
9263102 Flynn Feb 2016 B2
9292564 Kamp et al. Mar 2016 B2
9306947 Kolbly Apr 2016 B2
9361232 Umamageswaran et al. Jun 2016 B2
9405694 Goyal et al. Aug 2016 B2
9514187 Ziauddin Dec 2016 B2
9659039 Ziauddin et al. May 2017 B2
9703706 Bagal et al. Jul 2017 B2
9941311 Hayk et al. Apr 2018 B2
9952782 Chandrasekaran Apr 2018 B1
10133667 Mukherjee et al. Nov 2018 B2
10148548 Griffin Dec 2018 B1
10223326 Frank et al. Mar 2019 B2
10311154 Lahiri et al. Jun 2019 B2
10592416 Baddepudi et al. Mar 2020 B2
20020038384 Khan Mar 2002 A1
20020059287 Karasudani May 2002 A1
20020078068 Krishnaprasad et al. Jun 2002 A1
20020095397 Koskas Jul 2002 A1
20020095421 Koskas Jul 2002 A1
20020133508 Larue et al. Sep 2002 A1
20020143755 Wynblatt et al. Oct 2002 A1
20020165724 Bartus Nov 2002 A1
20030005223 Coulson Jan 2003 A1
20030046298 Weedon Mar 2003 A1
20030059287 Warhurst et al. Mar 2003 A1
20030115324 Blumenau Jun 2003 A1
20030126143 Roussopoulos Jul 2003 A1
20030131215 Bellew Jul 2003 A1
20030195898 Agarwal et al. Oct 2003 A1
20030208484 Chang Nov 2003 A1
20030217236 Rowlands Nov 2003 A1
20040003087 Chambliss et al. Jan 2004 A1
20040033803 Varonen et al. Feb 2004 A1
20040054860 Dixit Mar 2004 A1
20040062106 Ramesh et al. Apr 2004 A1
20040064466 Manikutty et al. Apr 2004 A1
20040073754 Cypher Apr 2004 A1
20040078533 Lee Apr 2004 A1
20040117396 Avadhanam et al. Jun 2004 A1
20040117441 Liu et al. Jun 2004 A1
20040122910 Douglass et al. Jun 2004 A1
20040148486 Burton Jul 2004 A1
20040153435 Gudbjartsson et al. Aug 2004 A1
20040158566 Chong, Jr. Aug 2004 A1
20040177065 Tropf Sep 2004 A1
20040193574 Suzuki Sep 2004 A1
20040199552 Ward et al. Oct 2004 A1
20040225639 Jakobsson Nov 2004 A1
20040225719 Kisley et al. Nov 2004 A1
20040225720 Pinkerton Nov 2004 A1
20040225845 Kruckemyer et al. Nov 2004 A1
20040230753 Amiri Nov 2004 A1
20040236786 Medicke Nov 2004 A1
20040254943 Malcolm Dec 2004 A1
20050004936 Potapov Jan 2005 A1
20050033741 Dombroski et al. Feb 2005 A1
20050033756 Kottomtharayil Feb 2005 A1
20050044102 Gupta et al. Feb 2005 A1
20050055355 Murthy et al. Mar 2005 A1
20050055380 Thompson et al. Mar 2005 A1
20050056520 Dharmapurikar et al. Apr 2005 A1
20050086267 Avadhanam et al. Apr 2005 A1
20050102467 Lam et al. May 2005 A1
20050120025 Rodriguez et al. Jun 2005 A1
20050132017 Biran et al. Jun 2005 A1
20050160224 Cuomo et al. Jul 2005 A1
20050165798 Cherkauer et al. Jul 2005 A1
20050193160 Bhatt et al. Sep 2005 A1
20050198062 Shapiro Sep 2005 A1
20050210202 Choubal et al. Sep 2005 A1
20050283637 Coldicott et al. Dec 2005 A1
20060004691 Sifry Jan 2006 A1
20060010130 Leff et al. Jan 2006 A1
20060026115 Ahmed Feb 2006 A1
20060047670 Yu et al. Mar 2006 A1
20060064441 Yamamoto Mar 2006 A1
20060101001 Lindsay May 2006 A1
20060106890 Paul et al. May 2006 A1
20060122964 Yu Jun 2006 A1
20060146814 Shah et al. Jul 2006 A1
20060149786 Nishiyama Jul 2006 A1
20060173833 Purcell et al. Aug 2006 A1
20060184519 Smartt Aug 2006 A1
20060209444 Song Sep 2006 A1
20060212481 Stacey et al. Sep 2006 A1
20060218123 Chowdhuri et al. Sep 2006 A1
20060224451 Kerschbrock et al. Oct 2006 A1
20060224551 Lariba-Pey et al. Oct 2006 A1
20060235823 Chong Oct 2006 A1
20060253429 Raghavan Nov 2006 A1
20060271605 Petruzzo Nov 2006 A1
20060271740 Mark Nov 2006 A1
20060277439 Davia et al. Dec 2006 A1
20070027860 Bestgen Feb 2007 A1
20070038689 Shinkai Feb 2007 A1
20070041718 Fontijn Feb 2007 A1
20070006757 Morris et al. Mar 2007 A1
20070061287 Le et al. Mar 2007 A1
20070067575 Morris et al. Mar 2007 A1
20070078813 Beavin Apr 2007 A1
20070078914 Correl Apr 2007 A1
20070078940 Fineberg et al. Apr 2007 A1
20070083489 Lawande Apr 2007 A1
20070083505 Ferrari et al. Apr 2007 A1
20070124415 Lev-Ran et al. May 2007 A1
20070156957 MacHardy et al. Jul 2007 A1
20070220348 Mendoza et al. Sep 2007 A1
20070226277 Holenstein et al. Sep 2007 A1
20070233648 Zuzarte Oct 2007 A1
20070239673 Barsness Oct 2007 A1
20070239791 Cattell Oct 2007 A1
20070250473 Larson Oct 2007 A1
20070260819 Gao et al. Nov 2007 A1
20070271570 Brown et al. Nov 2007 A1
20080016283 Madter Jan 2008 A1
20080046736 Arimilli et al. Feb 2008 A1
20080059415 Bakalash Mar 2008 A1
20080059492 Tarin Mar 2008 A1
20080098044 Todd Apr 2008 A1
20080104283 Shin et al. May 2008 A1
20080104329 Gaither et al. May 2008 A1
20080147599 Young-Lai Jun 2008 A1
20080155229 Beyer et al. Jun 2008 A1
20080155303 Toeroe Jun 2008 A1
20080172354 Zuarte Jul 2008 A1
20080177803 Fineberg et al. Jul 2008 A1
20080195668 Chandrasekar et al. Aug 2008 A1
20080201234 Castro Aug 2008 A1
20080209009 Katvvala et al. Aug 2008 A1
20080215544 Galindo-Legaria Sep 2008 A1
20080215580 Altinel et al. Sep 2008 A1
20080219575 Wittenstein Sep 2008 A1
20080222136 Yates Sep 2008 A1
20080222159 Aranha et al. Sep 2008 A1
20080235479 Scales Sep 2008 A1
20080244209 Seelam et al. Oct 2008 A1
20080256250 Wakefiled et al. Oct 2008 A1
20080281784 Zane et al. Nov 2008 A1
20080281865 Price et al. Nov 2008 A1
20080222111 Hoang et al. Dec 2008 A1
20080307266 Chandrasekaran Dec 2008 A1
20090019017 Chaves Jan 2009 A1
20090030911 Guo Jan 2009 A1
20090106210 Slezak Apr 2009 A1
20090112793 Ahmed Apr 2009 A1
20090138944 Rajasekaran May 2009 A1
20090164536 Nasre et al. Jun 2009 A1
20090171679 Salgado et al. Jul 2009 A1
20090182720 Cain et al. Jul 2009 A1
20090182960 Crockett Jul 2009 A1
20090193189 Carswell et al. Jul 2009 A1
20090235230 Lucas Sep 2009 A1
20090240664 Dinker Sep 2009 A1
20090248871 Takase et al. Oct 2009 A1
20090265335 Hoffman Oct 2009 A1
20090276479 Lucas Nov 2009 A1
20090281985 Aggarwal Nov 2009 A1
20090287737 Hammerly Nov 2009 A1
20090292861 Kanevsky Nov 2009 A1
20090292887 Manczak Nov 2009 A1
20090307290 Barsness et al. Dec 2009 A1
20090313311 Hoffmann Dec 2009 A1
20100017556 Chin et al. Jan 2010 A1
20100036843 MacNaughton et al. Feb 2010 A1
20100042587 Johnson Feb 2010 A1
20100070448 Omoigui Mar 2010 A1
20100077107 Lee et al. Mar 2010 A1
20100082648 Potapov Apr 2010 A1
20100095059 Kisley et al. Apr 2010 A1
20100122026 Umamageswaran et al. May 2010 A1
20100145909 Ngo Jun 2010 A1
20100158486 Moon Jun 2010 A1
20100161567 Makela Jun 2010 A1
20100199042 Bates Aug 2010 A1
20100205367 Ehrlich Aug 2010 A1
20100235335 Heman et al. Sep 2010 A1
20100235344 Chandrasekar Sep 2010 A1
20100250549 Muller et al. Sep 2010 A1
20100257181 Zhou Oct 2010 A1
20100274962 Moesk Oct 2010 A1
20100278446 Ganesh et al. Nov 2010 A1
20100281017 Hu Nov 2010 A1
20100299337 Aurin Nov 2010 A1
20100299367 Chakrabarti et al. Nov 2010 A1
20100306234 Wang et al. Dec 2010 A1
20100332654 Bose Dec 2010 A1
20100332901 Nussbaum et al. Dec 2010 A1
20110016157 Bear et al. Jan 2011 A1
20110022801 Flynn Jan 2011 A1
20110029569 Ganesh et al. Feb 2011 A1
20110040745 Zaydman Feb 2011 A1
20110040861 Van Der Merwe Feb 2011 A1
20110041006 Fowler Feb 2011 A1
20110047330 Potapov Feb 2011 A1
20110055246 Le Biannic et al. Mar 2011 A1
20110066791 Goyal et al. Mar 2011 A1
20110071981 Ghosh Mar 2011 A1
20110072217 Hoang Mar 2011 A1
20110087637 Sundaram et al. Apr 2011 A1
20110137917 Boland et al. Jun 2011 A1
20110137940 Gradin et al. Jun 2011 A1
20110138123 Aditya et al. Jun 2011 A1
20110145244 Kim et al. Jun 2011 A1
20110153719 Santoro Jun 2011 A1
20110173164 Bendel Jul 2011 A1
20110173325 Cherian et al. Jul 2011 A1
20110191522 Condict Aug 2011 A1
20110191543 Craske et al. Aug 2011 A1
20110196857 Chen Aug 2011 A1
20110238899 Yano Sep 2011 A1
20110258376 Young Oct 2011 A1
20110282864 Collins Nov 2011 A1
20110320804 Chan et al. Dec 2011 A1
20120005184 Thilagar et al. Jan 2012 A1
20120013758 Frederiksen Jan 2012 A1
20120017037 Riddle Jan 2012 A1
20120054225 Marwah Mar 2012 A1
20120054533 Shi et al. Mar 2012 A1
20120063533 Fonseka Mar 2012 A1
20120117038 Ganesh et al. May 2012 A1
20120117054 Shrinivas May 2012 A1
20120144234 Clark et al. Jun 2012 A1
20120158650 Andre Jun 2012 A1
20120158729 Mital Jun 2012 A1
20120166729 Donley Jun 2012 A1
20120166886 Shankar et al. Jun 2012 A1
20120173774 Lee Jul 2012 A1
20120173844 Punde et al. Jul 2012 A1
20120209873 He Aug 2012 A1
20120221788 Raghunathan Aug 2012 A1
20120246202 Surtani Sep 2012 A1
20120265743 Ivanova Oct 2012 A1
20120290786 Mesnier Nov 2012 A1
20120296883 Ganesh Nov 2012 A1
20120296942 Arora Nov 2012 A1
20120323849 Garin et al. Dec 2012 A1
20120323970 Larson Dec 2012 A1
20120323971 Pasupuleti Dec 2012 A1
20130006965 Barbas Jan 2013 A1
20130007180 Talpey et al. Jan 2013 A1
20130019000 Markus Jan 2013 A1
20130024433 Amit Jan 2013 A1
20130066949 Colrain Mar 2013 A1
20130086330 Baddepudi Apr 2013 A1
20130091331 Moraru Apr 2013 A1
20130117255 Liu et al. May 2013 A1
20130132684 Ostrovsky May 2013 A1
20130132705 Ishii May 2013 A1
20130151491 Gislason Jun 2013 A1
20130166534 Yoon Jun 2013 A1
20130166553 Yoon Jun 2013 A1
20130173528 Betawadkar-Norwod et al. Jul 2013 A1
20130198165 Cheng Aug 2013 A1
20130212332 Umamageswaran Aug 2013 A1
20130198312 Tamir et al. Sep 2013 A1
20130232190 Miller et al. Sep 2013 A1
20130246484 Stolte Sep 2013 A1
20130275364 Wang Oct 2013 A1
20130275367 Shuma Oct 2013 A1
20130275391 Batwara Oct 2013 A1
20130290598 Fiske Oct 2013 A1
20130326152 Loaiza et al. Dec 2013 A1
20140012814 Bercovici Jan 2014 A1
20140040218 Kimura et al. Feb 2014 A1
20140047263 Coathney Feb 2014 A1
20140075493 Krishnan et al. Mar 2014 A1
20140089565 Lee Mar 2014 A1
20140010842 Isaacson Apr 2014 A1
20140095502 Ziauddin Apr 2014 A1
20140095534 Aingaran Apr 2014 A1
20140101201 Yan Apr 2014 A1
20140108421 Isaacson et al. Apr 2014 A1
20140108751 Brown et al. Apr 2014 A1
20140143364 Guerin May 2014 A1
20140149638 Jain May 2014 A1
20140181072 Wong Jun 2014 A1
20140200166 Van Rooyen Jul 2014 A1
20140214796 Barber Jul 2014 A1
20140281167 Danilak Sep 2014 A1
20140281247 Loaiza et al. Sep 2014 A1
20140281272 Loaiza et al. Sep 2014 A1
20140325115 Ramsundar Oct 2014 A1
20140337314 Potapov et al. Nov 2014 A1
20140337593 Holbrook Nov 2014 A1
20140372438 Chandramouli Dec 2014 A1
20140372486 Bose Dec 2014 A1
20140372489 Jaiswal Dec 2014 A1
20140372702 Subramanyam Dec 2014 A1
20150006482 Hardy Jan 2015 A1
20150006813 Goyal et al. Jan 2015 A1
20150012690 Bruce Jan 2015 A1
20150012735 Tamir et al. Jan 2015 A1
20150019834 Loh Jan 2015 A1
20150032763 Marwah Jan 2015 A1
20150039712 Frank et al. Feb 2015 A1
20150067087 Guerin Mar 2015 A1
20150088795 Golovashkin et al. Mar 2015 A1
20150088809 Kociubes et al. Mar 2015 A1
20150088811 Hase et al. Mar 2015 A1
20150088822 Raja et al. Mar 2015 A1
20150088824 Kamp et al. Mar 2015 A1
20150088830 Kamp et al. Mar 2015 A1
20150088885 Hopeman, IV et al. Mar 2015 A1
20150088919 Hunter et al. Mar 2015 A1
20150088926 Chavan et al. Mar 2015 A1
20150089121 Coudhury et al. Mar 2015 A1
20150089125 Mukherjee et al. Mar 2015 A1
20150089134 Mukherjee Mar 2015 A1
20150089138 Tao et al. Mar 2015 A1
20150089140 Sridharan et al. Mar 2015 A1
20150100556 Sekiguchi Apr 2015 A1
20150149479 Geringer et al. May 2015 A1
20150150017 Hu May 2015 A1
20150187430 Suzuki Jul 2015 A1
20150242452 Dickie Aug 2015 A1
20150286681 Baer Oct 2015 A1
20150317349 Chao Nov 2015 A1
20160026579 Samanta Jan 2016 A1
20160078064 Sassin Mar 2016 A1
20160092491 Cowling Mar 2016 A1
20160092507 Ng et al. Mar 2016 A1
20160103767 Banerjee et al. Apr 2016 A1
20160132411 Jolad et al. May 2016 A1
20160188414 Jayakumar Jun 2016 A1
20160306574 Friedman Oct 2016 A1
20160306923 Van Rooyen Oct 2016 A1
20160308968 Friedman Oct 2016 A1
20160328301 Parakh et al. Nov 2016 A1
20160335310 Lahiri et al. Nov 2016 A1
20160371347 Aronovich Dec 2016 A1
20170060918 Iyer Mar 2017 A1
20170109317 Hack et al. Apr 2017 A1
20170116136 Manicol Apr 2017 A1
20170166136 Jones Jun 2017 A1
20170177488 Leung Jun 2017 A1
20170206199 Umamageswaran Jul 2017 A1
20170269837 Stevens Sep 2017 A1
20170300592 Breslow Oct 2017 A1
20180011893 Kimura Jan 2018 A1
20180321846 Zhang Nov 2018 A1
20180341596 Teotia Nov 2018 A1
Foreign Referenced Citations (14)
Number Date Country
101150483 Mar 2008 CN
0 501 180 Sep 1992 EP
0706140 Oct 1996 EP
2409 301 Jun 2005 GB
2002278704 Sep 2002 JP
2003150419 May 2003 JP
2004038758 Feb 2004 JP
WO 9318461 Sep 1993 WO
WO2007045839 Apr 2007 WO
WO2007078444 Jul 2007 WO
WO2012032184 Mar 2012 WO
WO 2013109640 Jul 2013 WO
WO2013109640 Jul 2013 WO
WO 2015094179 Jun 2015 WO
Non-Patent Literature Citations (127)
Entry
Feng et al., “Accelerating Relational Databases by Leveraging Remote Memory and RDMA”, Proceedings of the 2016 International Conference on Management of Data, Sigmod, Jan. 1, 2016, pp. 355-370.
Aronovich et al., “The Design of a Similarity Based Deduplication System”, Systor, 2009, 14 pages.
Forman et al., “Efficient Detection of Large-Scale Redundancy in Enterprise File Systems”, dated Jan. 2009, 8 pages.
Bober, Paul M., et al., “On Mixing Queries and Transactions via Multiversion Locking”, Computer Sciences Department, University of Wisconsin, 1992, pp. 535-545.
Mohan, C., et al., “Efficient and Flexible Methods for Transient Versioning of Records to Avoid Locking by Read-Only Transactions”, XP000393583, IBM Almaden Research Center, publication date Feb. 6, 1992, pp. 124-133.
DB Technology, “Netezza Questions and Answers”, dated Aug. 2, 2009, 5 pages.
MSDN Library, “Dimension Set Entires”, NAV 2013 Documentation, dated Nov. 21, 2012, Retrieved on Sep. 13, 2017, 22 pages.
Harder Theo et al., “Database Caching—Towards a Cost Model for Populating Cache Groups,” ADBIS 2004, LNCS 3255, A. Benczur, J. Demetrovics, 15 pages.
Oracle, Oracle Times Ten In-Memory Database API and SQI Reference Guide, Release 6.0, dated 2006, 37 pages.
Teschke et al., “Concurrent Warehouse Maintenance Without Comprising Session Consistency”, University of Erlangen-Nuremberg., Pub 1998, 10 pages.
Vassilakis et al., “Implementation of Transaction and Concurrency Control Support in a Temporal DBMS”, Department of Information Systems, University of Athens, vol. 23 No. 5. Pub 1998, 16 pages.
Oracle®, “TimesTen to TimesTen Replication Guide” Release 7.0, B31684-03, Sep. 2007. http://download.oracle.com/otn_hosted_doc/timesten/703/TimesTen-Documentation/replication.pdf.
Oracle®, “TimesTen to TimesTen In-Memory Database Introduction” Release 7.0, B31687-03, Sep. 2007. http://download.oracle.com/otn_hosted_doc/timesten/703/TimesTen-Documentation/intro.pdf.
Oracle® Clusterware, Administration and Deployment Guide, 11g Release 1 (11.1), B28255-06, Oct. 2008. http://download.oracle.com/docs/cd/B28359_01/rac.111/b28255.pdf.
The Times Ten Team, Mid-Tier Caching: The Times Ten Approach, Jun. 2002. ACM Sigmod, 6 pages.
Bornhovd et al., “Adaptive Database Caching with DBCache”, IEEE 2004, pp. 11-18.
The TimesTen Team, “High Performance and Scalability through Application-Tier, In-Memory Management”, Proceedings of 26th International Conference on Very Large Databases, Cairo, Egypt, 2000, pp. 677-680.
Microsoft, “Database Instant File Initialization”, SQL Server 2016, https://msdn.microsoft.com/en-us/library/ms175935.aspx, 3 pages.
Hilland et al., “RDMA Protocol Verbs Specification” Version 1.0), dated Apr. 25, 2003, 243 pages.
Culley P. et al., “An RDMA Protocol Specification” Internet Draft, dated Sep. 16, 2002, 58 pages.
Ailamaki, Anastassia, et al, “Weaving Relations for Cache Performance,” Proceedings of the 27th International Conference on Very Large Data Bases, Rome, Italy, Sep. 11-14, 2001, 14 pages.
Elmasri, et al., “Fundamentals of Database Systems,” Third Edition, Addison-Wesley Longman, Inc., Copyright © 2000, ISBN-0-8053-1755-4, pp. 32, 70, 118, 131-132, 134, 155-159, 170, 252-254, 558, 569-573, 591-592, and 789-790 (26 pgs).
Farber et al., “SAP HANA Database—Data Management for Modern Business Applications”, Sigmod Record, dated Dec. 2011, vol. 40, No. 4, 8 pages.
Dittrich et al., “Towards a One Size Fits All Database Architecture” Proceedings of the 5th Biennial Conference on Innovative Data Systems Research, dated Jan. 6, 2011, 4 pages.
Dijcks, Jean-Pierre, “A not so fabulous New Release (the Data Warehouse Insider)”, dated Aug. 30, 2009, 9 pages.
Loizos et al., “Improving Join Efficiency with Extended Bloom Filter Operations”, AMC, 2007, 8 pages.
Banerjee et al., “Oracle8i—the XML Enabled Data Management System”, dated 2000 Proceedings 16th International, Conference on Data Engineering, 8 pages.
“XQuery 1.0: An XML Query Language”, dated Dec. 14, 2010, W3C.
Howard, Philip, “Netezza: More Than You Might Imagine”, Bloor Research, dated Oct. 3, 2006, 6 pages.
IBM, “Best Practices Physical Database Design for Data Warehouse Environments”, dated 2012, 70 pages.
IBM TDB, “A Scheduling Algorithm for Processing Mutually Exclusive Workloads in a multi-system Configuration”, ip.com dated Aug. 19, 2002 (3 pages).
Dharmapurikar, Sarang, et al., “Deep Packet Inspection using Parallel Bloom Filters,” retrieved from the internet at <http://www.arl.wustl.edu/˜sarang/27_dharmapurikar_s_updated.pdf>, retrieved on Oct. 28, 2005, 8 pages.
Oracle, Automatic Storage Management Administrator's Guide, 1 Introduction to Oracle Automatic Storage Management, dated 2016, 12 pages.
Bloom, Burton H. (1970), “Space/time trade-offs in hash coding with allowable errors”, Communications of the ACM 13 (7): 422-426.
Oracle, “Data Warehousing on Oracle RAC Best Practices,” Oct. 2008, 28 pages. http://www.oracle.com/technology/products/database/clustering/pdf/bp_rac_dw.pdf.
DBMS 2: DataBase Management System Services, “Netezza vs. Conventional Data Warehousing RDBMS”, dated Sep. 20, 2006, 8 pages.
Abadi, D. et al., “Column-Stores vs. Row-Stores: How Different are They Really?”, Sigmod 2008(14 pages).
O'Neil, P., et al., “Multi-table joins through bitmapped join indices”, Sigmod Record, ACM, New York, NY, US, vol. 24, No. 3, Sep. 1, 1995, pp. 8-11, ISSN: 0163-5808.
Mackert, F. Lothar et al., “R* optimizer validation and performance evaluation for local queries” Sigmod Record, ACM, New York, NY, US., vol. 15, No. 2, Jun. 1, 1986, pp. 84-95, ISSN: 0163-5808.
Zhe, Li, et al., “PERF join: an alternative to two-way semijoin and Bloomjoin” Proceedings of the 1995 ACM CIKM International Conference on Information and Knowledge Management ACM New York. NY, US., 1995, pp. 187-144, ISBN: 0-89791-812-6.
Graefe et al., “Hash joins and hash teams in Microsoft SQL server,” 1998. Proceedings of the 24th VLDB Conference New York, USA, pp. 87-90. http://www.sigmod.org/vldb/conf/1998/p086.
Khalid Sayood:, “Introduction to data Compression”, Morgan Kaufmann Publisher, dated Dec. 1996, 4 pages.
Schaffner et al., “A Hybrid Row-Column OLTP Database Architecture for Operational Reporting”, dated Aug. 24, 2008, 14 pages.
Chen et al., “Adjoined Dimension Colum Clustering to Improve Data Warehouse Query Performance”, IEEE, dated 2008, 4 pages.
Birmingham, David, “Netezza Underground”, “Zone Maps and Data Power”, dated Jul. 11, 2011, 5 pages.
Big Data Topics, “Using nz_Zonemap to Visualize Netezza's Zone Map Effectiveness”, dated Jul. 20, 2012, 5 pages.
Battacharjee et al., “Efficient Query Processing for Multi-Dimensionally Cluster Tables in DB2”, Proceedings dated 2003, VLDB Conference, dated Jan. 1, 2013, 12 pages.
An Oracle White Paper, “A Technical Overview of the Oracle Exadata Database Machine and Exadata Storage Server”, dated Jun. 2012, 36 pages.
W3Schools “SQL Update Statement”, Wayback Machine darted Apr. 19, 2012, on the internet www.w3schools.com/sql/sql_update.asp>, 1 page.
Snow, Dwaine, “FUD Competitors are Spreading on Netezza”, dated Jun. 28, 2012, 3 pages.
Shao et al., “Clotho: Decoupling Memory Page Layout from Storage Organization”, Proceedings of the 30th VLDB Conference, Toronto, Canada, 2004, 12 pages.
Ronthal, Adam, “Appliances are Easy to Use”, Blog, dated Mar. 27, 2012, 3 pages.
Ramamurthy, Ravishankar, “A Case for Fractured Mirrors” Proceedings of the 28th VLDB Conference, dated, 2002, 12 pages.
Phipps, Colin:, “Mapping Deflated Files”, Internet Article, dated Jan. 6, 2013, http://zsync.moria.org.uk/paper/ch03s02.html, 3 pages.
Oracle, Help Center, “Database Installation Guide”, 3 Oracle Grid Infrastructure for a Standalone Server, dated 2016, 29 pages.
Oracle, “Oracle7 Server Concepts”, Release 7.3, dated Feb. 1996, 178 pages.
Zhe, Li, et al., “PERF join: an alternative to two-way semijoin and Bloomjoin” Proceedings of the 1995 ACM CIKM International Conference on Information and Knowledge Management 1995, pp. 187-144.
Oracle Database, “Oracle Real Application Clusters (RAC)”, an Oracle White Paper, dated Jun. 2013, 23 pages.
O'Neil et al., “The Star Schema Benchmark and Augmented fact Table Indexing”, dated Aug. 24, 2009, 16 pages.
NZGuv, Netezza Tips, Tricks and Cool SQL, “With Netezza Always Use Integer Join Keys for Good Compression, Zone Maps, and Joins” dated Nov. 20, 2010, 1 page.
Nirmesh, Malviya, “Recovery Algorithms for In-Memory OLTP Databases”, Master of Science Thesis, dated Jul. 1, 2012, 66 pages.
Netezza Database Software Technology, “A partial Overview of Netzza Database Software Technology”, dated Jun. 21, 2010, 12 pages.
Nanda, Arupa, “Oracle Exadata: Smart Scans Meet Storage Indexes”, dated May 2011, 4 pages.
Ziauddin, U.S. Appl. No. 15/638,226, filed Jun. 29, 2017, Office Action, dated Oct. 17, 2019.
Umamageswaran, U.S. Appl. No. 15/410,496, filed Jan. 19, 2017, Office Action, dated Sep. 9, 2019.
Frank, U.S. Appl. No. 13/956,096, filed Jul. 31, 2013, Supplemental Notice of Allowability, dated Jun. 13, 2018.
Umamageswaran, U.S. Appl. No. 15/410,496, filed Jan. 19, 2017, Final Office Action, dated Apr. 26, 2019.
Rest, U.S. Appl. No. 15/409,091, filed Jan. 18, 2017, Notice of Allowance, dated May 14, 2019.
Lahiri, U.S. Appl. 14/709,018, filed May 11, 2015, Office Action, dated Apr. 22, 2019.
Umamageswarn, U.S. Appl. No. 15/410,496, filed Jan. 19, 2017, Interview Summary, dated Jan. 23, 2019.
U.S. Appl. No. 13/956,096, filed Jul. 31, 2013, Office Action, dated Sep. 9, 2016.
U.S. Appl. No. 13/956,096, filed Jul. 31, 2013, Office Action, dated May 7, 2015.
U.S. Appl. No. 13/956,096, filed Jul. 31, 2013, Final Office Action, dated Jan. 15, 2016.
Muhkherjee et al., U.S. Appl. No. 15/257,754, filed Sep. 6, 2016, Office Action, dated Nov. 16, 2017.
Lahiri, U.S. Appl. No. 14/709,018, filed May 11, 2015, Office Action, dated Oct. 18, 2017.
Frank, U.S. Appl. No. 13/956,096, filed Jul. 31, 2013, Final Office Action, dated Apr. 5, 2017.
Frank, U.S. Appl. No. 13/956,096, filed Jul. 31, 2013, Advisory Action, dated Aug. 29, 2017.
Frank, U.S. Appl. No. 13/956,096, filed Jul. 31, 2013, Notice of Allowance, dated Mar. 26, 2018.
Mukherjee, N., et al. “Distributed Architecture of Oracle Database In-memory”. Proceedings of the VLDB Endowment, 2015, 12 pages.
Abadi D. J., Myers D.S., DeWitt D. J., Madden S.R. Materialization Strategies in a Column-Oriented DBMS. Proceedings of ICDE, 2007, 11 pages.
Anonymous: “Chapter 6 Handling Transactions with Enterprise Beans”, dated Jan. 1, 2004, https://docs.oracle.com/cd/E19229-01/819-1644/detrans.html, 16 pages.
Anonymous: “Transaction Handling”, dated Jan. 1, 2002, https://docs.oracle.com/cd/A87860_01/doc/java.817/a83725/trans1.htm, 12 pages.
Bellamkonda S., Ahmed R., et al. Enhanced Subquery Optimizations in Oracle. Proceedings of the VLDB Endowment, 2009, 12 pages.
Bernstein, P. A., Chiu, D. W. Using semi-joins to solve relational queries. Journal of the ACM, 28(1), pp. 25-40, 1981.
Ceri, S., Negri, M., Pelagatti, G. Horizontal Data Partitioning in Database Design, Sigmod, pp. 128-136, 1982.
A Technical Overview of Oracle Exadata Database Machine and Exadata Storage Server. Oracle White Paper, Jun. 2012 36 pages.
Kimballet al. “The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling”, (2nd edition), John Wiley & Sons, Inc., New York, 2002, 449 pages.
Weininger, A. Efficient execution of joins in a star schema. Sigmod, pp. 542-545, dated 2002, 4 pages.
Netezza Zone Maps. http://www-01.ibm.com/support/knowledgecenter/SSULQD_7.2.0/com.ibm.nz.adm.doc/c_sysadm_zone_maps.html, 2 pages, last viewed on Aug. 21, 2017.
O'Neil, P., O'Neil, B., Chen, X. Star Schema Benchmark. http://www.cs.umb.edu/˜poneil/StarSchemaB.PDF, dated Jun. 5, 2009, 10 pages.
Oracle Database In-Memory. Oracle White Paper, Jul. 2015. http://www.oracle.com/technetwork/database/in-memory/overview/twp-oracle-database-in-memory-2245633.html, 43 pages.
Oracle Partitioning with Oracle Database 12c. Oracle White Paper, Sep. 2014, 16 pages.
Schneider, D. A., DeWitt, D. J. Tradeoffs in processing complex join queries via hashing in multiprocessor database machines. Proceedings of the VLDB Endowment, 1990, 12 pages.
Smart Scans Meet Storage Indexes. Oracle Magazine, May/Jun. 2011. http://www.oracle.com/technetwork/issue-archive/2011/11-may/o31exadata-354069.html, 4 pages.
Warren, H. S. Hacker's Delight, Addison-Wesley. 2002. p. 244.
IBM Netezza Data Warehouse Appliance. http://www-01.ibm.com/software/data/netezza/ , last viewed on Aug. 21, 20017, 3 pages.
Umamageswaran, U.S. Appl. No. 15/410,496, filed Jan. 19, 2017, Interview Summary, dated Jul. 8, 2019.
Umamageswaran, U.S. Appl. No. 15/410,496, filed Jan. 19, 2017, Advisory Action, dated Jul. 22, 2019.
Lahiri, U.S. Appl. No. 14/709,018, filed May 11, 2015, Interview Summary, dated Jul. 3, 2019.
Lahiri, U.S. Appl. No. 14/709,018, filed May 11, 2015, Final Office Action, dated Jul. 12, 2018.
Umamageswaran, U.S. Appl. No. 15/410,496, filed Jan. 19, 2017, Office Action, dated Oct. 23, 2018.
Muhkherjee, U.S. Appl. No. 15/257,754, filed Sep. 6, 2016, Corrected Notice of Allowance, dated Aug. 28, 2018.
Tao, U.S. Appl. No. 15/720,972, filed Sep. 29, 2017, Office Action, dated Sep. 13, 2018.
Loaiza, U.S. Appl. No. 15/693,273, filed Aug. 31, 2017, Office Action, dated Oct. 2, 2018.
Tao, U.S. Appl. No. 15/720,972, filed Sep. 29, 2017, Final Office Action, dated Jan. 24, 2019.
Umamageswaran, U.S. Appl. No. 15/410,496, filed Jan. 19, 2017, Notice of Allowance, dated Jan. 9, 2020.
Tao, U.S. Appl. No. 15/720,972, filed Sep. 29, 2017, Final Office Action, dated Jan. 6, 2020.
Loaiza, U.S. Appl. No. 15/693,273, filed Aug. 31, 2017, Notice of Allowance, dated Jan. 27, 2020.
Oracle, “Using the Database Resource Manager”, Chapter 24, Using the Database Resource Manager, dated, 34 pages.
Oracle, “Managing Resource Allocation with Oracle Database Resource Manager”, Chapter 26, Managing Resource Allocation with Oracle Database Resource Manager. Dated , 54 pages.
Shi, U.S. Appl. No. 15/720,949, filed Sep. 29, 2017, Office Action, dated Oct. 4, 2019.
Choudhury, U.S. Appl. No. 15/720,959, filed Sep. 29, 2017, Office Action, dated Oct. 4, 2019.
Ziauddin, U.S. Appl. No. 15/638,226, filed Jun. 29, 2017, Notice of Allowance, dated Apr. 10, 2020.
Shi, U.S. Appl. No. 15/720,949, filed Sep. 269, 2017, Notice of Allowance, dated Mar. 25, 2020.
Wikipedia, the free encyclopedia, “Cuckoo Hasing”, https://en.wikipedia.org/wiki/Cuckoo_hashing, last viewed on Jul. 31, 2017, 7 pages.
Wang et al., “C-Hint: An Effective and Reliable Cache Management for RDMAAccelerated Key-Value Stores”, dated 2014, 2 pages.
Tyler Szepesi, et al. “Nessie: A Decoupled, Client-Driven, Key-Value Store using RDMA”, Copyright 2015 the authors CS-2015-09, 13 pages.
Szepesi, Tyler, et al. “Designing a low-latency cuckoo hash table for write-intensive workloads using RDMA.” First International Workshop on Rack-scale Computing. 2014, 6 pages.
Pavlo, Andy, “15-721 Database Systems”, Lecture #23 Non-Volatile Memory, dated Spring 2016, 70 pages.
Mitchell et al., “Using One-Sides RDMA Reads to Build a Fast, CPU-Efficient Key-Value Store” dated 2013, 12 pages.
Kalia et al., “Using RDMA Efficiently for Key-Value Services”, Sigcomm'14, Aug. 17-22, 2014, Chicago, IL, USA, 15 pages.
Kalia et al., “Using RDMA efficiently for key-value services”, dated 2014, 2 pages.
Kalia et al., “Using RDMA Efficiently for Key-Value Services”, ACM Sigvomm, https://www.researchgate.net/publication/266659972_Using_RDMA_Eff, 5 pages, Aug. 2014.
Hung, Thanh, “New Objective Function for Vertical Partitioning in Database System”, dated 2008, Processing of the Spring Young Researchers Colloquium on Database and Information Systems, dated 2008, 4 pages.
Fan et al., “MemC3: Compact and Concurrent MemCache With Dumber Caching and Smarter Hashing”, NSDI'13, dated Apr. 2013, 14 pages.
Dragojević, et al., “FaRM: Fast Remote Memory”, https://www.usenix.org/conference/nsdi14/technical-sessions/dragojević, dated Apr. 2014, 15 pages.
Tao, U.S. Appl. No. 15/720,972, filed Sep. 29, 2017, Notice of Allowance, dated Nov. 4, 2020.
Related Publications (1)
Number Date Country
20190102433 A1 Apr 2019 US