US Pat. No. 9,158,802

DATABASE PARTITION MANAGEMENT

Teradata US, Inc., Dayto...

1. A processor-implemented method to execute on one or more processors that perform the method, comprising:
creating a virtual partition of a temporal database table by mapping physical partitions of the table to logical partitions
of the table, wherein the temporal database includes data associated with valid times and transaction times, wherein valid
times are rows that are either valid or no longer valid, wherein a valid row references a time that is current or future to
a present time and a no longer valid row references a time that is past, wherein transaction times are rows that are either
an open transaction or a closed transaction, wherein a first portion of the logical partitions belong to a current partition
and a second portion of the logical partitions belong to a history partition, wherein the physical partitions are associated
with a selected mapping update frequency for a partition mapping update, the partition mapping update changing the mapping
of a physical partition from a logical current partition to a logical history partition;

receiving a request to move at least a portion of the data from the current partition to the history partition, the at least
a portion of the data being at least one of valid times data that is no longer valid or transaction times data that is closed;
and

in response to the receiving, modifying the logical partitions by updating the mapping of the physical partitions from a logical
current partition to a logical history partition, instead of moving the data to other physical partitions.

US Pat. No. 9,098,340

VIRTUAL REGULATOR FOR A DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A method for managing a database system with a regulator component, the database system being operable within an operating
system for executing one or more queries, the operating system being selected from multiple types of operating systems, and
the method comprising:
receiving a query of the database system;
being responsive to a protocol configured to:
classify the query to execute in accordance with a set of rules associated with a workload definition that defines one or
more execution release rules for releasing the query before or after the release of one or more other queries of the database
system; and

selectively releasing the query, in accordance with the classifying of the query, for execution under control of a priority
scheduler facility, where the priority scheduler facility is unique to the operating system within which the database system
operates and where the regulator component is operable across the multiple types of operating system; and

applying a mask to the priority scheduler facility for isolating functions associated with the regulator component that are
dependent on the operating system of the priority scheduler facility to allow communication between the regulator component
and the priority scheduler facility; and

wherein the mask allows the regulator component to monitor the activity of the priority scheduler facility and translates
commands provided by the regulator component to the priority scheduler facility into a form functionally operable with the
priority scheduler facility and each unique priority scheduler facility requires a specific mask.

US Pat. No. 9,177,024

SYSTEM, METHOD, AND COMPUTER-READABLE MEDIUM FOR OPTIMIZING DATABASE QUERIES WHICH USE SPOOLS DURING QUERY EXECUTION

Teradata US, Inc., Dayto...

1. A database system comprising:
a processing module; and
a storage device communicatively coupled with the processing module and allocated thereto that stores a base table allocated
to the processing module, wherein the processing module receives a database query from a client computer system, generates
a spool based upon a number of columns of a table, and partitions at least one column of the spool based upon the database
query received from the client computer system; and

wherein the processing module estimates saving of compression based upon statistics associated with the table, and compresses
certain columns when the estimated saving of compression is greater than a predetermined value.

US Pat. No. 9,146,960

ADAPTIVE OPTIMIZATION OF ITERATIVE OR RECURSIVE QUERY EXECUTION BY DATABASE SYSTEMS

Teradata US, Inc., Dayto...

1. A method, implemented at least partly by a device, for facilitating execution of a database query of a database, wherein
the database query requires multiple sub-queries to be executed as multiple iterations such that a result of a first one of
the sub-queries is needed to be determined in a first iteration of the iterations in order to determine the result of a second
one of the sub-queries in a second iteration of the iterations to be performed after the first iteration, and wherein the
method comprises:
determining, at least partly based on (i) a predicted result of the first one of the sub-queries, and (ii) determining whether
an actual result of the first one of the sub-queries obtained by executing the first iteration differs or diverges more than
a determined value from an estimated result of first one of the sub-queries, whether to use a first execution plan to execute
the second iteration to determine the result of the second one of the sub-queries of the database query, wherein the estimated
result of the first one of the sub-queries is determined based on a predicted seed selectively of the first sub-query that
represents a ratio of rows that a join with at least one table of the database would produce given a first iteration seed
provided as input of the first sub-query; and

not allowing the first execution plan to be used to execute the second iteration when the determining determines not to use
the current execution plan to execute the second iteration.

US Pat. No. 9,047,355

METHOD AND SYSTEM FOR LOAD BALANCING A DISTRIBUTED DATABASE

Teradata US, Inc., Dayto...

1. A method of processing a transaction request, the method comprising:
(a) receiving the transaction request, wherein the transaction request is comprised of one or more operations;
(b) analyzing the transaction request to determine the one or more operations;
(c) determining if each of the one or more operations can be represented by a prepared transaction request form;
(d) converting the one or more operations determined in step (c) to a prepared transaction request form;
(e) associating lock information for one or more database locks with each of the one or more operations;
(f) analyzing one or more of the database locks to determine one or more sequence numbers associated with each of the one
or more operations; and

(g) transmitting the one or more operations with the associated lock information and the one or more sequence numbers to one
or more database servers accessible to a database load balancer.

US Pat. No. 9,270,487

FULL BISECTION BANDWIDTH NETWORK

Teradata US, Inc., Dayto...

1. A system comprising:
a full bisection bandwidth network comprising:
a plurality of nodes;
a plurality of paths among the nodes;
a plurality of Virtual Local Area Networks (“VLANs”) incorporating the plurality of nodes and the plurality of paths, wherein
the plurality of VLANs comprises a first VLAN and a second VLAN and the plurality of paths comprises a first path, wherein
the first path is between two nodes and does not pass through any intervening nodes;

wherein the first path is assigned to the first VLAN and the second VLAN;
wherein the first VLAN would not satisfy a spanning tree protocol if the first path is enabled in the first VLAN and the first
VLAN satisfies the spanning tree protocol with the first path disabled in the first VLAN; and

wherein the first path is enabled in the second VLAN and the second VLAN satisfies the spanning tree protocol with the first
path enabled in the second VLAN;

adding a node;
adding paths to connect the added node to the full bisection bandwidth network;
adjusting the assignments of the paths and the added paths to VLANs such that:
each VLAN satisfies a spanning tree protocol;
each of the plurality of paths is active in the full bisection bandwidth network; and
the network remains a full bisection bandwidth network;
wherein:
the plurality of nodes comprises:
a root layer of N Ethernet switches;
a branch layer of M Ethernet switches, M>N;
the plurality of paths among the nodes comprises:
a path from branch layer switch BLS1 to root layer switch RLS1 assigned to a first VLAN; and

a path from branch layer switch BLS2 to root layer switch RLS1 assigned to a second VLAN.

US Pat. No. 9,244,792

DISK-MEDIA-ERROR DETECTION AND CORRECTION

Teradata US, Inc., Dayto...

1. A disk-error detection system comprising:
a storage array including a plurality of storage disks configured to store data;
a processor in communication with the storage disks, wherein the processor is configured to:
detect presence of an initial media error in a storage disk from the plurality of storage disks during a read operation of
the data stored on the storage disk;

perform an initial media-error detection scan of a portion of the storage disk over a predetermined portion size of the storage
disk in response to the detection of the initial media error, wherein location on the storage disk of the portion of the storage
disk is based on location of the initial media error on the storage disk; and

perform an additional media-error detection scan each time at least one media-error is detected in a prior media-error detection
scan, wherein each additional media-error detection scan is configured to cover a respective unscanned portion of the storage
disk, wherein location of each respective unscanned portion of the storage disk is based on location of a single media-error
detected during the prior media error detection scan.

US Pat. No. 9,424,315

METHODS AND SYSTEMS FOR RUN-TIME SCHEDULING DATABASE OPERATIONS THAT ARE EXECUTED IN HARDWARE

Teradata US, Inc., Dayto...

1. A method for scheduling database tasks for a relational query, said method comprising:
receiving at least a portion of a query execution plan comprising a set of fragments with respective tasks having corresponding
database virtual address ranges;

mapping the database virtual address ranges to a set of memory pages;
requesting respective locks for the set of memory pages;
locking memory pages for the selected tasks;
marking one or more of the tasks as being ready for execution based on whether locks have been granted for all of the memory
page requests; and

scheduling one or more tasks for execution in a dataflow architecture hardware accelerator coupled to the memory pages when
locks have been obtained for all of its memory pages, wherein execution of the one or more tasks is based on execution of
machine code instructions formatted for the dataflow architecture hardware accelerator and specifying a dataflow of data through
the dataflow architecture hardware accelerator.

US Pat. No. 9,396,488

MESSAGE SELECTION IN A MARKETING-BASED SYSTEM

Teradata US, Inc., Dayto...

1. A message selection system comprising:
a memory device configured to store message selection information, wherein the message selection information comprises a plurality
of suggested messages, wherein each of the plurality of suggested messages is associated with one of a plurality of electronic
channels of communication; and

a processor in communication with the memory device, the processor configured to:
receive a request from a marketing source during an active session between the marketing source and a user interface to determine
a suggested message to transmit from the marketing source to the user interface over an electronic channel of communication
from the plurality of electronic channels of communication during the active session between the marketing source and the
user interface, wherein the request is based on input received from the user interface by the marketing source during the
active session, and wherein the user interface is a marketing target, wherein the suggested message is configured to elicit
a desired response from the marketing target during the active session;

select, based on the request, a plurality of candidate messages for the electronic channel of communication from a plurality
of messages included in the message selection information during the active session;

during the active session, for each candidate message, generate a respective corresponding numerical score for each of a plurality
of business objectives, wherein each numerical score is based on relationship unique to each business objective that includes
factors associated with specific levels of response to an associated candidate message and an associated electronic channel
of communication;

select, based on the numerical scores, the suggested message from the plurality of candidate messages during the active session;
and

transmit the suggested message to the marketing source, wherein the suggested message is configured to be transmitted from
the marketing source to the user interface during the active session.

US Pat. No. 9,456,014

DYNAMIC WORKLOAD BALANCING FOR REAL-TIME STREAM DATA ANALYTICS

Teradata US, Inc., Dayto...

1. A method, comprising:
reading, by a processor, real-time stream data as workloads, each workload including one or more data items from the real-time
stream data;

determining, by the processor, any deviation in content of the workloads relative to previous content of previous workloads;
reporting, by the processor, when a particular deviation exceeds a threshold value to a workload coordinator; and
receiving, by the processor, a data distribution map dynamically broadcasted by the workload coordinator, the data distribution
map indicates a processing unit to forward the workloads along a distribution path for the workloads where an instance of
a next processing node for the workloads can process the workload.

US Pat. No. 9,652,482

DATA STORAGE MANAGEMENT BASED ON INDICATED STORAGE LEVELS AND OTHER CRITERIA FOR MULTILEVEL STORAGE SYSTEMS

Teradata US, Inc., Dayto...

1. A method, implemented at least partly by a device, for managing storage of data in multiple storages of a multi-storage
system, wherein the multiple storages are respectively associated with multiple storage levels associated with different types
of storages that are designated ranks in accordance with one or more storage criteria, and wherein each one of the storage
levels is associated with one or more storages of the same type in the multiple storage system, and wherein the method comprises:
monitoring one or more storage attributes associated with least one data object to assign one or more storage rating values
for the at least one data object;

thereafter, obtaining at least one indication indicative of at least one storage level identified for storing the at least
one data object in the multi-storage system;

determining based on the currently assigned one or more storage rating values for the at least one object and the designated
ranking of the at least one storage level as indicated by the at least one indication, whether to allow or continue to allow
the at least one data object to be stored in at least one storage of the at least one storage level as indicated by the at
least one indication; and

allowing the at least one data object to be stored or continued to be stored in the at least one storage level indicated by
the at least one indication when the determining determines to allow or continue to allow the at least one data object to
be stored in at least one storage of the at least one storage level.

US Pat. No. 9,553,793

SINGLE SOURCE SHORTEST PATH RESOLUTION

Teradata US, Inc., Dayto...

1. A method implemented and programmed within a non-transitory computer-readable storage medium and processed by a processing
node (node), the node configured to execute the method, comprising:
acquiring, at the node, a starting message table that represents an identifier for a vertex processing node of a graph of
a network of processing nodes and the starting message table representing a distance from a source node to that vertex within
the network;

joining, at the node, graph data and the starting message table to calculate a state of the node and outgoing edge messages
for the graph data, wherein the graph data includes a beginning vertex of an edge in the graph and an ending vertex of an
edge in the graph;

grouping, at the node, the messages;
cogrouping, at the node, the starting message table and a result table to generate new messages in a new message table, and
wherein the result table including a destination vertex from the graph and a minimum distance from the source node to a current
vertex;

replacing, at the node, the message table with the new message table and producing a shortest path from the source node within
the network to a destination node as the new message table for network path traversal of network communications; and

passing, from the node, the new message table to a next node represented in the graph data.

US Pat. No. 9,378,229

INDEX SELECTION BASED ON A COMPRESSED WORKLOAD

Teradata US, Inc., Dayto...

1. A computer-implemented method executed by at least one processor, comprising:
receiving a first workload that contains predicates contained in database queries, wherein the predicates are logged;
selecting a subset of the predicates based on costs associated with the predicates, wherein a number of predicates in the
subset of the predicates is less than a total number of the predicates, wherein the selection of the subset of predicates
is performed prior to a start of a selection of indexes process;

forming a compressed workload using the selected subset of the predicates;
performing the selection of indexes process based on the compressed workload; and
generating a response to at least one of the database queries based on the selected indexes.

US Pat. No. 9,244,957

HISTOGRAM INTERVAL SELECTION

Teradata US, Inc., Dayto...

1. A database system comprising:
an array of storage devices configured to store a plurality of database tables and a plurality of histograms, wherein each
histogram corresponds to at least one column of a database table;

a processor in communication with the storage device, the processor configured to:
receive an indication that a histogram is to be rebuilt, wherein the histogram is defined by a first number of intervals,
and wherein column values of at least one column are distributed across the first number of intervals;

determine at least one condition associated with the histogram, wherein the at least one condition is based on the overall
distribution of column values across the entire histogram;

in response to the determination of the at least one condition, determine a second number of histogram intervals based on
histogram information exclusively associated with the histogram; and

in response to the determination of the second number of histogram intervals, rebuild the histogram, wherein the rebuilt histogram
is defined by the second number of intervals.

US Pat. No. 9,489,437

MASTER DATA MANAGEMENT DATABASE ASSET AS A WEB SERVICE

Teradata US, Inc., Dayto...

1. A computer-implemented method for exposing a database asset as a web service, comprising:
(a) executing a relational database management system (RDBMS) that stores information in a computer system, wherein:
(1) the RDBMS is part of a centralized framework that is configured to control access to the information;
(2) one or more business rules and one or more workflow data processes manage the information from multiple sources;
(3) the one or more business rules and the one or more workflow data processes are applied to the information from multiple
sources, to consolidate the information and produce master data;

(4) the master data is stored in a central business database of the RDBMS;
(5) the master data is fed to one or more consuming business processes; and
(6) access to, management of, and usage of, the master data is limited to the one or more workflow data processes of the centralized
framework;

(b) creating, via the centralized framework, a rule, of the one or more business rules, that contains an application programming
interface (API) definition with predefined input and output for exposing the database asset from the RDBMS as the web service;

(c) exposing, via the centralized framework, the rule as the web service; and
(d) utilizing, via the centralized framework, the web service to invoke a database operation based on the database asset,
and to output a result.

US Pat. No. 9,208,186

INDEXING TECHNIQUE TO DEAL WITH DATA SKEW

Teradata US, Inc., Dayto...

1. A method for facilitating join operations between a first database table and a second database table within a database
system, the first database table and the second database table sharing at least one common index column, the method comprising:
creating a new index column in the second database table that is populated with a limited number of distinct calculated values
for the purpose of increasing the overall number of distinct values collectively assumed by the columns common between the
two tables;

creating an intermediate table, the intermediate table including the common columns of the first database table, the second
database table, and the new index column;

defining an index of the intermediate table to be the column(s) common between the first and second tables; and
defining an index of the second table to be the column(s) common between the first database table, the second database table
and the new index column.

US Pat. No. 9,208,829

DESIGNATED MEMORY SUB-CHANNELS FOR COMPUTING SYSTEMS AND ENVIRONMENTS

Teradata US, Inc., Dayto...

1. A device comprising: at least one memory channel divided into two or more memory sub-channels, wherein each one of the
memory sub-channels includes two or more memory components configured to store data made accessible on that memory sub-channel,
and wherein the two or more memory components in each one of the memory sub-channels are respectively connected via at least
one transmission line and can be individually accessed on their associated sub-channel.

US Pat. No. 9,235,590

SELECTIVE DATA COMPRESSION IN A DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A database system comprising:
at least one storage device configured to store a database and a query log, wherein the database comprises data organized
into a plurality of database tables, and wherein the query log is a data object comprising information associated with usage
of at least a subset of the database tables in database related tasks, wherein the information includes respective specific
usage times for each of the plurality of database tables in database-related tasks;

a processor in communication with the at least one storage device; and
a compression management module executable by the processor to:
retrieve the query log;
determine the respective specific usage times of the plurality of database tables from the query log;
determine the presence of at least one condition associated with the database system;
select a database table from the plurality of database tables for data compression based on the presence of the at least one
condition associated with the database system and the respective specific usage times of the database table based on the information
in the query log; and

generate a schedule to compress and decompress at least a portion of the database table.

US Pat. No. 9,152,670

ESTIMATING NUMBER OF ITERATIONS OR SELF JOINS REQUIRED TO EVALUATE ITERATIVE OR RECURSIVE DATABASE QUERIES

Teradata US, Inc., Dayto...

1. A method, implemented at least partly by a device, for facilitating execution of a database query of a database, wherein
the database query requires multiple sub-queries to be executed as multiple iterations such that a result of a first one of
the sub-queries is needed to be determined in a first iteration of the iterations in order to determine a result of a second
one of the sub-queries in a second iteration of the iterations to be performed after the first iteration, and wherein the
method comprises:
estimating a projected number of iterations required to execute the database query including the first and second iterations
at least partly by determining the projected number of iterations at least partly based on the following: (i) an estimated
number of all nodes in one or more recursion trees (I) that represent the organization of data involved in the database query,
(ii) the number of nodes in the one or more recursion trees that originate at a seed (S) provided as input of the database
query, and (iii) an estimated average of the outgoing edges of the nodes of the one or more recursion trees (Avg_outDegree);
and

determining at least one execution plan for executing one or more of the iterations, at least partly based on the projected
number of iterations required to execute the database query.

US Pat. No. 9,558,251

TRANSFORMATION FUNCTIONS FOR COMPRESSION AND DECOMPRESSION OF DATA IN COMPUTING ENVIRONMENTS AND SYSTEMS

Teradata US, Inc., Dayto...

1. A computer-implemented method, implemented at least partly on a device, for facilitating at least one of compression and
decompression of data objects associated with a computing environment or system, the computer-implemented method comprising:
associating, by the device, at least one data transformation function to at least one of the data objects, wherein the data
transformation function is designated to transform the at least one data object from a first form received as input to a second
form as output, wherein the data transformation function includes at least one tumbling transposing function, and wherein
the at least one data transformation function is further designated to be applied to the at least one data object in connection
with application of at least one of: (i) before one or more compression techniques designated to compress the at least one
data object are applied, and (ii) after one or more decompression techniques designated to decompress a compressed version
of the at least one data object are applied; and

wherein the at least one data object is represented as one or more N×K byte sized partitions of monotonically increasing fixed-length
values of size K, wherein N and K are positive integers greater than one;

wherein the at least one data transformation function includes a tumbling N×K byte matrix transpose function that can be applied
to the one or more N×K byte sized partitions;

wherein the at least one data transformation function also includes a tumbling K×N byte matrix transpose function as the inverse
function of the tumbling N×K byte matrix transpose function;

wherein the tumbling N×K byte matrix transpose function is designated to be used with a dictionary-based compression technique,
and

wherein the K×N byte matrix transpose function is designated to be used with a dictionary-based decompression technique.

US Pat. No. 10,019,465

COMPRESSION OF TIMING DATA OF DATABASE SYSTEMS AND ENVIRONMENTS

Teradata US, Inc., Dayto...

1. A computer-implemented method of storing timing data associated with information about time for data stored as one or more database entries stored in a database associated with a database system, wherein the computer-implemented method comprises:maintaining within said database a subset of time values determined to occur more frequently for the timing data than one or more other time values in a full set of time values for the timing data;
receiving a first timing data including a first time value for storage in said database;
determining whether said first time value is contained within said subset of time values;
when said first time value is contained within said subset of time values, using a reduced number of bits to represent said first time value, said reduced number of bits being less than a number of bits used to represent said first time value in an uncompressed form;
determining whether said first time value has one or more redundant digits;
when said first time value has one or more redundant digits, eliminating said one or more redundant digits from said first time value;
determining whether the first timing data includes one or more repeated time values;
when said first timing data includes one or more repeated time values, eliminating said one or more repeated time values from said first timing data; and
storing in the database system the first timing data wherein said first time value is represented with said reduced number of bits when said first time value is contained within said subset of time values, said redundant digits are eliminated from said first time value, and repeated time values are eliminated from the first timing data.

US Pat. No. 9,477,704

SENTIMENT EXPRESSION ANALYSIS BASED ON KEYWORD HIERARCHY

Teradata US, Inc., Dayto...

1. A sentiment-scoring system, comprising:
a storage device configured to store a plurality of keywords, keyword groups, and a keyword group hierarchy, wherein each
keyword is associated with at least one of the keyword groups, and wherein the keyword hierarchy comprises a hierarchy associated
with each keyword group;

a processor in communication with the storage device, the processor configured to:
locate a plurality of sentiment expressions;
identify a plurality of keywords present in the plurality of sentiment expressions;
determine at least one respective keyword group associated with each identified keyword;
determine a sentiment score for each sentiment expression with respect to the associated at least one respective keyword group
within the keyword hierarchy, wherein each sentiment score is indicative of a level of sentiment about the associated at least
one respective keyword group; and

provide at least one determined sentiment score to a display.

US Pat. No. 9,563,622

SENTIMENT-SCORING APPLICATION SCORE UNIFICATION

Teradata US, Inc., Dayto...

1. A sentiment score unification system comprising:
a storage device configured to store a sentiment unification module;
a processor in communication with the memory device, the processor configured to:
receive a plurality of single sentiment scores, wherein each single sentiment score is from a respective scoring sentiment
application, wherein each single sentiment score is indicative of a respective overall sentiment of a plurality of sentiment
expressions, wherein each sentiment expression from the plurality of sentiment expressions is from a different, independent
sentiment source; and

execute the sentiment unification module, wherein the sentiment unification module is executable to generate a single unified
sentiment score based on the plurality of single sentiment scores, wherein the single unified sentiment score is indicative
of an overall sentiment of the plurality of sentiment expressions.

US Pat. No. 9,336,270

TECHNIQUES FOR ACCESSING A PARALLEL DATABASE SYSTEM VIA EXTERNAL PROGRAMS USING VERTICAL AND/OR HORIZONTAL PARTITIONING

Teradata US, Inc., Dayto...

1. A method, comprising:
configuring, by a processor, mappers for handling results from a query;
configuring each mapper to interact with a unique portion of the results from remaining ones of the mappers, wherein configuring
each mapper further includes configuring, by the processor, each node of a plurality of nodes associated with the mappers
for receiving all of the results for the query for ensuring that each mapper has access to all of the results on that mapper's
node;

submitting the query for processing; and
passing a query identifier for the query to each of the mappers for handling that mapper's unique portion of the results returned
for the processed query.

US Pat. No. 9,141,670

METHODS AND SYSTEMS FOR HARDWARE ACCELERATION OF STREAMED DATABASE OPERATIONS AND QUERIES BASED ON MULTIPLE HARDWARE ACCELERATORS

Teradata US, Inc., Dayto...

1. A method for integrating relational database operations through a hardware accelerator coupled with a host system running
a relational database management system for a relational database, said method comprising:
receiving a relational query having one or more tasks related to at least one row of the relational database;
compiling the tasks into a program of database machine code operations specifying a stream of operations for the tasks;
executing the program of database machine code operations in a dataflow architecture query processing module implemented using
said hardware accelerator, wherein the dataflow architecture query processing module includes at least one node configured
to receive and process its input as data configured to arrive from at least one other node associated with the at least one
node, and wherein said database machine code operations are executed within said hardware accelerator without software; and

providing a result for the tasks based on the program of database machine code operations.

US Pat. No. 9,116,929

WORKLOAD PRIORITY INFLUENCED DATA TEMPERATURE

Teradata US, Inc., Dayto...

1. A system for managing a plurality of database systems, comprising:
(a) one or more computers;
(b) a domain comprised of a plurality of database systems executed by the one or more computers, wherein each of the plurality
of database systems performs database queries to retrieve data stored by the plurality of database systems; and

(c) a plurality of closed-loop system management (CLSM) regulators for managing the database systems wherein:
(i) the plurality of CLSM regulators are organized in a tree structure, such that each CLSM regulator aggregates information
related to its own database system as well as that of its children CLSM regulators, and reports the aggregated information
to its parent CLSM regulator in the tree structure;

(ii) at least one of the plurality of CLSM regulators comprises a virtual regulator at a highest level of the tree structure
for managing the domain by controlling the CLSM regulators managing the database systems within the domain, and communicating
with the CLSM regulators managing the database systems in the domain to compile the aggregated information reported by the
CLSM regulators;

(iii) each of the plurality of CLSM regulators dynamically monitor a data temperature comprising a frequency of access to
the data stored by a specific database system;

(iv) each of the plurality of CLSM regulators separate incoming queries into one or more workload groups;
(v) each of the one or more workload groups is assigned to one or more respective service level goals (SLGs) that are each
comprised of one or more levels of service expected from the plurality of database systems in processing the incoming queries
assigned to the respective workload group;

(vi) each of the plurality of CLSM regulators dynamically determine a priority class for each workload group based on the
respective service level goals;

(vii) a workload query manager within each of the plurality CLSM regulators is responsive to workload rules and an exception
monitor for either passing on the incoming query or placing the incoming query into a queue until predetermined conditions
are met, wherein once passed, the incoming query is placed into its determined priority class;

(viii) a priority scheduler facility (PSF) within each of the plurality of the CLSM regulators is responsive to the priority
classes, and reports observed system conditions and throughput information to one or more monitors;

(ix) the one or more monitors update principles under which the PSF operates based on the observed system conditions and the
throughput information, received from the PSF, such that the priority class influences and is used to define the data temperature;
and

(x) each of the plurality of the CLSM regulators dynamically utilize the priority in conjunction with the data temperature
to dynamically allocate resources for the database systems for processing the one or more workload groups.

US Pat. No. 9,424,260

TECHNIQUES FOR DATA ASSIGNMENT FROM AN EXTERNAL DISTRIBUTED FILE SYSTEM TO A DATABASE MANAGEMENT SYSTEM

Teradata US, Inc., Dayto...

1. A method, comprising:
iterating, by a processor, blocks of data associated with an external file system to assign each block to particular access
module processors (AMPs) of a Distributed Database Management System (DBMS); and

performing load balancing on each of the AMPs while iteratively assigning each of the blocks to the AMPs by initializing the
load balancing with a feasible solution based on costs of assigning each of the blocks and solving for an optimal solution
in view of the feasible solution and the costs.

US Pat. No. 9,298,506

ASSIGNING RESOURCES AMONG MULTIPLE TASK GROUPS IN A DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A computer-implemented method for scheduling the execution of a plurality of database tasks within a database system, the
method comprising the steps of:
grouping said database tasks into a plurality of task groups having different priorities to database system resources;
arranging said task groups into a hierarchy, said hierarchy comprising multiple tiers including a top level tier, a bottom
level tier and at least one intermediate level tier between said top level tier and said bottom level tier, said tiers reflecting
the priority of said task groups to said database system resources;

allocating a portion of said database system resources to said task groups within said top level tier, and providing a remaining
portion of said database system resources not assigned to said task groups within said top level to the tier immediately below
said top level tier;

for each intermediate level tier: receiving the remaining portion of database system resources not assigned to the task groups
in the tier immediately above; assigning a portion of said database system resources received from the tier immediately above
to said task groups within said each immediate level tier, and providing a remaining portion of said database system resources
not assigned to said task groups within said each immediate tier to the tier immediately below said each immediate level tier;

for said bottom tier, receiving the remaining portion of database system resources not assigned to the task groups in the
tier immediately above; and assigning said database system resources received from the tier immediately above to said task
groups within said bottom level tier; and

executing said database tasks in accordance with said database resource task group allocations.

US Pat. No. 9,405,592

WORKLOAD BALANCING TO HANDLE SKEWS FOR BIG DATA ANALYTICS

Teradata US, Inc., Dayto...

1. A method, comprising:
identifying, by a workload balancer executing on at least one processor in a map reduce system, a partition total for partitions
of data;

assigning, by the workload balancer, one or more of the partitions to one of a plurality of reducers by processing a cost
analysis that assigns a cost estimate for that reducer when processing a proposed assignment of the one or more partitions
in addition to existing partitions already assigned to that reducer;

identifying, by the workload balancer, a data skew and data size for data in the existing partitions and in the proposed assigned
one or more partitions for assigning the cost estimate; and

maintaining, by the workload balancer, at least one partition that remains unassigned to any of the reducers in an unassigned
partition pool.

US Pat. No. 9,454,344

TEMPORAL USER-DEFINED FUNCTIONS

Teradata US, Inc., Dayto...

1. A database system comprising:
a storage device configured to store a database dictionary;
a processor in communication with the storage device, the processor configured to:
receive a plurality of related versions of a temporal user-defined function;
store, in the database dictionary, the plurality of related versions of the temporal user-defined function and a respective
time period for each related version of the temporal user-defined function over which to apply each related version of the
temporal user-defined function, wherein each related version of the temporal user-defined function is configured to be selectively
applied based on the respective time period;

receive a database query comprising a request to apply the temporal user-defined function to database data for a specified
time;

in response to the specified time contained in the database query, select a version from the plurality of related versions-of
the temporal user-defined function having a respective time period that contains the specified time; and

apply the selected version of the temporal user-defined function to the database data in performance of at least a portion
of the database query.

US Pat. No. 9,489,427

SYSTEM, METHOD AND COMPUTER-READABLE MEDIUM FOR OPTIMIZATION OF MULTIPLE-PARALLEL JOIN OPERATIONS ON SKEWED DATA

Teradata US, Inc., Dayto...

1. A method of facilitating a multiple join operation in a processing system that includes a plurality of processing modules,
wherein the join operation comprises a join on a column of a first table, a column of a second table, and a column of a third
table, the method comprising:
distributing a respective set of rows of the first, second and third tables to each of the plurality of processing modules;
redistributing by each of the plurality of processing modules to at least another one of the plurality of processing modules:
(i) each row of the respective set of rows of the first table that has a value of the column of the first table that does
not match any one of skewed values of the column of the first table, (ii) each row of the respective set of rows of the second
table that has a value of the column of the second table that does not match any of the skewed values of the column of the
first table and (iii) one or more rows of the distributed respective set of rows of the third table involved in the join operation;

locally maintaining, by a first processing module of the plurality of processing modules, one or more of the distributed respective
set of rows that each has a value of the column of the first table that matches one of the skewed values;

duplicating, by a second processing module of the plurality of processing modules, one or more of the distributed respective
set of rows that each has a value of the column of the second table that matches one of the skewed values; and

processing, by the first processing module of the plurality of processing modules, any row of the respective set of rows that
has a value of the column of the first table that matches any of the skewed values.

US Pat. No. 9,436,733

TECHNIQUES FOR QUERY STATISTICS INHERITANCE

Teradata US, Inc., Dayto...

1. A method implemented and programmed within a non-transitory computer-readable storage medium and processed by a processor,
the processor configured to execute the method, comprising:
receiving, via the processor, a query having two tables joined on a column with skewed values;
acquiring, via the processor, a set of statistics available for the join; and
resolving a priority order for selecting particular portions of the set of statistics after grouping histograms associated
with the two tables joined on the column and using the grouped histograms to resolve the priority order, and wherein resolving
further includes generating the priority order as 1) firstly identifying a histogram for a database object having a smallest
row count; 2) secondly identifying a histogram having a highest sample percentage; 3) thirdly identifying a histogram having
a latest version; and 4) fourthly a histogram collected most recently, wherein generating further includes checking each histogram
in the priority order to ensure a value range survives after the join, and wherein checking further includes ensuring range
conditions on a joined column for the join and row filtering conditions of the database object in the selected histogram.

US Pat. No. 9,378,231

ACCESSING DATA IN COLUMN STORE DATABASE BASED ON HARDWARE COMPATIBLE DATA STRUCTURES

Teradata US, Inc., Dayto...

1. A method of encoding data into a hardware-favorable form for a database, said method comprising:
profiling columns of the data;
compressing the columns of the data into column groups having one or more columns based on the profile of the columns of data;
determining a fixed width for each of the column groups; and
writing the column groups with the selected fixed width into a column-store database.

US Pat. No. 9,165,008

SYSTEM AND METHOD FOR DATA COMPRESSION USING A DYNAMIC COMPRESSION DICTIONARY

Teradata US, Inc., Dayto...

1. A method for compressing data within a computer system, the method comprising the steps of:
receiving, by said computer system, an uncompressed data value;
searching, by said computer system, for said uncompressed data value in a static compression dictionary, said static compression
dictionary containing a plurality of uncompressed data values and corresponding compressed code values;

if the uncompressed data value is found in the static compression dictionary, replacing the uncompressed data value with its
corresponding compressed code value from said static compression dictionary and storing the corresponding compressed code
value within a data storage device;

if the uncompressed data value is not found in the static compression dictionary, searching, by said computer system, for
said uncompressed data value in a dynamic compression dictionary, said dynamic compression dictionary for storing one or more
additional uncompressed data values and corresponding compressed code values not contained within said static compression
dictionary;

if the uncompressed data value is found in the dynamic compression dictionary, replacing the uncompressed data value with
its corresponding compressed code value from said dynamic compression dictionary and storing the corresponding compressed
code value within said data storage device; and

if the uncompressed data value is not found in the static compression dictionary and not found in the dynamic compression
dictionary, adding, by said computer system, the uncompressed data value and a unique corresponding compressed code value
to said dynamic compression dictionary, and storing the unique corresponding compressed code value within said data storage
device;

wherein said unique corresponding compressed code value is stored within a column in a database table maintained on said data
storage device and managed by said computer system; and

said static compression dictionary, said dynamic compression dictionary, and compressed code values contained within said
column in said database table are stored within a container row.

US Pat. No. 9,471,711

SCHEMA-LESS ACCESS TO STORED DATA

Teradata US, Inc., Dayto...

1. A computer implemented method, comprising:
storing a partially-structured data in a data management system using at least one key-value pair;
processing, using the data management system, a query of data, wherein the query is generated using a structured language;
generating an interface containing a plurality of columns of data, wherein each column in the plurality of columns corresponds
to a key in a plurality of stored key-value pairs; and

generating, using the generated interface, the query of data using the structured language;
wherein the generated query refers to at least one column in the generated interface;
wherein the plurality of columns includes a physical column stored in the data management system and a virtual column stored
in an overflow column in the data management system, the overflow column contains at least one key-value pair having a key
that is not associated with the physical column stored in the data management system; and

wherein at least one of the storing, the processing, the generating an interface, and the generating the query of data is
performed using at least one processor of at least one computing system.

US Pat. No. 9,244,793

USING TARGET DATABASE SYSTEM STATISTICS IN EMULATION

Teradata US, Inc., Dayto...

1. A method comprising:
reading statistics from a data dictionary on a target system, the statistics including statistics for a table in a database
in the target system;

exporting the statistics to a test system separate from the target system;
storing the exported statistics in a query capture database in the test system;
receiving a command to use the stored statistics in emulation, the command specifying one of a plurality of possible levels
of emulation for which emulation includes copying the stored statistics from the query capture database to a cache in the
test system and, in response:

copying the stored statistics from the query capture database to a cache in the test system; and
emulating the target system on the test system using the statistics in the test system's cache.

US Pat. No. 9,244,838

SYSTEM, METHOD, AND COMPUTER-READABLE MEDIUM FOR GROUPING DATABASE LEVEL OBJECT ACCESS COUNTS PER PROCESSING MODULE IN A PARALLEL PROCESSING SYSTEM

Teradata US, Inc., Dayto...

1. A method for caching database usage statistics regarding a database, the database having a plurality of database objects,
the method comprising:
storing, by each of a plurality of processing modules configured in a hierarchical structure, information regarding accesses
to a subset of the database objects by the respective processing module in an intermediate cache, wherein each of the processing
modules has at least one processing module configured as a parent processing module or a child processing module;

iteratively forwarding and merging intermediate caches of processing modules of a lower level of the hierarchical structure
to a processing module at a higher level of the hierarchical structure;

receiving, by a root processing module with no parent processing module, at least one merged intermediate cache;
merging the received merged intermediate cache with an intermediate cache of the root processing module to produce a final
cache of information regarding accesses to the database objects; and

generating, by the root processing module, an object access counts data structure that comprises data blocks each respectively
comprising entries of access counts of database objects accessible on a per processing module basis.

US Pat. No. 10,366,057

DESIGNATED COMPUTING GROUPS OR POOLS OF RESOURCES FOR STORING AND PROCESSING DATA BASED ON ITS CHARACTERISTICS

Teradata US, Inc., San D...

1. A method, at least partly implemented by a device, for handling data and one or more operations associated with the data in a database system, wherein the method comprises:providing multiple computing resources each configured to store and process the data independently from each other and to independently provide the stored data in response to database queries from the database system;
assigning a selected one of multiple computing groups of the computing resources of the database system to handle the data and one or more of the database queries associated with the data, including storing and processing of database requests associated with the data, based on one or more determined characteristics associated with the data, wherein
each one of the multiple computing groups of the computing resources includes one or more of the computing resources designated to be part of that computing group,
each one of the multiple computing resources includes one or more designated processors designated to process respective data stored only in one or more designated storage devices that are designated to store the respective data only for the computing resource, such that the one or more processors are configured to process database requests for the respective data stored only in the one or more storage devices, and
at least one of the computing groups includes one or more computing resources that are within a determined range of similarity;
providing first data of a first data characteristic to a first computing group of the computing groups of the database system designated for storing and processing of the data of the first data characteristic, wherein the first data characteristic includes not being indexed by the first computing group, and the first data is stored in one or more designated storage devices associated with the first computing group as non-indexed data;
providing second data of a second data characteristic to a second computing group of the computing groups of the database system designated for storing and processing of the data of the second data characteristic, wherein the second data characteristic includes being indexed by the second computing group, and the second data is stored one or more designated storage devices associated with the second computing group as indexed data by indexing the second data with respect to at least one data index;
not allowing the first data of the first data characteristic to be provided to and processed by the second computing group;
not allowing the second data of the second data characteristic to be provided to and processed by the first computing group; and
providing, independently by the first or second computing group, the stored first or second data in response to the one or more database queries of the database system.

US Pat. No. 9,483,377

APPARATUS AND METHOD FOR ENABLING A USER TO MONITOR SKEW OF RESOURCE USAGE ACROSS DIFFERENT COMPONENTS OF A LARGE DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. An apparatus for facilitating performance monitoring of a large database system, the apparatus comprising:
a processor; and
a storage device communicatively coupled with the processor, wherein the processor is programmed to
(i) retrieve a set of resource usage data points,
(ii) calculate a first outlier threshold value based upon values of data points from the set of resource usage data points,
(iii) determine if the value of each data point of the retrieved set of resource usage data points is outside of the calculated
first outlier threshold value,

(iv) plot the value of the data point in histogram with a first color when the data point value is determined to be outside
of the calculated first outlier threshold value,

(v) plot the value of the data point in histogram with a second color which is different from the first color when the data
point value is determined to be not outside of the calculated first outlier threshold value,

(vi) display the histogram containing plotted data point values of the first color and plotted data point values of the second
color which is different from the first color to enable a user to quickly and easily identify a potential skew condition associated
with the large database system,

(vii) calculate a second outlier threshold value based upon values of data points from the set of resource usage data points,
(viii) determine if the value of each data point of the retrieved set of resource usage data points is outside of the calculated
second outlier threshold value when a determination has been made that the value of the data point is not outside of the calculated
first outlier threshold value,

(ix) plot the value of the data point in histogram with a third color when the data point value is determined to be outside
of the calculated second outlier threshold value,

(x) plot the value of the data point in histogram with the second color when the data point value is determined to be not
outside of the calculated second outlier threshold value, and

(xi) display the histogram containing plotted data point values of the first color, plotted data point values of the second
color, and plotted data point values of the third color to enable a user to quickly and easily identify a potential skew condition
associated with the large database system, and

wherein the difference between the first and second outlier threshold values define an interquartile range (IQR).

US Pat. No. 9,395,870

CHANNEL-CONDITION-BASED MESSAGE SELECTION

Teradata US, Inc., Dayto...

1. A message selection system comprising:
a memory device configured to store a plurality of messages, wherein each message is configured to prompt a user to provide
a respective predetermined response;

a processor in communication with the memory device, the processor configured to:
determine at least one condition associated with a channel configured to transmit the plurality of messages to a user interface;
in response to the at least one condition, select a plurality of candidate messages from the plurality of messages;
determine a message value associated with each of the candidate messages, wherein each message value is indicative of a relative
value of the associated candidate message with respect to one of a plurality of business objectives over a rolling window
of time having a constant time segment; and

select at least one candidate message from the plurality of candidate messages based on the message values to be transmitted
to the user interface over the channel.

US Pat. No. 9,141,646

DATABASE REDISTRIBUTION IN DYNAMICALLY-CONFIGURED DATABASE SYSTEMS

Teradata US, Inc., Dayto...

1. A resource management tool for a database system, the resource management tool comprising:
a memory device; and
a processor in communication with the memory device, the processor configured to:
detect availability of additional database resources to the database system in response to addition of the additional database
resources to the database system, wherein the additional database resources include at least one of additional processing
resources and additional storage resources;

identify a database object associated with original database resources of the database system to be redistributed from the
original database resources to the additional database resources, wherein the original database resources include at least
one of processing resources and storage resources;

determine presence of at least one condition associated with at least one of the additional database resources and the identified
database object; and

redistribute at least a portion of the database object from the original database resources to the additional database resources
in response to the presence of the at least one condition, wherein the redistribution disassociates the at least a portion
of the database object from the original database resources and associates the at least a portion of the database object with
the additional database resources.

US Pat. No. 9,305,045

DATA-TEMPERATURE-BASED COMPRESSION IN A DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A database system comprising:
a storage array including a plurality of storage devices configured to store database data wherein the database data is stored
across a plurality respective data units; and

a processor in communication with the storage array, configured to:
determine a proportion of database data to an amount of overall database data;
determine usage frequency of the database data;
select a subset of the database data for compression based on the usage frequency relative to usage frequency of at least
one other subset of database data, wherein an amount of the database data in the subset is the proportion of database data;
and

perform the compression of the selected subset of the database data.

US Pat. No. 9,141,251

TECHNIQUES FOR GUIDED ACCESS TO AN EXTERNAL DISTRIBUTED FILE SYSTEM FROM A DATABASE MANAGEMENT SYSTEM

Teradata US, Inc., Dayto...

1. A method implemented and programmed within a non-transitory computer-readable storage medium and processed by one or more
processors, the processors configured to execute the method, comprising the steps of:
presenting a graphical user interface (GUI) within a parallel database management system (DBMS) to a user;
using the GUI, the user identifies a file from an external distributed file system (DFS), external to the DBMS;
acquiring, via the GUI, and from the user first columns to select from the file and a mapping of the first columns to data
types present in the DBMS;

obtaining, via the GUI, and from the user filtering conditions for matching data in the first columns of the file; and
generating a user-defined function (UDF) for selections of the user made via the GUI and estimating whether the DFS or DBMS
is more likely to execute the UDF more quickly and selecting either the DFS or the DBMS for executing the UDF based on the
estimating and accounting for a DFS size for the DFS and DBMS size for the DBMS, and wherein the user can provide hints as
where to where the UDF is to be executed or the user can require where the UDF is executed.

US Pat. No. 9,471,444

MANAGEMENT OF A DISTRIBUTED COMPUTING SYSTEM THROUGH REPLICATION OF WRITE AHEAD LOGS

Teradata US, Inc., Dayto...

1. A method comprising:
persisting a state of a distributed system through a Write Ahead Log (WAL) interface;
maintaining a set of replicas of a Write Ahead Log (WAL) through a consensus protocol;
providing a set of mechanisms for at least one of a detection and a recovery from a hardware failure;
recovering a persistent state of a set of applications;
maintaining the persistent state across a set of nodes through the hardware failover;
running an instance of a WAL replication servlet on the set of nodes;
storing an on-disk state of an application in the WAL;
managing a set of WALs through the WAL replication servlet; and
authorizing a designated node to host a Master of the WAL replication servlet, wherein the Master of the WAL replication servlet
is responsible for at least one of a managing of a global state, a managing of a lease and a suggesting of an election.

US Pat. No. 10,037,271

DATA-TEMPERATURE-BASED CONTROL OF BUFFER CACHE MEMORY IN A DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A database system comprising:a volatile memory device configured to include at least a portion to serve as a buffer cache, wherein the buffer cache is configured to implement a data retention policy, wherein the data retention policy is configured to overwrite least-recently used data in the buffer cache when new data is to be loaded into the buffer cache and size of the new data is greater than free space in the buffer cache;
an array of persistent non-volatile storage devices configured to store data of a database, wherein the data of the database is loaded into the volatile memory device when accessed for use;
a processor in communication with the array of persistent non-volatile storage devices and the volatile memory device; and
a storage management module executable by the processor to:
monitor a frequency of data value associated with a first portion of the data of the database stored in the buffer cache of the volatile memory; and
store the first portion of data in the buffer cache of the volatile memory in response to the frequency of data value associated with the first portion of data being greater than a frequency of data value associated with at least a portion of the data of the database stored in the array of persistent non-volatile storage devices, wherein the first portion of data is available to read operations and write operations while stored in the buffer cache of the volatile memory;
determine that other data stored in the array of persistent storage device is to be accessed for use; and
override the data retention policy of the buffer cache to exclude the first portion of data from being overwritten by the other data stored while the first portion of data not actively being accessed for use, while the frequency of data value associated with the first portion of data remains greater than a frequency of data value associated with the at least a portion of the data of the database stored in the array of persistent non-volatile storage devices, the first portion of data is the least recently used data in the buffer cache and size of the other data is greater than free space in the buffer cache.

US Pat. No. 9,594,805

SYSTEM AND METHOD FOR AGGREGATING AND INTEGRATING STRUCTURED CONTENT

Teradata US, Inc., Dayto...

1. A method for aggregating structured content, comprising:
accessing at least one of a plurality of structured content systems using a conversion module;
selecting a structured content object contained in the at least one of the plurality of structured content systems;
retrieving parameters that define the selected structured content object; and
storing the parameters in a metadata repository.

US Pat. No. 9,553,605

EFFICIENT DATA ENCODING

Teradata US, Inc., Dayto...

1. A method, comprising:
identifying unique prefixes of strings from an input source data set;
resolving frequencies for each unique prefix;
determining a distribution for each unique prefix string and frequency combination without processing an explicit tree construct;
assigning a bit string to represent each unique prefix; and
outputting a symbol table having a plurality of unique symbols mapped to the unique prefixes and the distribution for encoding
the input source data set;

wherein for each unique prefix, the assigned bit string is the unique symbol in the symbol table.

US Pat. No. 9,552,392

OPTIMIZING NESTED DATABASE QUERIES THAT INCLUDE WINDOWING OPERATIONS

Teradata US, Inc., Dayto...

1. A computer-implemented method of optimizing a nested database query that includes at least one inner sub-query, at least
one outer subquery, one or more window functions in the at least one inner sub-query, and one or more filtering operations
in the at least one outer sub-query, wherein evaluation of the inner and outer sub-queries requires construction of one or
more intermediate tables, and wherein the computer-implemented method comprises:
obtaining the nested database query for processing by a database system;
evaluating the obtained nested database query by at least the following:
(i) determining that the inner sub-query includes a sampling operation, and
(ii) determining that the nested database query includes at least one inner join operation joining at least two inner sub-queries,
wherein at least one of the inner sub-queries includes one or more window functions;

determining based on the evaluating whether to represent the one or more filtering operations of the at least one outer sub-query
as one or more corresponding qualification operations associated with the one or more window functions in the at least one
inner sub-query, (iii) wherein it is determined not to represent the one or more filtering operations as the one or more corresponding
qualification operations when it is determined that the inner sub-query includes a sampling operation; and (iv) wherein it
is determined to represent at least one filtering operation of an outer sub-query as a qualification operation of one or more
window functions in either one of the inner sub-queries when it is determined that the query includes at least one inner join
operation joining at least two inner sub-queries;

effectively representing the one or more filtering operations of the at least one outer sub-query as the one or more corresponding
qualification operations associated with the one or more window functions in the at least one inner subquery when the determining
determines to represent the one or more filtering operations as the one or more corresponding qualification operations;

obtaining a modified database query which is equivalent to the nested database query but is evaluated with intermediate tables
that are reduced in size with respect to the one or more intermediate tables that are required to evaluate the database query
in its original form and;

evaluating the modified database query with the intermediate tables that are reduced in size with respect to the one or more
intermediate tables that are required to evaluate the database query in its original form, in order to process that obtained
nested database query.

US Pat. No. 9,098,538

MASTER DATA MANAGEMENT VERSIONING

Teradata US, Inc., Dayto...

1. A computer-implemented method for maintaining versions of structured views of data in a computer system, comprising:
(a) executing a relational database management system (RDBMS) that stores information in the computer system, wherein:
(i) the RDBMS is part of a centralized framework that is configured to manage, view, and control access to the information;
(ii) one or more business rules and one or more workflow data processes manage the information from multiple sources;
(iii) the one or more business rules and the one or more workflow data processes are applied to the information from multiple
sources, to consolidate the information and produce master data;

(iv) the master data is stored in a central business database of the RDBMS in one or more master RDBMS tables;
(v) the master data is fed to one or more consuming business processes;
(vi) access to the master data is limited to one or more workflow data processes of the framework;
(b) creating, within the framework, one or more version tables in the RDBMS that correspond to each of the one or more master
RDBMS tables, wherein each of the one or more version tables further comprises an attribute denoting version information,
and wherein the attribute denoting version information forms a part of a primary key in each of the one or more version tables;

(c) defining one or more versions of the master data by replicating the master data and hierarchy metadata stored in the master
RDBMS tables into the corresponding one or more version tables; and

(d) utilizing, within the framework, the one or more version tables to graphically visualize, manage, and manipulate the one
or more versions of the master data in a hierarchical manner.

US Pat. No. 9,378,243

PREDICATE-BASED RANGE SET GENERATION

Teradata US, Inc., Dayto...

1. A system comprising:
a storage device configured to store a data store comprising data;
a processor in communication with the storage device, the processor configured to:
receive a query that includes at least one predicate associated with the data;
determine that the at least one predicate is eligible to be converted to a range set predicate based on content of the predicate;
in response to the determination that the at least one predicate is eligible to be converted to a range set predicate, create
a range set predicate based on the content of the predicate; and

process the query with the range set predicate.

US Pat. No. 9,311,358

SMART CACHE COMPONENT FOR DEMAND CHAIN MANAGEMENT

Teradata US, Inc., Dayto...

1. A machine-implemented method, comprising:
providing, with a processor, a cache component adapted to store a configurable number of pages of data from a Demand Chain
Management (DCM) database, wherein each page of data is configured to be displayed on a display separate from one another;

initializing, with the processor, the cache component to store a predetermined number of pages of data from the DCM database,
wherein the predetermined number of pages is less than a total amount of page storage capacity of the cache component;

creating, with the processor, an instance of at least one of a java collection model, a hibernate model and a Structured Query
Language (SQL) model, the model configured to interface with a cache component;

receiving, with the processor, a query from a user referring to data requested by the user; and
obtaining, with the processor, the data from the cache component using the model, the cache component configured to check
if the requested data is included in the predetermined number of pages of data stored in the cache component and return the
data if stored in the cache component, and further configured to obtain additional data from a data source if the data is
not stored in the cache component.

US Pat. No. 9,183,255

SPOOL MANAGEMENT AND CHECKPOINTING IN A MULTI-DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A method for executing a query on a multi-database system, the multi-database system comprising a first system database
and a second system database, the method comprising:
partially executing the query on the first system database by generating a spool;
determining that it is more efficient to store the spool on the second system database than to store the spool on the first
system database, and in response:

storing the spool on the second system database;
continuing to execute the query by accessing the spool on the second system database;
completing execution of the query to produce a result; and
storing the result.

US Pat. No. 9,110,947

COLUMN-ORIENTED TASK EXECUTION IN A ROW-PARTITIONED DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A database system comprising:
an array of storage devices configured to store a database, wherein the database comprises a plurality of tables stored in
the array of storage devices according to a row-based-partitioning protocol; and

a database utilization system executable on at least one processor to:
receive a query comprising at least one request to perform a respective separate action on each of a plurality of data columns
stored in the database;

determine, based on presence of a predetermined condition, that each portion of a table that contains the plurality of data
columns is to be partitioned based on an association with the plurality of data columns;

in response to the determination of the presence of the predetermined condition, retrieve from the tables that contain the
plurality of data columns each row that contains a row of a data column of the plurality of data columns;

partition each retrieved row into individual subsets of one or more data columns, wherein each of the individual subsets of
one or more data columns contains at least one of the plurality of data columns; and

distribute each of the individual subsets of one or more data columns to a respective one of a plurality of processing units,
wherein each respective processing unit is configured to perform one of the respective separate actions, and wherein the plurality
of processing units are configured to perform in parallel a respective separate action on each of the plurality of data columns
contained in the distributed individual subsets of one or more data columns.

US Pat. No. 9,489,310

SYSTEM, METHOD AND COMPUTER-READABLE MEDIUM FOR SPOOL CACHE MANAGEMENT

Teradata US, Inc., Dayto...

1. A method, implemented by at least partly by a device, for providing cache management in a processing system, comprising:
estimating a residency time of a first data block that is not stored in the processing system but is to be stored in the processing
system, wherein the residency time is determined at least partly based on an estimation of time required for the first data
block to be resident in a cache memory of the processing system when the first data block is not stored in the cache memory;

calculating a metric for the first data block at least as a function of the residency time of the first data block and a workload
priority associated with the first data block;

evaluating one or more data blocks in the cache memory by comparing a respective metric of the one or more data blocks with
the metric of the first data block; and

responsive to evaluating the one or more data blocks, determining to store the first data block in only one of the cache memory
and a disk drive.

US Pat. No. 9,430,526

METHOD AND SYSTEM FOR TEMPORAL AGGREGATION

Teradata US, Inc., Dayto...

1. A computer-implemented method for aggregating information in a temporal database table that includes one or more time values
defining a time period for information stored in the temporal database table, where the method includes:
determining, by one more processor of a computer, whether two rows of information in a database table of the temporal database
have a common grouping value, associated with the one or more particular time values defining the time period, for the aggregating
of the information in the two rows of temporal database table stored by data elements of the two rows for the common grouping
value, wherein each one of the two rows of information includes data for the same column of the database table and a particular
time value defining a particular time period when the data is valid; and

if so, determining, by the one more processor of the computer, both temporal overlap and temporal non-overlap components of
the of the respective time periods of the two rows in the temporal database, aggregating each of the temporal overlap components
of the of the respective time periods of the two rows at least by summing the data elements in the two rows, and

separating, by the one more processor of the computer, the temporal non-overlap components of the respective time periods
of the two rows, wherein the temporal non-overlap components of the two rows and the temporal overlap components of the two
rows are stored in separate rows at least temporarily in a temporary table to facilitate the aggregating on the information;
and

iterating by the one more processor of the computer the method steps for all the rows in the temporal database table; and
when all rows of the database table have been read, reviewing the contents of the temporary table to coalesce the temporary
table entries by a common grouping value and a common period of validity.

US Pat. No. 10,089,208

PERFORMANCE CONTINUITY MANAGEMENT

Teradata US, Inc., Dayto...

1. A data store system comprising:a storage array comprising a plurality of storage devices configured to store data; and
a processor array comprising a plurality of processors, the processor array in communication with the storage array, wherein the processor array is configured to provide processing resources; and wherein the processor array is configured to:
receive workloads to be performed on the data;
set a static processing resource usage level of the processing resources of the processor array, wherein the static processing resource usage level is less than a maximum available processing resource usage level, wherein the static processing resource usage level limits completion of received workloads at a level of performance to a predetermined number of received workloads when a total number of the received workloads exceeds the predetermined number of received workloads and completion of a number of received workloads that exceeds the predetermined number of workloads would cause a processing resource level of the processor array to exceed the static processing resource usage level, wherein the static processing resource usage level is maintained when the total number of received workloads exceeds the predetermined number of received workloads; and
process the received workloads at a processing resource usage level that does not exceed the static processing resource usage level in response to presence of predetermined operating conditions.

US Pat. No. 9,766,933

FINE-GRAINED CAPACITY MANAGEMENT OF COMPUTING ENVIRONMENTS THAT MAY SUPPORT A DATABASE

Teradata US, Inc., Dayto...

1. A computer-implemented method of managing computing capacity of a computing system in relation to a target capacity of
the computing system, wherein the computing system includes at least one physical processor, and wherein the computer-implemented
method comprises:
determining at least partly based on the target capacity of the computing system and a first average measured processing capacity
of the at least one processor taken over a first period of time, whether to change processing capacity of the at least one
physical processor from a first processing capacity to a different processing capacity;

changing the processing capacity of the at least one physical processor from the first processing capacity to a second processing
capacity which is different than the first processing capacity when the determining determines to change the processing capacity
of the at least one physical processor from the first processing capacity to a different processing capacity at least partly
based on the target capacity of the computing system and average measured processing capacity of the at least one processor;

thereafter, obtaining a second average measurement of the processing rate of the at least one processor over a second period
of time that includes the time the at least one processor has been operating at the second processing rate since the processing
rate was changed to the second processing rate;

comparing the second measurement of the processing rate to the target processing rate, wherein the target processing rate
is determined at last based on a calculated performance goal for the computing system related to an observed average response
time and one or more capacity workload rules for processing requests from users of the computing system;

determining, at least partly based on the target capacity of the computing system and the second average measured processing
capacity of the at least one processor taken over the second period of time, whether to switch the processing rate of the
at least one processor from the second processing rate back to the first processing rate; and

switching the processing rate of the at least one processor from the second processing rate back to the first processing rate
when the determining determines to switch the processing rate.

US Pat. No. 9,594,527

PRECEDENCE BASED STORAGE

Teradata US, Inc., Dayto...

1. A method for precedence-based storage, the method implemented as executable instructions residing in a non-transitory computer-readable
storage medium and executed by a hardware processor, the method comprising:
associating, by the hardware processing device, storage classes to storage pools within a database;
defining, via the hardware processor, storage pool precedence list for said storage pools, said storage pool precedence list
specifying a predefined pecking order for using the storage pools, said storage pool precedence list including at least some
storage pools within the predefined pecking order as higher, lower, or at a same level as other ones of the storage pools;

associating, via the hardware processor, said storage classes to database tables within said database;
receiving, via the hardware processor, a request to store data in a database table during operation of the database;
identifying, via the hardware processor, in response to said request, a subset of the storage pools using the storage class
associated with said database table; and

automatically processing, via the hardware processor: i) the request in a current storage pool in the subset of the storage
pools identified for the storage class indicating that enough space exists to handle the request and ii) obtaining an available
storage pool from the subset of the storage pools identified for the storage class for handling the request indicating that
enough space for handling the request does not exist.

US Pat. No. 9,524,296

MANAGING EVENTS IN A COMPUTING ENVIRONMENT

Teradata US, Inc., Dayto...

1. A method of managing response time in a database system, the method comprising:
initially operating the database system in accordance with a number of rules contained in a first working management rule-set;
monitoring a plurality of events which impact operation of the database system;
identifying at least one event that impacts on at least one of performance of the database system and availability of the
database system when the database system is operating below peak capacity to prevent resources from being channeled to less
urgent tasks and thereby to allocate resources to urgent tasks in preference to non-urgent tasks, wherein peak capacity is
defined as an arrival rate of jobs being greater than 50 per minute or a sustained central processing unit (CPU) usage of
over 95% for 600 seconds; and

operating the database system in accordance with a number of rules contained in a second working management rule-set which
is different from the first working management rule-set when the at least one event is identified, wherein each of the first
and second working management rule-sets is associated with a corresponding database operation state which is defined beforehand
by a user or a database administrator.

US Pat. No. 9,514,182

TECHNIQUES FOR MANAGING DATA RELATIONSHIPS

Teradata US, Inc., Dayto...

1. A method implemented in a computer-readable storage medium and executed on a processing device, the method comprising:
interacting, via the processing device, with a user to identify a first element from a first database table and a second element
from a second database table, the first element is composite information from multiple tables and viewed as a first object,
and the second element is other composite information from other multiple tables and viewed as a second object, wherein the
first object is different from the second object;

linking, via the processing device, the first element and the second element in a third database table creating a relationship
between the first element and the second element in the third database table, the third database table newly established to
create the relationship and the third database table includes logical and physical details associated with the first element
in the first database table and the second element in the second database table; and

dynamically presenting, via the processing device, attributes and properties of the relationship to the user and making the
relationship interactive permitting the user to inspect and visualize all aspects of the relationship and the user can drill
down for more detail of the relationship or abstract up for less detail via interactions with the presented relationship,
and the user permitted to: modify, delete, create, control, and manage the relationship between the first and second elements
via the interactions and the relationship modified by those interactions in the first database table, the second database
table, and the third database table for the objects to which the relationship is relevant to.

US Pat. No. 9,514,465

TECHNIQUES FOR PROCESS TRACKING AND MONITORING

Teradata US, Inc., Dayto...

1. A method for tracking goods and services, the method implemented as executable instructions within a non-transitory computer-readable
storage medium, the executable instructions represented as a tracking service that is executed by a hardware processor of
a computer from the non-transitory computer-readable storage medium, the method comprising:
acquiring automatically and dynamically, by the tracking service that executes as the executable instructions on the hardware
processor from the non-transitory computer-readable storage medium, a process plan for a good or service, identifying, by
the tracking service, that the process plan represents reflecting an entire lifecycle for the good or service and identifying,
by the tracking service, that the process plan also defines rules for moving the good or service from one process executing
on the hardware processor of the computer to another process executing on the hardware processor of the computer within the
process plan, and identifying, by the tracking service, that each process within the process plan is a node that includes
one or more of the rules, and wherein acquiring automatically and dynamically further includes automatically and dynamically
processing, by the tracking service, the process plan by: i) identifying each process that the good or the service encounters
during that good or that service's lifecycle, ii) obtaining identities of operations, iii) obtaining metadata associated with
parameters that are processed used by the operations, iv) obtaining metadata associated with data produced by the operations,
and v) identifying a timing and order of how and when the operations are processed;

defining, by the tracking service, a number of key processes within the process plan where the good or service is measured
when automatically processing the key processes of the process plan;

tracking automatically and dynamically, by the tracking service and in real time, the good or service through the process
plan and recording and reporting measurements, by the tracking service, when the good or service is processed at the key processes,
and wherein tracking automatically and dynamically further includes automatically processing exception processing when exceptions
during the lifecycle of the good or service are encountered; and

generating and presenting, by the tracking service, and within a screenshot of a Graphical User Interface (GUI), a graph representation
of the process plan that identifies a location of the good or service and identifies other goods and services processing within
the process plan for providing tracking of the good or service.

US Pat. No. 9,141,632

SELECTING A COMPRESSION TECHNIQUE

Teradata US, Inc., Dayto...

1. A method comprising:
determining demographics for data;
determining a compression ratio (“CR”) of each of a plurality of compression techniques, wherein CR is a size of the data
before compression divided into a predicted size of the data after compression, wherein the predicted size of the data after
compression is determined as a function of the determined demographics;

determining an access efficiency of each of the compression techniques as a function of the determined demographics;
ranking the compression techniques by CR and access efficiency;
selecting a compression technique based on the ranking;
compressing the data using the selected compression technique; and
storing the compressed data;
wherein each of the plurality of compression techniques stores data using:
a information data structure that specifies information about the data, and
a value data structure that stores the values of the data;
wherein access efficiency is defined to have four categories:
a first category in which:
the information data structure is accessed directly, and
the value data structure is accessed directly,
a second category in which:
the information data structure is accessed directly, and
the value data structure is accessed sequentially,
a third category in which:
the information data structure is accessed sequentially, and
the value data structure is accessed directly, and
a fourth category in which:
the information data structure is accessed sequentially, and
the value data structure is accessed sequentially.

US Pat. No. 10,552,126

TRANSITIONING BETWEEN CODE-BASED AND DATA-BASED EXECUTION FORMS IN COMPUTING SYSTEMS AND ENVIRONMENTS

Teradata US, Inc., San D...

1. A method of executing executable code, wherein the method is implemented at least partly by a device, and wherein the method comprises:using a code-based execution form and a data-based execution form together to execute the same executable code, by at least:
executing executable code, wherein the executing the executable code in a first form of execution that is either the code-based execution form or the data-based execution form;
during the execution, performing at least the following:
obtaining at least a part of data needed to execute the executable code arranged in the data-based form;
obtaining at least a part of the data needed to execute the executable code arranged in the code-based form;
providing location of data arranged in the data-based execution form, to a code-based execution processor for processing in the code-based execution form, during the execution of the same executable code;
providing location of data arranged in the code-based form to a data-based execution processor for processing in the data-based form, during the execution of the same executable code;
identifying one or more patterns of data in data arranged for processing in the data-based form of processing; and providing the data in the one or more identified patterns of data to the code-based execution processor for processing in the code-based form;
and thereafter, switching from the first form of the execution to a second form of the execution that is a different from the second form of the execution, wherein the switching from the first form of the execution to the second form of the execution further comprises: switching between a data-based operator and code-based operator during the execution of the executable code by at least effectively providing a location of data arranged in one or more data-based form to a code-based execution processor for processing in the code-based form, during the execution of the executable code.

US Pat. No. 9,870,399

PROCESSING COLUMN-PARTITIONED DATA FOR ROW-BASED OPERATIONS IN A DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A database system comprising:
a storage device configured to store a plurality of database tables, wherein at least a portion of the database tables are
column-partitioned database tables, wherein each column-partitioned database table is partitioned into a plurality of column
groups, wherein each column group comprises one or more entire columns of a respective column-partitioned database table,
and wherein each column of the column groups is logically stored as a row;

a processor in communication with the storage device; and
a row-column subsystem executable by the processor to:
receive a request to locate a row of a column-partitioned database table, wherein the row in the request is to be used to
provide a response to a query;

determine if referenced column values of the requested row are stored in a cache associated with the row-column subsystem;
retrieve the referenced column values of the row in the request from the cache in response to the determination that the column
values are in the cache; and

provide the referenced column values for evaluation with respect to query conditions of the query.

US Pat. No. 9,639,427

BACKING UP DATA STORED IN A DISTRIBUTED DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A method of backing up data stored in a distributed database system, comprising:
configuring a backup utility in a backup server with information regarding locations of data stored in the distributed database
system having a plurality of nodes, wherein the distributed database system is configured to respond to a database query by
gathering data from multiple ones of the plurality of nodes and providing the gathered data in an answer set responsive to
the database query, wherein gathering the data comprises communication of a subset of the data between at least two of the
multiple nodes;

receiving, by the backup utility, a request for backup storage of a data portion;
in response to the request, establishing, between the backup utility and respective ones of the plurality of nodes of the
distributed database system, distinct corresponding sessions;

retrieving, by the backup utility based on the information regarding locations of data stored in the distributed database
system, the data portion from the plurality of nodes for processing the request, wherein retrieving the data portion comprises
retrieving the data portion for processing the request from the plurality of nodes in respective ones of the distinct sessions;
and

communicating, by the backup utility, the retrieved data portion to a backup storage subsystem separate from the distributed
database system, the communicating causing storing of the retrieved data portion at the backup storage subsystem to provide
a backup copy of the data portion.

US Pat. No. 9,542,426

MEMORY MANAGEMENT FOR IN-MEMORY PROCESSING COMPUTING ENVIRONMENTS AND SYSTEMS

Teradata US, Inc., Dayto...

1. A method, performed at least partly by a device, for processing data in an in-memory processing system that obtains the
data from its memory of a first size for the processing of the data, wherein the data has a size that is larger than the first
size of the memory of the in-memory processing system, and wherein the method comprises:
storing a first portion and a second portion of the data in the memory of the in-memory processing system for processing by
the in-memory processing system;

wherein the storing of the second portion of the data stores the second portion of the data in the memory of the in-memory
processing system for processing by the in-memory processing system before the in-memory processing system completes the processing
of the first portion of the data, thereby allowing the in-memory processing system to process the second portion of the data
when the processing system is able to process the second portion of the data;

generating an execution plan for the processing data by the in-memory processing system, wherein the execution plan includes
at least one pipeline-enabled component; storing, by the at least one pipeline-enabled component, the first portion of the
data in the memory of the in-memory processing system for processing by the in-memory processing system; and storing, by the
at least one pipeline-enabled component, a second portion of the data in the memory of the in-memory processing system for
processing by the in-memory processing system before the in-memory processing system completes the processing of the first
portion of the data;

generating at least one pipelined-aware execution plan component in the execution plan, wherein the pipelined-aware component
is configured to interact with the at least one pipeline-enabled component so that the pipeline-enabled execution plan component
can effectively determine, at runtime when the execution plan is executed, to store at least one of the first and second portions
of the data in-memory processing system for processing by the in-memory processing system;

wherein the pipelined-aware execution plan component is configured to cause generation of a runtime pipeline operator configured
to operate at runtime to allow the in-memory processing system to process data in a pipelined manner; and

wherein the runtime pipeline operator includes one or more instances of a scanning runtime operator configured to scan the
data.

US Pat. No. 9,342,834

SYSTEM AND METHOD FOR SETTING GOALS AND MODIFYING SEGMENT CRITERIA COUNTS

Teradata US, Inc., Dayto...

1. A processor-implemented method comprising:
displaying to a user a graphical user interface (GUI) to enable the user to combine a plurality of search criteria having
variable parameters, used in searching of a database, to produce a predefined count of search results, wherein the GUI includes
an entry to accept a user defined value for the predefined count of search results, wherein the GUI includes at least one
sliding pointer user interface element to allow the user to set a parameter within a range, wherein displaying the GUI includes
displaying graphical elements including one or more bars, drop-down boxes, selection boxes, radio buttons, texts, Boolean
operators, or command buttons, and wherein displaying the GUI comprises displaying an initial combination and settings of
the graphical elements based on a predefined scenario;

receiving user selections of the plurality of search criteria including the predefined count of search results, values for
the variable parameters, and Boolean operations to combine at least some of the plurality of search criteria, at least one
user selection via the sliding pointer on the GUI to set a parameter within a range, wherein receiving the user selections
comprises receiving user modifications of the initial combination and settings of graphical elements to achieve the predefined
count of search results, and wherein receiving the user modifications of the initial combination and settings of graphical
elements comprises changing one or more existing criteria including adding one or more new criteria, deleting one or more
existing criteria, making changes in Boolean operators, or changing values for variable parameters in response to corresponding
actions by the user, and wherein changing one or more existing criteria comprises changing a combination of at least some
groups of criteria using the Boolean operators in response to one or more actions by the user;

dynamically displaying updated counts of the search results retrieved from the database, based on the user selections, as
the received user selections change, the updated counts including total counts of found items as well as segment counts, the
segment counts being counts of items that meet a segment criterion;

receiving a second set of user selections of the plurality of search criteria following the dynamic displaying of the updated
counts, the second set of user selections including movement of the sliding pointer; and

dynamically display a second set of updated counts from an intermediate search performed with the movement of the sliding
pointer, the second set of updated counts showing changes to the segment counts to provide what-if simulations to the user
in real-time.

US Pat. No. 9,720,623

MANAGEMENT OF DATA IN MULTI-STORAGE SYSTEMS THAT CAN INCLUDE NON-VOLATILE AND VOLATILE STORAGES

Teradata US, Inc., Dayto...

1. A method of managing data in a multi-storage system that includes multiple storages for storage of the data, wherein the
method is implemented at least partly by a device, and wherein the method comprises:
using storage information associated with storage of data in a first one of the multiple storages to manage storage of data
in another one of the multiple storages of the multi-storage system; and

providing the storage information associated with storage of data in the first one of the multiple storage devices to the
second one of the multiple storages, thereby allowing the second one of the multiple storage devices to manage storage of
data in the second one of the multiple storage devices, based on the information associated with storage of data in the first
one of the multiple storage devices.

US Pat. No. 9,720,966

CARDINALITY ESTIMATION FOR OPTIMIZATION OF RECURSIVE OR ITERATIVE DATABASE QUERIES BY DATABASES

Teradata US, Inc., Dayto...

1. A method, implemented at least partly by a device, for generating an execution plan for a database query of a database,
wherein the database query requires multiple sub-queries to be executed as multiple iterations such that a result of a first
one of the sub-queries is needed to be determined in a first iteration of the iterations in order to determine the result
of a second one of the sub-queries in a second iteration of the iterations to be performed after the first iteration, and
wherein the method comprises:
estimating at least one result associated with execution of multiple iterations of the iterations at least partly based on
a sampling or sampling-based technique by at least iteratively computing one or more join values, wherein the estimating of
the at least one result of execution of the multiple iterations of the iterations comprises:

using a sampling or sampling-based technique that estimates the at least one size of at least one result by sampling a subset
of data of one or more database tables of the database associated with the database query; and wherein the using of the sampling
technique comprises:

selecting a starting value from the one or more database tables as a sample of the sampling technique; and
iteratively computing all joining values of the starting value from the one or more database tables while storing the size
of a first result at each iteration of the first number of iterations in a respective slot; and

generating at least partly based on the at least one estimated result of the multiple iterations, a first execution plan for
executing the multiple iterations.

US Pat. No. 9,652,542

SECURELY EXTENDING ANALYTICS WITHIN A DATA WAREHOUSE ENVIRONMENT

Teradata US, Inc., Dayto...

1. A method, comprising:
associating, by a processor, an authenticated user of a data store with a user group and disabling from a view of the user
some features of the data store based on access rights assigned to the user;

identifying, by the processor, an analysis module accessible, via a data store interface, that the user is requesting for
processing against the data store, the analysis module calculates groups of information identified in the data store;

presenting, by the processor, schemas within the data store interface to the user that comports with the access rights of
the user to the data store, the access rights based on the user group, and the access rights assigned in the schema to the
schema elements and presenting the schemas based on the access rights assigned to the user by evaluating policy during the
presenting, wherein at least a portion of at least one schema is redacted out based on the evaluation of the policy;

receiving, by the processor, selections, via the data store interface, from the user: for the schemas and for options that
are to be assigned to the analysis module and the selections including schema elements for each schema selected by the user,
the each schema element controlled based on the user's access rights;

executing, by the processor, the analysis module for information in the data store defined by the selections to produce results;
and

providing, by the processor, the results to the user.

US Pat. No. 9,542,442

ACCESSING DATA IN A COLUMN STORE DATABASE BASED ON HARDWARE COMPATIBLE INDEXING AND REPLICATED REORDERED COLUMNS

Teradata US, Inc., Dayto...

1. A computer-implemented method of relating data across tables in a column-store database, wherein said method is implemented
at least partly by one or more processors, said method comprising:
determining a row identifier of a first tuple in a first table;
reading an index at a row corresponding to the row identifier of the tuple of the first table to obtain another row identifier
of a second tuple of another table, wherein reading the index comprises calculating a pointer to another column serving as
an extension to the index; and

determining data related between the first and second tuples based on reading a memory at an address calculated from the row
identifier in the index, wherein the memory is coupled to a dataflow accelerator processor comprising dataflow architecture
hardware configured to read the memory at the address calculated from the row identifier in the index and to execute database
machine code instructions using the memory at the address calculated from the row identifier in the index.

US Pat. No. 9,418,092

INDEX SELECTION IN A MULTI-SYSTEM DATABASE MANAGEMENT SYSTEM

Teradata US, Inc., Dayto...

1. A system, comprising:
a multi-system database management system that includes a plurality of database systems with different configurations from
each other, and wherein each of the database systems can process data independently by using one or more processors, wherein
each of the different configurations at least includes a number of database nodes and a number of access modules in each database
node; and

an index selection subsystem that includes one or more processors operable to:
combine sets of query information from each one of the plurality of database systems into a workload that includes merged
query information of the plurality of database systems;

generate, from the workload, one or more candidate indexes for each one of the plurality of the database systems; and
select one or more recommended indexes from the candidate indexes for each one of the plurality of database systems at least
partly based on the configuration of each one of the plurality of database systems, wherein the recommended indexes comprise
a first recommended index for a first copy of a given table in the first of the plurality of database systems, and a second
recommended index for a second copy of the given table in the second of the plurality of database systems.

US Pat. No. 9,330,159

TECHNIQUES FOR FINDING A COLUMN WITH COLUMN PARTITIONING

Teradata US, Inc., Dayto...

1. A method implemented and programmed within a non-transitory computer-readable storage medium and processed by a processor,
the processor configured to execute the method, comprising:
accessing, via the processor, metadata for a container row associated with column partitions of a database to search for a
row identifier present in the column partitions, wherein accessing further includes performing a binary search on the metadata,
wherein the metadata is included as a bit array in the container row that is searchable past a given offset value within the
bit array;

identifying, via the processor, a compression flag that is set in the metadata indicating that a number of columns within
the column partitions are compressed; and

finding, via the processor, a compressed column cell matching the row identifier by searching ranges and accessing offsets
defined in the metadata for the compressed columns.

US Pat. No. 10,002,160

PARALLELIZABLE GRIDDED GEOSPATIAL JOIN (PGGJ)

Teradata US, Inc., Dayto...

1. A method, comprising:normalizing statistics for a first table and a second table associated with a join operation of a Relational Database Management System (RDBMS);
generating a grid from the normalized statistics;
identifying a grid cell having more than a threshold number of entries from both the first table and the second table; and
dynamically constructing an R-tree for the grid cell based on determining that a total number of entries from the first table and the second table within the grid cell that exceeds a second threshold; and
processing the join operation from the R-tree of the grid cell in place of existing join processing that the RDBMS would have processed on the first table and the second table by reducing table duplication and ensuring uniqueness of join pair row identifiers when joining the first table and the second table from the R-Tree.

US Pat. No. 9,805,015

SYSTEM AND METHOD FOR ENHANCED USER INTERACTIONS WITH A GRID

Teradata US, Inc., Dayto...

1. A processor-implemented method comprising:
generating a grid of a plurality of cells arranged in a number of rows and columns, each row corresponding to a data record
of a database;

displaying the grid on a display;
for each row of the grid, displaying a selector icon on the display;
in response to receipt of user-based input indicative of selection of a selector icon for one of the rows, visually expanding
size of each cell in the one of the rows to indicate that the one of the rows has been selected for editing and visually altering
appearance of each editable cell that contains editable content of the one of the rows to indicate that the editable content
of each visually-altered editable cell is editable, and wherein, upon visual expansion of a selected row, each respective
editable cell that is visually altered contains only the editable content contained when a respective row is selected until
edited;

receiving user-based input data for the at least some of the visually-altered editable cells of the one of the rows;
validating the user-based input data using predefined criteria to identify incorrect input data; and
displaying errors associated with the incorrect user-based input data.

US Pat. No. 9,612,921

METHOD AND SYSTEM FOR LOAD BALANCING A DISTRIBUTED DATABASE PROVIDING OBJECT-LEVEL MANAGEMENT AND RECOVERY

Teradata US, Inc., Dayto...

1. A computer-implemented method for recovering from database system errors, said method comprising the steps of:
maintaining, within said database system, table states for each database table within said database system;
setting the table state for a database table to an interrupted state upon encountering an error during a database operation
affecting said database table, said database operation comprising a query issued during a user session that causes said database
table to transition into said interrupted state;

setting the table state for at least one additional database table affected by a query issued during said user session to
an interrupted state;

maintaining a recovery log containing a sequential list of database operations issued to said database system;
placing a checkpoint marker in said recovery log indicating a starting point for said restore operations, said a checkpoint
marker being placed in said recover log at periodic intervals;

executing a restore operation to restore said database table having an interrupted state to an active state; and
executing a restore operation to restore said at least one additional database table having an interrupted state to an active
state, wherein the execution of said restore operations to restore said database table having an interrupted state and said
at least one additional database table having an interrupted state to active states includes the steps of:

identifying database operations listed in said recovery log which are associated with said user session; and
re-executing said database operations listed in said recovery log which are associated with said user session and were entered
into said recovery log following said checkpoint marker.

US Pat. No. 10,545,959

METHOD AND A SYSTEM FOR EFFICIENT DATA SORTING

Teradata US, Inc., San D...

1. A method, comprising:deriving keys from a data set creating a key domain, each key associated with a particular row of the data set;
obtaining a mapping function for delivering a sort order of the keys;
processing a distributed wide-key sort process on the keys using the mapping function by distributing the data set over nodes of a network, each node having access to the key domain and the mapping function for performing the wide-key sort process on a unique portion of the data set distributed to that node; and
providing the sort order as output of the distributed wide-key sort process in row order based on the sorted keys returned from the nodes.

US Pat. No. 10,289,611

GLOBAL AND PERSISTENT MEMORY FOR USER-DEFINED FUNCTIONS IN A PARALLEL DATABASE

Teradata US, Inc., Dayto...

1. A method implemented at least partly by a device that includes one or more processors, the method comprising:receiving a database command from a user-defined function (UDF) for accessing data stored in a database of a database system, said database command to map memory that is to be used by the UDF;
mapping a block of data in the database system acquired from one or more tables to generate a memory mapping for the UDF, in response to the command from the UDF;
storing the memory mapping for the UDF;
thereafter, providing the stored memory mapping of the UDF for accessing and managing the memory, including the data of the tables associated with the memory mapping, for use by the UDF via set commands issued to the memory mapping within the memory, in response to the command from the UDF;
making management operations available to the UDF for managing the mapping and the data within the tables that are associated with the mapping; and
sharing the mappings with other instances of the UDF based on a management instruction received from the UDF.

US Pat. No. 9,940,358

EFFICIENT DATA TRANSFER

Teradata US, Inc., Dayto...

1. A method, comprising:determining, by a processor, a database operation that needs access to data on a first server and a second server, the first server and the second server are geographically dispersed over a network connection, wherein determining further includes identifying the database operation as a query having conditions for searching both a first database table located on the first server and a second table located on the second server;
calculating, by the processor, costs associated with moving a portion of the data from one of the servers to a remaining one of the servers in performance of a part of the database operation, wherein calculating further includes determining the costs as: a first transfer cost for the first table based on a total number of rows in the first table and a second transfer cost for the second table based on a total number of rows in the second table; and
transferring, by the processor, the portion from the server having a least amount of cost to the server having a greater amount of cost where the part of the database operation is processed.

US Pat. No. 9,934,276

SYSTEMS AND METHODS FOR FAULT TOLERANT, ADAPTIVE EXECUTION OF ARBITRARY QUERIES AT LOW LATENCY

Teradata US, Inc., Dayto...

1. A system for performing distributed execution of database queries, the system comprising:a query server comprising at least one memory storing computer executable instructions and at least one processing unit for executing the instructions, wherein execution of the instructions causes the at least one processing unit to:
receive a query to be executed on a database;
form a query plan based on the query, the query plan comprising a plurality of operators, each operator divided into one or more tasks;
assign tasks to task slots on a plurality of worker nodes in a cluster, wherein the task slots comprise pools of resources that run tasks without start-up overhead; and
upon receipt of a notification that a task has completed on a worker node, immediately assign an unassigned task to a free task slot on that worker node, such that the task may begin executing on that worker node substantially immediately thereafter, wherein a respective assignment rate for each worker node is selectively adjusted based on a rate at which each worker node completes assigned tasks.

US Pat. No. 9,851,923

MANAGEMENT OF DATA IN MULTI-STORAGE SYSTEMS THAT CAN INCLUDE NON-VOLATILE AND VOLATILE STORAGES

Teradata US, Inc., Dayto...

1. A method of managing data in a volatile storage, wherein the method is implemented at least partly by a device, and wherein
the method comprises:
using a combination of a data temperature-based storage management technique and a non-temperature-based storage management
technique together to manage the storage of data in the volatile storage, wherein a first portion of the volatile memory is
used to provide the temperature-based storage management technique and a second portion of the volatile memory is used to
provide non-temperature-based storage management technique.

US Pat. No. 9,213,741

ACTIVELY MANAGING RESOURCE BOTTLENECKS IN A DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A computer-implemented method for optimizing a database query of a database in a computer system, comprising:
using a cost model to generate at least one database query execution plan of the database;
monitoring, in the computer system, current resource usage of one or more resources of the computer system required to execute
the at least one database query execution plan, as a measure of current level of usage of the one or more resources;

storing, in the computer system, a condition code representative of the monitored current resource usage based on the measure
of the current level of the usage of the one or more resources;

modifying, in the computer system, the cost model using the stored condition code determined based on the measure of the current
level of the usage of the one or more resources required to the at least one query execution plan, by at least modifying at
least one cost associated with at least one of the one or more resources in order to obtain a modified cost model;

generating, in the computer system, a query execution plan for at least one database query using the modified cost model as
modified based on the measure of the current usage of the one or more resources required to the at least one query execution
plan; and

executing, in the computer system, the query execution plan.

US Pat. No. 9,135,299

SYSTEM, METHOD, AND COMPUTER-READABLE MEDIUM FOR AUTOMATIC INDEX CREATION TO IMPROVE THE PERFORMANCE OF FREQUENTLY EXECUTED QUERIES IN A DATABASE SYSTEM

Teradata US, Inc., Dayto...

1. A method of improving the performance of frequently executed queries in a database system, comprising:
receiving, by the database system, a first query to be executed;
generating a plurality of query plans including a first query plan and a second query plan;
evaluating a first cost value of the first query plan and a second cost value of the second query plan that respectively specify
an estimated processing cost for execution of the first query plan and the second query plan;

evaluating the second query plan as potentially having a lower execution cost than the first query plan if an index was generated
for utilization of the second query plan;

saving the second cost value and an index cost value that specifies an estimated cost for generating the index;
determining a parametric value corresponding to an estimated break-even point at which cost of execution of the second query
plan and creation of the index would not exceed the first cost value of executing the first query plan, wherein the break-even
point occurs when a cumulative query savings outweighs the estimated cost of having to generate the index;

determining at least partly based on the estimated break-even point and a number of times the first query has or is likely
to be executed, whether to create the index to the execute the second query plan utilizing the index, instead of executing
the first query plan; and

creating the index and executing the second query plan utilizing the index when determined at least partly based on the estimated
break-even point that is more efficient to create the index to the execute the second query plan utilizing the index, instead
of executing the first query plan.

US Pat. No. 10,635,651

TIMING OF REASSIGNMENT OF DATA TO DIFFERENT CONFIGURATIONS OF PROCESSING UNITS IN DATABASE SYSTEMS

Teradata US, Inc., San D...

1. A computer-implemented method of reassigning data portions of a database from one or more maps to one or more other maps for processing by multiple processing units of a database system configured to at least process data stored in the database, wherein the computer-implemented method is implemented by one or more physical processors configured to at least process data of the database stored in a non-transitory computer storage medium, and wherein the computer-implemented method comprises:obtaining multiple groups of data portions assigned to one or more maps for reassignment to the other one or more maps, wherein at least one of the one or more maps assign the data portions to a first configuration of processors for processing the data portions, and at least one of the other one or more maps assign the data portions to a second configuration of processors, different than the first configuration, for processing the data portions, and wherein the multiple groups of data portions are ranked in a priority order based on a priority of the reassignment from the one or more maps for the reassignment to the other one or more maps;
obtaining an available reassignment time as a time available to make the reassignment from the one or more maps for the reassignment to the other one or more maps;
determining a reassignment time for each one of the multiple groups of data portions as a reassignment time needed to reassign a particular group of data portions from the one or more maps for the reassignment to the other one or more maps;
reassigning a first one of the multiple groups of data in the priority order ranked based on the priority of the reassignment with a reassignment time that is equal of less than the available reassignment time.

US Pat. No. 10,042,674

REGULATING CAPACITY AND MANAGING SERVICES OF COMPUTING ENVIRONMENTS AND SYSTEMS THAT INCLUDE A DATABASE

Teradata US, Inc., Dayto...

1. A computer-implemented method of controlling capacity of a database system that includes one or more database nodes operable to process data stored in a database managed by the database system, wherein each one of the database nodes includes at least one physical processor and non-transitory computer readable storage medium configured to be accessed by the at least one processor, wherein the at least one physical processor is further configured to use one or more resources of the database system in connection with the processing of the data stored in the database, and wherein the computer-implemented method comprising:obtaining, by at least one physical processor, a target capacity of the database system as a desired overall target capacity of the database determined at least partly based on a performance goal value of the database;
effectively changing, by the at least one physical processor, from a current computing capacity to another computing capacity that is different than the current capacity to achieve the overall target capacity of the database system, by at least causing usage capacity of at least one of the resources to be changed, at least partly based on the target capacity, from a current usage capacity to another usage capacity different than the current usage capacity when the database system is operational and processing the data in the database, and
wherein the causing of the usage capacity of the least one resource to be changed comprises:
changing the capacity of at least one of the database nodes of the database system from a current capacity to a different capacity, by at least performing the following:
changing the actual processing rate of one or more physical processors of the at least one of the database nodes of the database system from a current processing rate to a different processing rate to achieve the desired overall the target capacity of the database system, by at least skipping one or more clock cycles based on performance improvement recommendations monitored by a usage regulator; and
effectively changing access capacity of at least one of the computing resources of the at least one of the database nodes of the database system from a current access capacity to a different access capacity to achieve the desired overall the target capacity of the database system.

US Pat. No. 10,025,588

PARSING OF DATABASE QUERIES CONTAINING CLAUSES SPECIFYING METHODS OF USER-DEFINED DATA TYPES

Teradata US, Inc., Dayto...

1. A process, executed by at least one processor in a database system, of parsing a database query, comprising:transforming, by the at least one processor, the database query containing at least one user-defined data type method into a statement; and
removing, by the at least one processor, redundant invocations of the at least one user-defined data type method in transforming the database query to the statement.

US Pat. No. 9,767,148

LEARNING BY USING EXCESS CAPACITY IN A CAPACITY CONTROLLED ENVIRONMENT

Teradata US, Inc., Dayto...

1. A method, implemented at least partly by a device, the method comprising:
configuring the database system to operate at a limited capacity below its full capacity for execution of database queries
of a database, wherein the database system includes one or more processors operable to process data stored in the database
in a database environment in order to process the database queries;

learning about optimization of execution of one or more selected database queries that do not meet at least one performance
criteria associated with a target performance for processing the selected database queries with the limited capacity in the
database environment, by using the excess capacity of the database system configured to operate with the limited capacity
for the execution of database queries of the database;

allowing at least one portion of the excess capacity available to the database system to be used to perform one or more learning
activities associated with learning about optimization of execution of one or more selected database queries in the database
environment that do not meet at least one performance criteria; and

not allowing the at least one portion of the excess capacity available to the database system to be used to perform other
activities not associated with the learning about optimization of execution of the database queries in the database environment.

US Pat. No. 9,720,613

METHOD AND SYSTEM FOR PREVENTING REUSE OF CYLINDER ID INDEXES IN A COMPUTER SYSTEM WITH MISSING STORAGE DRIVES

Teradata US, Inc., Dayto...

1. In a computer system including multiple processing nodes, multiple electronic data storage devices, and at least one allocator
associated with each processing node for handling data allocations for the associated processing node, a computer-implemented
method for assigning cylinder identifier (ID) index values to data allocations in said computer system, the method comprising
the steps of:
selecting one of said allocators as a master allocator;
maintaining within said computer system, a data structure associated with said master allocator, said data structure including
a generation number indicating an incarnation of the data structure, and a highest cylinder ID index value observed to be
in use within said data storage system;

receiving, by one of said allocators, an allocation request;
assigning a cylinder ID index to said allocation request;
comparing said cylinder ID index to the highest cylinder ID index value observed to be in use within said data storage system;
and

when the cylinder ID index is greater than the highest cylinder ID index value, incrementing the generation number and highest
cylinder ID index value maintained within the data structure associated with said master allocator.

US Pat. No. 9,619,538

TECHNIQUES FOR DATA INTEGRATION

Teradata US, Inc., Dayto...

1. A method implemented and programmed within a non-transitory computer-readable storage medium and processed by a processor,
the processor configured to execute the method, comprising:
identifying, by the processor, source data;
mapping, by the processor, source data attributes present in the source data to target data attributes in target data;
creating, by the processor, a profile for the source data that defines actions of the mapping, said profile comprising an
executable script that transforms the source data attributes into the target data attributes;

processing, via the processor, the profile against the source and target data; and
evaluating, via the processor, selection rules when multiple records from the source data appear to be a single record, wherein
evaluating further includes applying at least one of the selection rules based on a highest score for each of the multiple
records.

US Pat. No. 9,875,146

MANAGING WORKLOADS IN A DATABASE SYSTEM USING A PLURALITY OF HEALTH AND DEMAND METRICS

Teradata US, Inc., Dayto...

1. A method of managing workloads in a database system having a plurality of health and demand metrics M1 . . . Mm, the method comprising:
specifying a target value T1 . . . Tm for each respective health and demand metric M1 . . . Mm;

determining a theoretical metric level C1c, C2c . . . Cmc for each respective health and demand metric M1 . . . Mm that would drive a value of the respective health and demand metric M1 . . . Mm to the respective target value T1 . . . Tm by computing Cnc to be greater than Curn if Curn <(Tn adjusted by A), to be equal to Curn if Curn=(Tn adjusted by A), and to be less than Curn if Curn >(Tn adjusted by A), where A is a current timeshare concurrency level, and Curn is a current value of the metric Mn;

determining a rolling-average theoretical metric level C1r, C2r . . . Cmr for each respective health and demand metric M1 . . . Mm that would drive the value of the respective health and demand metric M1 . . . Mm to the respective target value T1 . . . Tm by computing Cnr to be greater than Curnr if Curnr <(Tn adjusted by Ar), to be equal to Curnr if Curnr=(Tn adjusted by Ar), and to be less than Curnr if Curnr >(Tn adjusted by Ar), where Ar is a rolling average timeshare concurrency level, and Curnr is a rolling average value of the metric Mn;

averaging the theoretical metric level C1c, C2c . . . Cmc and the rolling-average theoretical metric level C1r, C2r . . . Cmr for each respective health and demand metric M1 . . . Mm by computing average theoretical metric levels Cn=AVG(Cnc, Cnr) for n=1 . . . m;

selecting the most restrictive of the average theoretical metric levels C1, C2, C3 . . . Cm as a proposed throttle limit on the database system;

determining that a query in a queue to be processed by the database system would be released from the queue upon application
of the proposed throttle limit; and, as a result,

applying the proposed throttle limit and releasing the query from the queue.

US Pat. No. 9,406,027

MAKING PREDICTIONS REGARDING EVALUATION OF FUNCTIONS FOR A DATABASE ENVIRONMENT

Teradata US, Inc., Dayto...

1. A computer-implemented method of determining cardinality of a database operation that depends on an evaluation of at least
one function for column values of at least one column of at least one table of a database, the computer-implemented method
comprises:
obtaining determined multiple ranges of possible column values for the at least one column of the at least one table;
for each one of the multiple ranges of possible column values, obtaining a subset of possible column values in the range of
column values as selected evaluation point values in the range;

obtaining resultant functional values for the selected evaluation point values;
identifying one or more ranges of the resultant functional values that are responsive to the database operation;
identifying one or more corresponding column range values corresponding to the one or more resultant functional range values;
and

determining the cardinally of the database operation based on the identified corresponding column range values by at least:
transforming the cardinality of at least one functional predicate to cardinality of column values of the at least one column;
determining the cardinality of the column values; and
outputting the cardinality of the column values as the cardinality of the database operation.

US Pat. No. 9,213,639

DIVISION OF NUMERICAL VALUES BASED ON SUMMATIONS AND MEMORY MAPPING IN COMPUTING SYSTEMS

Teradata US, Inc., Dayto...

1. A computer-implemented method of memory mapping in a computing system that includes one or more processors, wherein the
computer-implemented method comprises:
obtaining, by a computing system, a global memory address in a global address space as a first number stored in a computer
readable form, and a number of memory channels of a memory channel space associated with the global address space as a second
number also stored in a computer readable form;

obtaining, by the computing system, a summation that approximates reciprocal of the second number, wherein the reciprocal
of the second number is equal to integer value one (1) divided by the second number, wherein the summation that approximates
the reciprocal of the second number includes one or more reciprocal values of powers of an integer; and

determining, by the computing system, the result of the division of the first number by the second number based on the summation
that approximates the reciprocal of the second number by at least determining a quotient and a reminder for the division,
respectively representing a memory channel address and a memory channel identifier that identifies one of the memory channels
of the memory channel space that the global memory address, thereby effectively mapping the first global address to the a
channel memory address indicated by the quotient and in the memory channel indicated by the remainder.

US Pat. No. 9,934,029

ANNOTATION DRIVEN REPRESENTATIONAL STATE TRANSFER (REST) WEB SERVICES

Teradata US, Inc., Dayto...

1. A method implemented in a computer-readable storage medium and executed on a processing device, the method comprising:identifying, via a processing device, a platform-independent Word-Wide Web (WWW) application (application) for a WWW site;
integrating, via the processing device, one or more annotations received from a developer, the one or more annotations describe and define selective aspects of the application as the application was originally provided; and
exposing, via the processing device, the one or more annotations as Representational State Transfer (REST) compliant methods (RESTful methods) for access via the WWW, wherein the platform-independent WWW application was a legacy application that was not RESTful until the one or more annotations are integrated and exposed, and the legacy application maintains services and is made RESTful via the annotations, and wherein the annotations are metadata and not part of a source of the legacy application, the annotations have no direct effect on the legacy application but can augment compiling and augment what is additionally produced by the legacy application when the legacy application is executed, the metadata representing the annotations embedded in an executable version of the legacy application and retrieved at runtime for the executable version.

US Pat. No. 9,870,398

DATABASE-TABLE SAMPLING-PERCENTAGE SELECTION

Teradata US, Inc., Dayto...

1. A database system comprising:
a storage device configured to store a plurality of database tables;
a processor in communication with the storage device, the processor configured to:
determine a first sampling percentage value of a column of a database table from the plurality of database tables based on
a respective frequency of each column value in the column, wherein the first sampling percentage value is a first percentage
of the column;

determine a second sampling percentage value of the column based on size of the database table, wherein the second sampling
percentage value is a second percentage of the column;

compare the first sampling percentage value to the second sampling percentage value; and
in response to the comparison, select one of the first sampling percentage value and the second sampling percentage value,
wherein the selected sampling percentage value is a percentage of the column to be used to collect statistics on the column,
and wherein collected statistics based on the selected sampling percentage value are used to generate at least one database
query response plan associated with the column.

US Pat. No. 9,824,101

DATA STORAGE MANAGEMENT BY USING EXCESS CAPACITY IN A CAPACITY CONTROLLED ENVIRONMENT

Teradata US, Inc., Dayto...

1. A method, implemented at least partly by a device, for managing storage of data in a database by using excess capacity
of a database system configured to operate at a limited capacity below its full capacity, wherein the database system includes
one or more processors operable to process data stored in the database, and wherein the method comprises:
configuring the database system to operate at the limited capacity, below its full capacity, to process all database queries
of the database;

configuring at least a portion the excess capacity available to the database system to be used only to manage storage of the
data in the database when the database system is processing the database queries using only the limited capacity configured
to process the database queries, wherein the management of the storage of data is not needed for processing of the database
queries, thereby reserving the at least one portion the excess capacity for management of the storage of data that is not
needed for processing of the database queries by the database system;

automatically allowing only the at least a portion of the excess capacity available to the database system to be used to manage
storage of the data in the database, when the database system is processing the database queries using only the limited capacity
configured to process the database queries, without requiring input from one or more users or administrators of the database
system, but not allowing the excess capacity to be used to process the database queries of the database; and

automatically managing storage of the data in the database, by the database system, by using only the at least one portion
of the configured excess capacity available to the database system, without requiring input from one or more users or administrators
of the database system, when the database system is processing the database queries using only the limited capacity configured
to process the database queries, and wherein the automatically managing storage of the data by the database system further
comprises:

automatically determining by the database system, one or more parameters needed to perform a particular management task related
to the managing of the storage of the database system data;

automatically determining by the database system, based on the one or more determined parameters, the extent of capacity needed
to complete a first management task, as the at least one portion of the excess capacity needed to complete the first management
task;

automatically designating the at least one portion of the excess capacity only for completion of the first database management
task such that the at least one portion of the excess capacity is used only for completion of the first database management
task;

performing the first management task by using only the designated at least one portion of the excess capacity while the database
system is processing the database queries using only the limited capacity configured to process the database queries;

thereafter, automatically re-designating the at least one portion of the excess capacity for completion of a second database
management task also related to the managing of the storage of the database system data such that the at least one portion
of the excess capacity is used only for completion of the second database management task; and

after the first database management task has completed, performing the second database management task by using only the designated
at least one portion of the excess capacity while the database system is processing the database queries using only the limited
capacity configured to process the database queries.

US Pat. No. 9,646,112

SYSTEM, METHOD, AND COMPUTER-READABLE MEDIUM FOR PROVIDING A DYNAMIC VIEW AND TESTING TOOL OF POWER CABLING OF A MULTI-CHASSIS COMPUTER SYSTEM

Teradata US, Inc., Dayto...

15. A multi-chassis computer system, comprising:
a plurality of system trays;
a plurality of power supply components; and
a controller tray that includes a processing module configured to:
provide a graphical user interface that depicts system components of the multi-chassis computer system;
provide, through the graphical user interface, a plurality of display icons each in association with one of the system components
that respectively indicate a power supply status of a corresponding system component, wherein the plurality of display icons
comprises a plurality of multi-state display icons;

provide, through the graphical user interface, a display of preferred power supply cabling of one or more system components
included in a load group, wherein the preferred power supply cabling is visually indicated using a first state of associated
multi-state display icons of the one or more system components, and wherein the preferred power supply cabling is indicative
of cabling from a preferred power supply of a plurality of power supplies to the load group; and

provide, through the graphical user interface, a display of power supply cabling of the one or more system components included
in the load group, wherein the power supply cabling is visually indicated using a second state of the associated multi-state
display icons of the one or more system components, and wherein the power supply cabling is indicative of actual power supply
cabling from at least one of the plurality of power supplies to the load group, wherein the processing module, through the
graphical user interface, is further configured to selectively switch between the first state of the associated multi-state
display icons and the second state of the associated multi-state display icons.

US Pat. No. 10,452,632

MULTI-INPUT SQL-MR

Teradata US, Inc., San D...

1. A system comprising:an array of storage devices configured to store data;
an array of processing nodes in communication with the array of storage devices, the array of processing nodes configured to:
receive a request to perform at least one task associated with the data, wherein the request includes a function call to a function configured to operate on a first data table and a second data table included in the data;
partition rows of the first data table into a plurality of row partitions among respective subsets of the processing nodes based on a partition key common to both the first data table and the second data table, wherein at least one row partition of the first data table comprises a plurality of rows;
for each partition key, generate a relation, wherein each relation is a data structure configured to include a plurality of columns in a single row, wherein each column of the relation is configured to maintain multiple column values from at least one row of a different data table;
for each relation, insert a plurality of row values from at least one row of the first data table from one of the row partitions into a single column of a row of the relation according to the partition key;
distribute row values from at least one row of the second data table into another single column of at least one relation according to the partition key, wherein at least one row value from at least one column of the second data table is distributed into a column of a row of a relation and, wherein the column of the row of the relation is in a row of the relation having at least one row value from the first data table in a different column of the relation; and
execute the function on each relation to generate at least one output data object.

US Pat. No. 10,180,961

REMOTE NESTED JOIN BETWEEN PRIMARY ACCESS MODULE PROCESSORS (AMPS)

Teradata US, Inc., Dayto...

1. A method, comprising:identifying, by a query optimizer executed on a processor, a condition for a remote nested join between a first table and a second table of a Relational Database Management System (RDBMS);
hashing, by said query optimizer, at least a portion of the condition to identify a first AMP having first rows that satisfy the condition; and
sending, by the query optimizer, the condition to said first AMP having the first rows from the first table that satisfy the condition and accessing, by the first AMP, a column partition table of the first AMP table to obtain the first rows, directing the first AMP to identify a second AMP to perform the remote nested join on second rows from the second table with the first rows and provide a join result from the remote nested join, wherein the second AMP includes the second rows that also satisfy the condition, and wherein the second AMP is identified by hashing at least a portion of the condition;
wherein identifying further includes recognizing the condition as a single row condition on one of: a unique secondary index and a unique primary index for just one of: the first table and the second table; and
wherein recognizing further includes identifying the table associated with the single row condition as a left table of a join condition and the table without the single row condition on the unique secondary index or the unique primary index as a right table of the condition.

US Pat. No. 9,978,024

WORKFLOW INTEGRATION WITH ADOBE™ FLEX™ USER INTERFACE

Teradata US, Inc., Dayto...

1. A system to visualize master data management data as part of a master data management workflow user interface in a computer system, comprising:a relational database management system (RDBMS) executing in the computer system, wherein the RBDMS is configured to store master data management data that resides in one or more tables; and
a master data management system executable in the computer system to maintain, as part of a process and framework, a first process workflow to manage relationship data that is included in the master data management data and is indicative of an association of one piece of master data management data to another piece of master data management data, wherein the computer system is configured to display the first process workflow, wherein the first process workflow comprises a selectable user interface (UI) node, wherein the selectable UI node comprises a link to a source code file comprising a programming language that defines one or more UI components configured to construct a user interface, wherein selection of the UI node displays contents of the source code file, wherein the source code file is executable to generate a visual representation of the one or more UI components on a display as part of the user interface when the first process workflow is executed, wherein a first component of the one or more UI components is an Shockwave™ Flash™ (swf)-file-based UI component executed through the programming language, and wherein the swf-file-based UI component is configured to represent and view the master data management data in a hierarchy.

US Pat. No. 9,805,121

MANAGEMENT OF DIFFERENT DATABASE SYSTEMS AND/OR ENVIRONMENTS

Teradata US, Inc., Dayto...

1. A method, implemented at least partly by a device, for processing one or more database requests in a database environment
that includes multiple database systems that differ with respect to at least one of: one or more database capabilities, one
or more representations of data, and one or more interfaces provided for accessing the database systems, the method comprising:
receiving at least one database request associated with data of one or more of the multiple database systems; and
processing the at least one database request by at least one of the database systems in consideration of at least one of the
differences between the multiple database systems by performing at least the following:

determining whether the at least one database request can be independently processed by at least one the database systems;
and

creating a link between two or more of the database systems in order to process the least one database request when the determining
determines that none of the database systems can independently process the at least one database request.

US Pat. No. 9,747,334

MANAGING EXCESS CAPACITY OF DATABASE SYSTEMS IN A CAPACITY CONTROLLED COMPUTING ENVIRONMENT

Teradata US, Inc., Dayto...

1. A computer-implemented method to manage capacity of a database system, wherein the database system that includes one or
more database nodes operable to process data associated with a database, wherein the one or more database nodes include one
or more physical processors, and wherein the computer-implemented method comprises:
configuring the database system to operate at an allotted limited capacity below its full capacity to process database queries,
by configuring at least one of the one or more database nodes to operate at an allotted usage capacity below its full usage
capacity to process database queries, wherein an excess capacity in relation to the allotted limited usage capacity is available
to the database system on demand;

determining by the one or more physical processors that one or more problematic operations associated with the database have
occurred, wherein the one or more problematic operations include at least one of: (i) one or more database queries that have
been determined to encounter an error during execution, and (ii) execution of one or more database queries have been determined
not to be optimal;

determining by the one or more physical processors whether to allow excess capacity that is available to the database system
on demand in relation to the allotted limited capacity to be used to resolve the problematic operations by at least performing
one or more selected operations pertaining to at least one of: processing of a selected one or more of the database queries
that have encountered an error, and optimization of a selected one or more database queries determined not to be optimal;
and

when the determining determines to allow the excess capacity available to the database system to be used to perform the one
or more selected operations:

allowing by the one or more physical processors the excess capacity of the database system to be used on demand to perform
the one or more selected operations, by allowing the at least one database node to exceed its allotted usage capacity on demand
to perform the one or more operations,

not allowing by the one or more physical processors the excess capacity of the database system to be used to process one or
more of the database queries that have not been selected for least one of: processing of the selected one or more of the database
queries that has encountered an error, and the optimization of the selected one or more of the database queries.

US Pat. No. 9,703,505

MANAGEMENT OF DATA IN MULTI-STORAGE SYSTEMS THAT CAN INCLUDE NON-VOLATILE AND VOLATILE STORAGES

Teradata US, Inc., Dayto...

1. A method of managing data in a multi-storage system that includes multiple storages for storage of the data, the multi-storage
system including at least two storages that differ from each other with respect to one or more criteria, wherein the method
is implemented at least partly by a device, and wherein the method comprises:
managing storage of data in a first one of the multiple storages, based on a temperature value of the data associated with
a second one of the multiple storages, wherein:

the temperature value of the data is indicative of one or more storage management policies with respect to storage of the
data in the at least two storages based on the one or more differing characteristics;

the one or more differing characteristics include volatility and/or persistence of storage of the data; and
managing the storage of data further comprises managing the storage of data for a volatile storage of the multi-storage system,
based on a temperature of the data obtained for a non-volatile storage of the multi-storage system.

US Pat. No. 10,713,255

SPOOL FILE FOR OPTIMIZING HASH JOIN OPERATIONS IN A RELATIONAL DATABASE SYSTEM

Teradata US, Inc., San D...

1. A method for spooling data for use in joining a small table with a large table in a relational database system, said method comprising the steps of:analyzing a join condition for combining records from said small and large tables and selecting qualified rows from said large table; and
writing said qualified rows to a spool file, said spool file including:
a first partition containing hash values of all bind terms for said join condition;
a second partition including a join column with a best selective bind term; and
at least one additional partition including additional join columns used in bind terms.

US Pat. No. 10,545,923

REDUCING SKEW FOR DATABASE OPERATION PROCESSING WITH RANDOMIZATION

Teradata US, Inc., San D...

10. A method for performing a database operation in a file system residing on a plurality of processing modules, the file system including a first relation having a plurality of first-relation entries, each of the plurality of first-relation entries having a first-relation attribute that is of interest in the database operation, the file system including a second relation having a plurality of second-relation entries, each of the plurality of second-relation entries having a second relation attribute that is of interest in the computational operation, the method comprising:setting a value of a distribution attribute in each of the first-relation entries to a unique value selected from among a domain of unique values;
redistributing the first-relation entries of the first relation among the plurality of processing
modules based on the first-relation attribute and the distribution attribute;
making n copies of the second relation, where n is the number of unique values in the domain of unique values;
redistributing each of the copies of the second relation to a respective processing module to which the first-relation entries of the first relation have been redistributed by:
setting a number attribute for the second-relation entries for each respective copy of the second relation to a respective unique value selected from the domain of unique values, and
redistributing each of the copies of the second relation based on the number attribute; and
performing the computational operation to produce a result.

US Pat. No. 10,042,907

PROVIDING METADATA TO DATABASE SYSTEMS AND ENVIRONMENTS WITH MULTIPLE PROCESSING UNITS OR MODULES

Teradata US, Inc., Dayto...

1. A computer-implemented method of providing data objects to a database system that includes multiple processing units in one or more database nodes that each include at least one processor configured to process at least a portion of data for the database system, wherein at least one of the database nodes includes first and second processing units, and first and second local storages that can be accessed only by the first and second processing units, respectively, and wherein the computer-implemented method comprises:obtaining one or more data objects, pertaining to metadata describing the organization of data stored in the database system and needed for processing of database queries of the data stored in the database system, to be provided to at least the first and second processing units of the at least one database node of the database system;
storing a copy of the same one or more obtained objects pertaining to the metadata in each one of the first and second local storages for access only by the first and second processing units, respectively, wherein each one of the first and second local storages are partitioned into multiple portions for storing multiple types of database objects pertaining to organization of data stored in the database system, wherein the storing or at least facilitating storage of a copy of the one or more obtained objects stores or at least facilitates storage of the copy of the one or more obtained objects in a respective portion of the first and second local storages corresponding to the type of the one or more obtained objects;
allowing each one of the first and second processing units to access its own copy of the one or more database objects pertaining to the metadata, stored in its respective one of the first and second local storages by searching its own local storage, without sharing its own copy with the other one of the first and second processing units;
allowing each one of the first and second processing units to access its own copy of the one or more database objects pertaining to the metadata, stored in its respective one of the first and second local storages by searching its own local storage, without accessing data from an external source being external to the database system; and
searching, by each one of the multiple database nodes, its own copy of the one or more database objects pertaining to the metadata needed for processing of the database queries of the data stored in the database system, in response to the database queries of the database.

US Pat. No. 9,684,554

SYSTEM AND METHOD FOR USING FAILURE CASTING TO MANAGE FAILURES IN A COMPUTED SYSTEM

Teradata US, Inc., Dayto...

1. A method of managing failures in a computing system, wherein the method is implemented at least partly by a device, and
wherein the method comprises:
detecting a failure of a first failure type in the computing system;
casting the first failure type to a second failure type, different that the first failure type, wherein the second failure
type has an associated failure recovery; and

attempting to resolve the first failure type by using the failure recovery associated with the second failure type.

US Pat. No. 10,552,392

DATA-TEMPERATURE-BASED MAPPING IN A DATABASE SYSTEM

Teradata US, Inc., San D...

1. A database system comprising:a storage array that includes a plurality of storage devices configured to store a database;
a processor in communication with the storage array, the processor configured to:
determine frequency of data values of a first set of data from the database, wherein the frequency of data values are determined at a predetermined data granularity, wherein each frequency of data value is based on at least one of access frequency of a respective portion of the first set of data and a priority of the respective portion of the first set of data, wherein the access frequency is indicative of the frequency at which the first data set of data is accessed from the database relative to other data sets of the data;
generate a data object to include information indicative of the frequency of data values;
store the data object in the storage array;
identify a first temperature determination procedure used to determine the frequency of data values of the first set of data;
determine a second temperature determination procedure to be used to determine alternative frequency of data values, wherein the second temperature determination procedure is different than the first temperature determination procedure;
determine alternative frequency of data values of the first set of data based on the second temperature determination procedure;
update the data object to include the alternative frequency of data values; and
store the updated data object in the storage device.

US Pat. No. 10,552,400

MANAGEMENT OF INTELLIGENT DATA ASSIGNMENTS FOR DATABASE SYSTEMS WITH MULTIPLE PROCESSING UNITS

Teradata US, Inc., San D...

1. A computer-implemented method of reassigning data portions assigned to a first map to a second map for processing by multiple processing units of a database system configured to process data stored in a database, wherein the computer-implemented method is implemented by one or more physical processors configured to access at least computer executable code stored in a non-transitory computer storage medium, and wherein the computer-implemented method comprises:selecting a set of the distinct data portions assigned to the first map for assignment to the second map as selected data portions, wherein the first map assigns each one of the distinct data portions to one or more multiple processing units of the database system for processing in accordance with one or more distributions schemes; and
determining multiple reassigning groups for the selected data portions, wherein at least one the reassigning groups identifies two or more of the selected data portions from the first map for reassigning together as a group to the second map.

US Pat. No. 10,459,906

MANAGEMENT OF SPARSE DATA FOR DATABASE SYSTEMS WITH MULTIPLE PROCESSING UNITS

Teradata US, Inc., San D...

1. A computer-implemented method of limiting a number of processors that process data in a database system configured to process data using multiple processors, wherein the computer-implemented method is implemented at least partly by a computer that includes one or more physical processors configured to process the data stored in a non-transitory storage medium, and wherein the computer-implemented method comprises:obtaining a limit on the number of processors to be used to process the data of the database needed to process a database request of the database, wherein the limit on the number of processors is a positive number that is less than a number of available processors that are available to process the data of the database in response to the database request of the database;
selecting, based on the limit on the number of processors, a subset of the available processors as one or more selected processors to process the data of the database, wherein the number of one or more selected processors selected are less than or equal to the limit on the number of processors to be used to process the data of the database; and
assigning each one of distinct data portions of the data of the database to a distinct one of the one or more selected processors, thereby allowing only a limited number of the processors that are available to process the data to process the data in response to the database request.

US Pat. No. 9,996,580

SYSTEM, METHOD, AND COMPUTER-READABLE MEDIUM FOR COSTING USER-DEFINED FUNCTIONS AND METHODS IN A DATABASE MANAGEMENT SYSTEM

Teradata US, Inc., Dayto...

1. A method of processing a database query, the method comprising:obtaining a test value set of parameters of one of a user-defined function and a user-defined method, wherein the one of the user-defined function and the user-defined method is included in a database query to be performed on at least one database table of a database, wherein the one user-defined function and the user-defined method is configured to call at least one function to be executed on content of the at least one database table of a database when included in the database query, wherein the test value set comprises input values to the one of the user-defined function and the user-defined method, wherein the test value set is maintained separately from the database;
setting parameters of the one of the user-defined function and the user-defined method according to the test value set, wherein the test value set is used exclusively to set the parameters of the one of the user-defined function and the user-defined method;
running the one of the user-function and the user-defined method based on the parameters;
calculating an execution time of the running of the one of the user-defined function and the user-defined method;
storing the execution time of the running of the one of the user-defined function and the user-defined method;
receiving the database query;
in response to receipt of the database query, creating a query response plan comprising planned execution of the one of the user-defined function and the user-defined method, wherein the stored calculated execution time of the one of the user-defined function and the user-defined method is used in the creation of to determine a cost of the query response plan; and
executing the query response plan to generate a response to the database query.

US Pat. No. 9,965,498

PREDICTIVE RESOURCE MANAGEMENT

Teradata US, Inc., Dayto...

1. An apparatus, comprising:a monitoring module to monitor database system resource consumption over time, in conjunction with scheduled data loading, data export, and query operations, said monitoring comprising:
receiving event messages associated with an occurrence of data loading, data export, or query jobs;
receiving automatic registration information associated with the data loading, data export, or query jobs; and
categorizing the data loading, data export, or query jobs as the scheduled data loading, data export, and query operations based on a number of repeated occurrences associated with the data loading, data export, or query jobs; and
a processor to:
generate a database system resource consumption map based on the database system resource consumption over time and in consideration of maximum resource consumption of the database system resource consumption taken over the time with respect to data loading, data export, and query operations of the database system;
determine, based on the database system resource consumption map and current database system loading associated with current database resource consumption, a predicted database system resource consumption as a projection of the system resource map;
adjust database system workload throttling to accommodate the predicted database system resource consumption based on the database system resource consumption map and current system loading induced by at least one of data loading, data export, or query activity, prior to the current database resource consumption reaching a predefined critical consumption level; and
wherein the adjusting comprises:
at least one of shifting data loads over time, restricting processor usage, restricting a number of concurrent user sessions, or restricting a number of reports generated for a selected time period.

US Pat. No. 10,289,626

DISTRIBUTED SEQUENTIAL PATTERN MINING (SPM) USING STATIC TASK DISTRIBUTION STRATEGY

Teradata US, Inc., Dayto...

1. A method, comprising:(a) generating, by a processor, seed patterns from a sequence database;
(b) computing, by the processor, an execution budget for processing each seed pattern based on a length for that seed pattern, wherein computing further includes computing, for each seed pattern of a given length, a Children patterns Support Sum (CSS) as a relative execution time for mining the super patterns by a given node for a given seed pattern of the given length, wherein computing further includes augmenting, each CSS, by a selective sampling value derived from: frequencies of the given seed pattern within the sequence database, the given length of the given seed pattern, and an average length for all of the seed patterns;
(c) distributing, by the processor, a number of the seed patterns with the number of the seed patterns' execution budgets to distributed nodes that are enabled to process in parallel with one another;
(d) load balancing, by the processor, the execution of the distributed nodes while the distributed nodes process the distributed seed patterns based on the distributed execution budgets; and
(e) iterating, by the processor, (c)-(d) until each seed pattern is processed to identify super patterns derived from the sequence database.

US Pat. No. 9,910,623

TRAINING OF STORAGE DEVICES IN COMPUTING SYSTEMS AND ENVIRONMENTS

Teradata US, Inc., Dayto...

1. A method for training storage components that each includes storage modules, wherein each of the storage modules includes
multiple storage sub-modules that are individually addressable, wherein the method is performed at least partly by a device,
and wherein the method comprises:
providing an interfacing component at least partly as computer executable code configured to train one or more storage modules
of a first storage component of the storage components at least partly by:

facilitating and/or performing read and/or write requests to one or more storage sub-modules of at least one of the modules
of the first storage component, wherein each of the one or more storage modules includes multiple storage sub-modules that
are individually addressable, and wherein the facilitating and/or performing read and/or write requests to the one or more
storage sub-modules of the at least one of the modules of the first storage component individually addresses the one or more
sub-modules.

US Pat. No. 9,886,492

SELF-ADJUSTING DATABASE-QUERY OPTIMIZER

Teradata US, Inc., Dayto...

1. A computer-implemented method for use in executing a query in a database system, the method comprising:
formulating an initial query-execution plan that identifies an expected path for execution of the query;
formulating, prior to an execution of said query according to said initial query-execution plan, an alternative query-execution
plan for execution of the query, said alternative query-execution plan differing from the initial query-execution plan from
a point that occurs after an intermediate checkpoint in the initial query-execution plan;

initiating the execution of the query according to said initial query-execution plan;
at said intermediate checkpoint in the initial query-execution plan:
concluding that an actual result obtained at the intermediate checkpoint in the initial query-execution plan does not match
an expected result; and

in response, choosing said alternative query-execution plan for the execution of the query;
continuing the execution of the query according to said alternative query-execution plan from said point that occurs after
said intermediate checkpoint; and

abandoning the execution of the query according to said initial query-execution plan from said point that occurs after said
intermediate checkpoint.

US Pat. No. 10,459,912

OPTIMIZING PROCESSING OF GROUP-BY QUERIES FEATURING MAXIMUM OR MINIMUM EQUALITY CONDITIONS IN A PARALLEL PROCESSING SYSTEM

Teradata US, Inc., San D...

1. A method of optimizing processing of a query specifying an equality condition on an attribute of a table in a parallel processing system, comprising:receiving, by a processing module of a plurality of processing modules deployed in the parallel processing system, the query that specifies the equality condition on the attribute of the table, wherein the processing module has a subset of rows of the table allocated thereto;
initializing, by the processing module, a hash table including a first field for a selected attribute of the query and at least one second field for the attribute on which the equality condition is applied and a row of the subset of rows;
identifying, by the processing module, each row of the subset of rows that satisfies the equality condition by at least:
evaluating, by the processing module, the selected attribute of each row of the subset of rows; and
determining if a row of the hash table includes a row having the selected attribute;
storing, by the processing module, the selected attribute of each row of the subset of rows identified as satisfying the equality condition in the first field of a respective row of the hash table, and the value of attribute on which the equality condition is applied and the row identified as satisfying the equality condition in the at least one second field of the respective row of the hash table;
redistributing each row of the hash table, associated with the equality condition, to a respective one of the plurality of processing modules based on a hash value of the selected attribute;
after the redistributing each row of the hash table based on a hash value of the selected attribute, receiving, by the respective one of the plurality of the processing modules, a global value of each attribute of the table on which the equality condition is applied that respectively specifies a maximum value of the attribute on which the equality condition is applied for a corresponding selected attribute in the event the equality condition comprises a maximum equality condition and that respectively specifies a minimum value of the attribute on which the equality condition is applied for a corresponding selected attribute in the event the equality condition comprises a minimum equality condition;
after the redistributing each row of the hash table based on a hash value of the selected attribute, comparing by the respective one of the plurality of the processing modules each global value of each attribute with a value of the attribute on which the equality condition is applied of a corresponding selected attribute stored in the hash table;
after the redistributing each row of the hash table based on a hash value of the selected attribute, discarding by the respective one of the plurality of the processing modules a row of the hash table in the event the value of the attribute of the row of the hash table is less than the global value for the selected attribute in the event the equality condition comprises a maximum equality condition; and
after the redistributing each row of the hash table based on a hash value of the selected attribute, maintaining by the respective one of the plurality of the processing modules a row of the hash table in the event the value of the attribute of the row of the hash table equals the global value for the selected attribute.

US Pat. No. 10,268,724

TECHNIQUES FOR IMPROVING THE PERFORMANCE OF COMPLEX QUERIES

Teradata US, Inc., San D...

1. A method implemented and programmed within a non-transitory computer-readable storage medium and processed by a processor, the processor configured to execute the method, comprising:determining, at the processor, whether to execute a request via a static plan generation or a dynamic plan generation, wherein determining comprises:
producing, at the processor, a static plan by using the static plan generation to evaluate costs and conditions of the static plan;
selecting, at the processor, to process one of the dynamic plan generation for the request and the static plan for the request, and wherein selecting to process the dynamic plan generation comprises processing statistical information from intermediate spools, and wherein no portion of the dynamic plan is generated prior to selection;
in response to selection of the dynamic plan generation:
sequentially fragmenting, at the processor, the request into a plurality of request fragments;
generating, at the processor, a first plan fragment corresponding to a first request fragment from the plurality of request fragments; and
executing, at the processor, the first plan fragment; and
for each other request fragment:
generating, at the processor, a corresponding plan fragment in response to execution of an immediately preceding plan fragment;
executing, at the processor, the corresponding plan fragment; and
providing, at the processor, feedback based on execution of the corresponding plan fragment to a remaining portion of the request, wherein execution of a last plan fragment completes the request.

US Pat. No. 10,706,052

METHOD FOR PERFORMING IN-MEMORY HASH JOIN PROCESSING IN RELATIONAL DATABASE SYSTEMS

Teradata US, Inc., San D...

1. A method for performing a hash join between an inner table and an outer table in a distributed relational database system, the method comprising the steps:reading a plurality of hash values from said outer table;
probing said plurality of hash values in said inner table;
producing a set of successfully probed outer table row ids;
reading outer table rows corresponding to said outer table row ids;
evaluating at least one join condition on said outer table rows corresponding to said outer table row ids in bulk; and
building a result set of successfully evaluated outer table rows.

US Pat. No. 10,642,834

PUSHING JOINS ACROSS A UNION

Teradata US, Inc., San D...

1. A computer-implemented method for selecting a join plan for a query containing a plurality of joins and a union block, the computer-implemented method comprising:selecting from among the plurality of joins a subset to consider for pushing across the union block;
identifying from among the selected joins N joins for which pushing the join across the union block is semantically correct;
proposing a join plan for all of the plurality of joins without any of the joins being pushed across the union block;
proposing 2N separate join plans for the plurality of joins, each of the 2N separate join plans comprising a unique combination of pushed joins and unpushed joins; and
selecting a join plan from among the proposed join plans;
wherein selecting from among the plurality of joins a subset to consider for pushing across the union block comprises:
determining that the number of joins in the plurality of joins is too great to propose a join plan for each of the possible alternatives of pushing one of the plurality of joins across the union block or not; and
in response, applying a set of heuristics to select fewer than all of the plurality of joins to consider for pushing across the union block.

US Pat. No. 10,372,708

STATISTIC NORMALIZATION IN A DATA STORE SYSTEM

Teradata US, Inc., San D...

1. A data store system comprising:an array of persistent storage devices configured to store a plurality of data store tables and a set of rules associated with a plurality of statistical categories, wherein each rule comprises a relationship between values of at least two statistical categories, wherein each statistical category defines a respective characteristic about the overall content of one or more columns of a data store table;
a processor in communication with the storage device, the processor configured to:
generate a statistical value for each statistical category on a data store table from the plurality of data store tables;
retrieve the set of rules;
evaluate the set of rules based on the statistical values;
in response to the determination that at least one rule of the set of rules is violated, adjust at least one statistical value;
store statistical values in at least one of the persistent storage devices;
receive a query on the data store table; and
use at least one of the statistical values to generate a response to the query.

US Pat. No. 10,229,175

HIGH-THROUGHPUT EXTRACT-TRANSFORM-LOAD (ETL) OF PROGRAM EVENTS FOR SUBSEQUENT ANALYSIS

Teradata US, Inc., Dayto...

1. A computing system that includes one or more physical processors configured to:load event data representative of Web server events associated with one or more events captured as a result of use of one or more Web pages supported by the one or more Web servers, wherein the event data is in a raw form not readily suitable for directly storing and processing by a distributed database system that includes multiple nodes operable to each independently store and process data for the database system;
transform the event data from the raw form into a database representation format of the event data for storage and processing by the database system; and
distribute the database representation format between the multiple nodes of the distributed database system, wherein the distributing of the database representation format of the event data comprises:
arranging at least a first portion of the database representation format of the event data for delivery to a first node of the multiple nodes;
arranging at least a second portion of the database representation format of the event data for delivery to a second node of the multiple nodes;
delivering the first portion of the database representation format of the event data to the first node of the multiple nodes;
delivering the second portion of the database representation format of the event data to the second node of the multiple nodes;
storing and processing of the first portion of the database representation format of the event data by the first node of the multiple nodes; and
storing and processing of the second portion of the database representation format of the event data by the second node of the multiple nodes.

US Pat. No. 10,678,794

SKEW DETECTION AND HANDLING IN A PARALLEL PROCESSING RELATIONAL DATABASE SYSTEM

Teradata US, Inc., San D...

1. A method for reducing spillover during a hash join for joining a small database table and a large database table in a parallel processing relational database system, said system comprising a plurality of Units of Parallelism (UoPs), said method comprising the steps of:evaluating, by a processor, multiple plan options for said hash join, wherein said multiple plan options include alternatives for distributing rows from said large database table across said plurality of UoPs, and wherein evaluating comprises for each one of said multiple plan options:
determining a highest number of said rows to be distributed to a UoP using a Poisson distribution of the number of unique hash values to the number of UoPs; and
determining a probability of spillover at said UoP from said highest number of rows;
selecting, by said processor, from said multiple plan options, a plan option having the lowest probability for spillover; and
executing, by said processor, said hash join in accordance with said selected plan option to distribute said rows to said plurality of UoPs.

US Pat. No. 10,452,658

CACHING METHODS AND A SYSTEM FOR ENTROPY-BASED CARDINALITY ESTIMATION

Teradata US, Inc., San D...

1. A method, comprising:(a) maintaining, in a cache, historical query result metadata;
(b) receiving, in the cache, a query condition on a column of a table;
(c) determining whether a selectivity value for the query condition exists in the cache; and
(d) returning the selectivity value and a total number of rows for the table when the selectivity value exists in cache otherwise returning an entropy-based estimated selectivity value for the query condition and an entropy-based estimated total number of rows in the table,
(e) receiving, in said cache, additional query result metadata, after the query condition is executed against the column of the table, the additional query result metadata being actual values obtained after the query condition is executed;
(f) determining whether to store the additional query result metadata, discard the additional query result metadata, or store some portion of the additional query result metadata in the cache; and
(g) using the additional query result metadata or the portion of the additional query result metadata and updating an entropy-based estimation procedure that produces the entropy-based estimated selectivity value and the entropy-based estimated total number of rows when the statistics or the portion of the statistics are stored in the cache.

US Pat. No. 10,372,690

DYNAMIC JOINING OF DATABASE TABLES

Teradata US, Inc., San D...

1. A method comprising:locating a hash code of skew values for each of a plurality of tables, each hash code of skew a values related to a skew value for a corresponding table of the plurality of tables,
selecting, by a computing device including a processor, a first table from the plurality of tables based on a located first hash code for the first table, the first table having a first skew value represented by the first hash code;
selecting, by the computing device, a second table from the plurality of tables based on a located second hash code for the second table, the second table having a second skew value represented by the second hash code, the second skew value being similar to the first skew value;
joining, by the computing device, the first table and the second table based on the first and second hash codes to create a temporary table, the temporary table having a temporary skew value;
determining skew statistics for the temporary table, wherein the skew statistics include a row count a number of distinct values, and hashes of high mode values and their corresponding frequency of columns of interest; and
storing, in a memory of the computing device, the temporary table, the temporary skew value, and the determined skew statistics.

US Pat. No. 10,289,632

DYNAMIC ARRAY TYPE IN A DATA STORE SYSTEM

Teradata US, Inc., Dayto...

1. A data store system comprising:a storage device configured to store a plurality of data tables;
a processor in communication with the storage device, the processor configured to:
receive a request to perform an operation that uses a column from a data table from the plurality of data tables, wherein each row of the column is configured to store a plurality of elements in an input array structure, wherein each element in the input array structure is independent from each other element in a common row of the column, wherein the input array structure is defined by an element type, a size, and a dimension, wherein the element type, the size, and the dimension are each user-configurable, wherein at least one input array structure of the column comprises a plurality of elements, and wherein a number of the plurality of elements defines both the size and the dimension of the at least one input array structure, wherein the size is defined by a number of columns of elements and the dimension is defined by a number of rows of elements, and wherein the at least one input array structure comprises a plurality of dimensions and the size is greater than one;
create an intermediate column based on the request, wherein each row of the intermediate column contains an array structure configured to store a plurality of elements, wherein each element is independent from each other element in a common row of the column, wherein the array structure has an element type, a size, and a dimension, wherein at least one of the element type, the size, and the dimension of the array structure is different than the element type, the size, and the dimension of the input array structure, wherein the size of the array structure is defined by a number of columns of elements and the dimension is defined by a number of rows of elements, and wherein at least one array structure of the intermediate column comprises a plurality of elements; and
generate, using the intermediate column, an output in response to the request.

US Pat. No. 10,282,449

MULTIPLE AGGREGATES IN A SINGLE USER-DEFINED FUNCTION

Teradata US, Inc., Dayto...

1. A data store system comprising:a persistent storage device configured to store a plurality of data tables;
a processor array in communication with the persistent storage device, the processor array configured to:
receive a query, wherein the query comprises a call to a user-defined function (UDF), wherein the UDF is configured to determine a plurality of aggregates for at least one data table from the plurality of data tables during a single execution of the UDF;
determine a number of the plurality of aggregates to be determined in the UDF;
perform a single read of a plurality of rows associated with the plurality aggregates from the at least one data table, wherein at least one row of the plurality of rows is commonly associated with more than one of the plurality of aggregates; and
execute the UDF using the plurality of rows to generate each aggregate of the plurality of aggregates.

US Pat. No. 10,740,307

SELF ORGANIZING LIST MACHINE FOR REORDERING ITEMS OF A LIST

Teradata US, Inc., San D...

1. A hardwired self-organizing list machine for reordering items of a self-organizing list, the hardwired self-organizing list machine comprising: an array of symbol index generators, wherein (i) each symbol index generator has a unique location in the array from zero to N?1 inclusive, (ii) N is the total number of unique symbol values in a symbol alphabet, (iii) each symbol index generator has a symbol input line that receives a symbol input value, and (iv) each symbol index generator provides an output that is multiplexed with outputs of other symbol index generators to provide an index value on a symbol index output line that is indicative of position of the symbol input value as an item in the self-organizing list.

US Pat. No. 10,740,329

OPTIMIZATION OF DATABASE QUERIES FOR DATABASE SYSTEMS AND ENVIRONMENTS

Teradata US, Inc., San D...

1. A method for optimizing execution of one or more database queries, wherein the method is implemented at least partly by a device, and wherein the method comprises:obtaining at least one set of equivalent logical structures in an optimization task structure for optimization of execution of one or more database queries of a database, wherein the optimization task structure is arranged a tree optimization task structure, wherein the one or more database queries are to be executed to obtain data stored in the database, wherein the set of equivalent logical structures include one or more logical operators, wherein the at least one set of equivalent logical structures is representative of multiple logical execution plans for the one or more database queries of the database, wherein each one of the logical structures represents a distinct one of the logical execution plans and includes one or more logical operators, and wherein at least one of the one or more logical operators is representative of multiple physical operators for the execution of the one or more database queries;
applying one or more rules to the set of equivalent logical structures in the tree optimization task structure to obtain another set of equivalent logical structures and at least one new logical operator in the tree optimization task structure;
repeating the applying of the one or more rules to the set of equivalent logical structures in the tree optimization task structure to the other obtained set of equivalent logical structures in the tree optimization task structure until no additional new logical operators can be obtained in the tree optimization task structure, thereby obtaining a total number of logical operators;
thereafter, determining a set of possible implementation plans for the total number of the obtained logical operators in the tree optimization task structure;
eliminating a number of possible implementation plans in the tree optimization task structure to obtain one or more plausible implementation plans in the tree optimization task structure respectively represented as one or more plausible structures in the tree optimization task structure;
for each one of the plausible implementation plans in the tree optimization task structure, propagating an optimization request of the one or more database queries through its plausible structure in the tree optimization task structure in a top-down manner, recursively for each child of physical operators, wherein only new contexts are optimized in order to generate an optimized structure, to generate an optimized structure that includes one or more physical operates for executing the one or more database queries; wherein a plurality of optimizer tasks are maintained in the tree optimization task structure for the scheduling such that at least one task schedules two or more other tasks as it children, recursively; and wherein the propagation of the optimization request of the one or more database queries starts with a Optimize Group Task (OGT) as a root of the tree structure of the tree optimization task structure and the single Optimize Group Task (OGT) has two or more children, and the single Optimize Group Task (OGT) schedules at least two or more of its children in the tree structure of the tree optimization task structure in a recursive manner to generate for optimization task structure, one or more Apply Rule Tasks (ART) nodes, one or more Generate implementation tasks (GIT) nodes and one or more Generate Plan Tasks nodes, and wherein during the propagating of the optimization request of the one or more database queries an instance of each one of the plurality of optimizer tasks optimizer tasks, maintained in the optimization task structure for the scheduling, has one of the following states: (i) Scheduled to run, (ii) running, (iii) waiting on a child, (iv) completed, and (v) pruned; and
selecting one of the optimized structures as an optimal physical plan for executing the one or more database queries of the database.

US Pat. No. 10,558,633

HASH-VALUE-BASED SINGLE-PASS DATA STORE STATISTICS COLLECTION

Teradata US, Inc., San D...

1. A data store system comprising:an array of persistent storage devices configured to store a plurality of data stare tables;
a processor in communication with the array of persistent storage devices, the processor configured to:
select a column of a data store table for statistics collection;
for each column value in the selected column, generate a hash value based on a hash function;
select a first domain of hash values and a second domain of hash values, wherein the second domain is a subset of the first domain;
determine a frequency value for each generated hash value within the first domain;
generate a unique identifier for each hash value that is within the second domain;
determine at least one statistic on the selected column based on the frequency values and the unique identifiers; and
store the at least one statistic for use in a query plan.

US Pat. No. 10,459,907

REASSIGNMENT OF DATA TO DIFFERENT CONFIGURATIONS OF PROCESSING UNITS IN DATABASE SYSTEMS

Teradata US, Inc., San D...

1. A computer-implemented method of reassigning data portions of a database from a first map to a second map for processing by multiple processing units of a database system configured to at least process data stored in the database, wherein the computer-implemented method is implemented by one or more physical processors configured to at least process data of the database stored in a non-transitory computer storage medium, and wherein the computer-implemented method comprises:obtaining data portions assigned to the first map in an initial order for reassignment to the second map wherein the first map assigns the data portions to a first configuration of processors for processing the data portions, and the second map assigns the data portions to a second configuration of processors, different than the first configuration, for processing the data portions;
determining, based on one or more relationships between the data portions in the initial order, multiple groups for reassignment from the first map to the second map, wherein each one of the multiple groups includes two or more of the data portions of the initial ordered data portions;
determining a cost of use for each one of the multiple groups for reassignment from the first map to the second map;
determining, based on the cost of the use of each one of the multiple groups, a second order of reassignment of the multiple groups from the first map to the second map; and
processing, by said second configuration of processors, said data portions in accordance with said second map.

US Pat. No. 10,372,730

TECHNIQUES FOR CROSS REFERENCING DATA

Teradata US, Inc., San D...

1. A method implemented in a computer-readable storage medium and executed on a processing device, the method comprising:interacting, via the processing device, with a user to identify a link between a first element of a first database table, a second element from a second database table, and a third element from a third database table, wherein interacting further includes interacting with the user via a Graphical User Interface (GUI) tool that includes user-guided fields to receive the link, the user-guided field represented as graphic shapes, inspecting, by said processing device, metadata associated with the link to identify the first element and the second element and their relationship to one another;
cross referencing, via the processing device, the first element, the second element, and the third element to a master element in a master table; and
assigning, via the processing device, a new attribute to the master element, the new attribute is just associated with the master element and is not associated with the first element, the second element, or the third element, the user directing that the new attribute not be associated with the first, second, and third elements and their respective tables, and assigning additional attributes to the master element, by the user through the GUI tool, the additional attributes including an effective start date and an effective end date, and permitting interaction by the user with the GUI tool to edit table attributes for the first element, the second element, and the third element through access to the master element within the GUI tool.

US Pat. No. 10,795,868

SUMMARIZING STATISTICAL DATA FOR DATABASE SYSTEMS AND/OR ENVIRONMENTS

Teradata US, Inc., San D...

1. A computer-implemented method of storing database values and their associated indicator values in a summarized form, wherein the method is implemented at least partly by a device that includes one or more processors, and wherein the computer-implemented method comprises:arranging, by the one or more processors, database values of a database in multiple buckets in accordance with an order in an arrangement in an ascending order, wherein each one of the database values in each one of the multiple buckets is associated with an indicator value, and wherein each one of the multiple buckets includes only one of the database values with its associated indicator value;
obtaining a desired total number of buckets;
determining, by the one or more processors, whether to reduce the number of buckets, by at least determining whether the desired total number of buckets has been reached;
combining, by, the one or more processors, two adjacent buckets in the arrangement into a combined bucket based on a criterion associated with the indicator values when the determining determines to reduce the number of buckets, wherein the criterion includes an error criterion determined based on a difference between two or more of the indicator values.
In response to determining hot database values that are not desired to be combined with one or more other database values of the database values, integrating at least one workload constraint into a combining strategy for combining the buckets, and adding a preliminary constant error value to a default delta-error associated with the one or more database values to avoid combining the one or more database values with one more other database values of the database values; and
repeating, by the one or more processors, the combining for yet another two adjacent buckets until the determining determines not to further reduce the number of buckets when it is determined that the desired total number of buckets has been reached, thereby reducing the number of buckets in accordance with the desired total number of buckets.

US Pat. No. 10,740,283

USING POINT-IN-TIME VIEWS IN A DATABASE

Teradata US, Inc., San D...

1. A database system comprising:one or more processing units supported by one or more processors; and
one or more database tables of data stored on one or more storage facilities and managed by the one or more processing units, where at least one of the database tables includes:
a row that at least stores data representing an event;
a first column of the row that at least stores information indicating when the event occurred;
a second column of the row that stores information indicating-when the data of the row representing the event was loaded into the database; and
a third column of the row that stores information indicating when data that is related to and more current than the data representing the event was stored in the database: and
wherein the database system is operable to:
receive an electronic request for data representing events that occurred at or before a selected point-in-time; and
access the information stored in the columns that indicate when events occurred and when the corresponding data was loaded into the table.

US Pat. No. 10,740,330

MULTI-PLATFORM OPTIMIZATION

Teradata US, Inc., San D...

1. A computer-implemented method of optimizing execution of one or more database queries on multiple execution platforms with one or more different characteristics and/or restrictions, wherein the computer-implemented method is implemented at least partly by one or more processors and memory configured to be accessed by the one or more processors, and wherein the computer-implemented method comprises:storing in the memory a set of equivalent logical structures representative of multiple logical execution plans and contextual information associated with the multiple execution platforms;
processing by the one or more processors, in a top-down manner, the stored set of equivalent logical structures representative of multiple logical execution plans configured to optimize execution of the one or more database queries, based on the stored contextual information, to obtain an optimal execution plan for the execution of the one or more database queries on the multiple platforms, wherein the set of equivalent logical structures is representative of multiple execution plans for execution of the database query on the multiple execution platforms, wherein each one of the logical structures is representative of an execution plan for execution of the one or more database queries and includes one or more database logical operators, and wherein at least one of the logical operators is representative of multiple physical database operators for the execution of the database query in at least one of the multiple platforms, and wherein a plurality of optimizer tasks are maintained in an optimization task structure for scheduling such that at least one task schedules one or more other tasks as its children, recursively; and wherein during propagation of an optimization request of the database query an instance of each one of the plurality of optimizer tasks optimizer tasks, maintained in the optimization task structure for the scheduling, has one of the following states: (i) scheduled to run, (ii) running, (iii) waiting on a child, (iv) completed, and (v) pruned; and
optimizing the execution of the one or more database queries on the multiple execution platforms based on the top-down processing of the set of equivalent logical structures and a multi-platform cost model that at least takes into account the respective cost of execution of set of equivalent logical structures in each one of the multiple execution platforms, thereby obtaining based on the top-down processing of the set of equivalent logical structures and the multi-platform cost model, the optimal execution plan for the execution of the one or more database queries that identifies at least a selected one of the multiple platforms as an optimal platform for execution of the optimal execution plan.

US Pat. No. 10,261,888

EMULATING AN ENVIRONMENT OF A TARGET DATABASE SYSTEM

Teradata US, Inc., San D...

1. A method comprising:receiving, in a test system having one or more processors, environment information of a target database system, wherein the environment information includes information relating to hardware and software components of the target database system, definitions of workloads in the target database system, and settings of a scheduler in the target database system;
emulating, in the test system, an environment of the target database system using the received environment information;
executing database software in the emulated environment in the test system;
using the definitions of the workloads of the target system to perform workload management in the emulated environment in the test system; and
using the settings of the scheduler of the target system to perform scheduling of tasks of database management software in the emulated environment in the test system.

US Pat. No. 11,113,283

COST-BASED OPTIMIZATIONS FOR JOIN QUERIES WITH UNION ALL VIEWS AND DERIVED TABLES

Teradata US, Inc., San D...


1. A method, comprising:identifying a query with a Union All (UA) operation;
obtaining cost-based processing statistics for branches of the UA operation, wherein the obtaining further includes identifying each of the branches of the UA operation as independent join processing steps, each of the independent join processing steps comprising a unique table view being joined with outer tables in the query;
generating permutations of joins that satisfy each of the independent join processing steps and assigning a total cost to each of the permutations of joins using the cost-based processing statistics;
providing a select one of the permutations of joins that satisfy each of the independent join processing steps having a least total cost as an optimal query execution plan to a database engine for executing the optimal query execution plan against a database; and
outputting results from the optimal query execution plan from the select one of the permutations of joins that satisfy each of the join processing steps to a common spool.

US Pat. No. 11,061,932

METHODS AND SYSTEM FOR MANAGING STORAGE WITH MULTIPLE SIMULTANEOUS DATA TEMPERATURE MODELS

Teradata US, Inc., San D...


1. A method, comprising:maintaining a mapping between storage management features and dimensions that are associated with locations of data temperatures for data storage housed on storage allocation units;
assigning a unique one of the locations to each of a plurality of data temperature generators based on the mapping and instructing each data temperature generator to store calculated data temperatures in a corresponding location within a temperature storage;
receiving a storage allocation unit identifier and a selected storage management feature;
obtaining a select dimension by accessing the mapping with the selected storage management feature;
acquiring a current data temperature for the data storage by accessing the temperature storage using the storage allocation unit identifier and the select dimension; and
providing the current data temperature to at least one storage management process for managing the data storage based on the current data temperature.

US Pat. No. 11,061,964

TECHNIQUES FOR PROCESSING RELATIONAL DATA WITH A USER-DEFINED FUNCTION (UDF)

Teradata US, Inc., San D...


1. A method implemented and programmed within a relational database system and processed by one or more processors, the processors configured to execute the method, comprising:acquiring a data model and input data from said relational database system, the input data housed in a relational database maintained within said relational database system, said data model defining format, attributes, and characteristics of said input data;
normalizing the input data by combining at least some fields associated with the input data into a single field in the normalized input data and by altering a size and a type of at least some other fields associated with the input data in the normalized input data;
initiating a user defined function (UDF) to perform custom-user defined calculations using the normalized data;
mapping output data produced from the UDF into a normalized output format;
generating an updated data model based on the mapped output data in the normalized output format; and
replacing said data model within said relational database system with said updated data model.

US Pat. No. 11,061,965

STORED PROCEDURE EXECUTION IN A DISTRIBUTED DATABASE SYSTEM

Teradata US, Inc., San D...


1. A method comprising:receiving, with a processor, a stored procedure associated with data stored in a plurality of data stores, wherein each of the plurality of data stores exclusively stores a respective copy of the data, wherein the stored procedure comprises a plurality of executable statements configured to be executed on a portion of the data, and wherein the processor is configured to distribute the plurality of executable statements to at least one of a plurality of other processors, wherein none of the plurality of other processors are directly linked to one another;
identifying, with the processor, a first executable statement of the plurality of executable statements to be executed by the processor and a second executable statement of the plurality of executable statements that is executable by at least one of the plurality of other processors, wherein each of the other processors have exclusive access to a respective one of the copies of the data; and
executing, with the processor, the first executable statement, wherein execution of the first executable statement results in at least one of other executable statements of the plurality of executable statements being applied to less than the portion of the data and elimination of at least one of the other executable statements from execution.

US Pat. No. 11,023,437

DATA STORAGE MANAGEMENT BASED ON INDICATED STORAGE LEVELS AND OTHER CRITERIA FOR MULTI-LEVEL STORAGE SYSTEMS

Teradata US, Inc., San D...

1. A method, implemented at least partly by a device, for managing storage of data in multiple storages of a multi-storage system, wherein the multiple storages are respectively associated with multiple storage levels associated with different types of storages that are designated ranks in accordance with one or more storage criteria, and wherein each one of the storage levels is associated with one or more storages of the same type in the multiple storage system, and wherein the method comprises:assigning one or more storage rating values for the at least one data object to be stored in the multi-storage system;
obtaining at least one indication indicative of at least one storage level of the data object to be stored in the multi-storage system, wherein the at least one storage level is identified for storing the at least one data object in the multi-storage system, wherein the indication is provided as a database command or request for storing the at least one data object by a database system that stores data in the multiple storages of a multi-storage system;
determining based on the assigned one or more storage rating values for the at least one object and the designated ranking of the at least one storage level as indicated by the at least one indication, whether to allow the at least one data object to be stored in at least one storage of the at least one storage level as indicated by the at least one indication; and
allowing the at least one data object to be stored in the at least one storage level indicated by the at least one indication when the determining determines to allow the at least one data object to be stored in at least one storage of the at least one storage level.

US Pat. No. 11,023,443

COLLABORATIVE PLANNING FOR ACCELERATING ANALYTIC QUERIES

Teradata US, Inc., San D...

1. In a distributed database system employing table operators for performing analytic operations for storing and processing multi-structured data, the method comprising:receiving by said database system a query;
determining through use of a database system optimizer an optimal query plan for execution of said query,
said optimizer performing a negotiation with a table operator to determine said optimal query plan, wherein said table operator comprises a SQL-Map Reduce function, and said negotiation comprising an exchange of information relevant to optimizing said query and the execution of said SQL-MR function; said exchange of information including a first exchange of input and output schema information, and multiple communications between said optimizer and said table operator to exchange additional input and output information relevant to optimizing execution of said query and table operator; and
executing said query in accordance with said optimal query plan.

US Pat. No. 11,023,460

TRANSPARENT USER-DEFINED FUNCTION (UDF) OPTIMIZATION

Teradata US, Inc., San D...

1. A method, comprising:identifying a source code for a User-Defined Function (UDF) being created by a user in a Data Definition Language (DDL) statement;
generating a new source code for the UDF;
creating a wrapper source code representing an instance of the new source code that selectively calls the UDF; and
processing an executable version of the instance when the UDF is called in a query, further including rewriting the query to call the instance instead of the UDF and replacing a GROUP BY clause in the query with a PARTITION BY clause.

US Pat. No. 11,023,469

VALUE LIST COMPRESSION (VLC) AWARE QUALIFICATION

Teradata US, Inc., San D...

1. A method, comprising:identifying a predicate of a query against a table that includes compressed data values and
identifying the table as using Value List Compression for the compressed data values;
obtaining a dictionary having actual values for the compressed data values, each of the actual values including an index to corresponding entries within the table having the compressed data values;
evaluating the predicate of the query against the actual values in the dictionary and establishing a bitmap that identifies the actual values in the dictionary that are qualified and unqualified,
wherein columns associated with the query that are unnecessary for evaluating the predicate of the query remain compressed;
identifying one or more of the entries within the table by processing the bitmap and the index to the corresponding entries within the table for the actual values that are qualified; and
processing the query and returning the one or more of the entries as results for the query including the actual values and the compressed data values in a decompressed format.

US Pat. No. 10,977,251

JOIN INDEX BITMAP FOR NON-EQUALITY QUERY CONDITIONS

Teradata US, Inc., San D...

1. A data store system comprising:an array of persistent storage devices configured to store a plurality of data store tables;
a processor in communication with the array of persistent storage devices, the processor configured to;
receive a query containing a non-equality join condition on a first column, from a first data store table and a second column on a second data store fable; and
generate a bitmap based on the non-equality join condition, wherein the bitmap indicates respective matches match or non-match between the first column and second column in accordance with the non-equality join condition, wherein each bit represents a result of the non-equality join condition applied to the first column and the second column;
compress each column of the bitmap to generate a compressed bit string, wherein, to compress each column of the bitmap, the processor is further configured to:
select each column of the bitmap;
segment bits in each selected column of the bitmap into segments of a predetermined size;
determine of content of each segment;
compare each segment to a next segment;
in response to content of a segment being different than content of the next segment compress the segment separately from the next segment; and
in response to determination, of two or more contiguous segments contain same content, compress the two or more contiguous segments together;
generate at least one data structure, wherein the at least one data structure comprises a row identifier of the first column associated with bit string and the compressed bit string; and
store said each compressed column of the bitmap, wherein the stored compressed column of the bitmap is used when the non-equality join condition is present in another received query.

US Pat. No. 10,970,295

COLLECTING STATISTICS IN UNCONVENTIONAL DATABASE ENVIRONMENTS

Teradata US, Inc., San D...

1. A method for generating and executing queries in a distributed query processing system, the method comprising:receiving a query for execution by said distributed query processing system;
generating by a query optimizer a query plan as an execution plan for said execution of said query by said distributed query processing system;
selecting and instrumenting said query plan to collect statistics for one or more signatures;
executing by said distributed query processing system said received query in accordance with said generated query plan;
collecting statistics corresponding to said query plan said statistics including optimizer usage metadata corresponding to said query plan and said prior executed query plans;
storing said collected statistics in said a repository of statistics related to prior executed query plans executed by said distributed query processing system;
enhancing statistics related to data stored for said one or more signatures to maintain the following metadata and counts: (i) a number of optimizer usages that required only query collected statistics, and (ii) a number of optimizer usages that would have used detailed histograms had they been available along with the set of expressions or columns whose value distribution were needed;
mining said metadata and generating a collection of histogram statistics and storing said histogram statistics in said repository;
wherein, in generating said query plan, said query optimizer searches said statistics repository for statistics useful to the generation of said query plan, including said optimizer usage metadata corresponding to said query plan and said prior executed query plans, and based on said searching of said statistics repository, selects statistics from said repository for use in said generating of said query plan.

US Pat. No. 10,963,448

NON-RESPONSIVE NODE ACTIVITY AVOIDANCE

Teradata US, Inc., San D...

1. A method of operating a data store system comprising:identifying a non-responsive processing node from a plurality of processing nodes;
generating a new registration key in response to identifying the non-responsive processing node; and
providing the new registration key to the other processing nodes of the plurality of processing nodes excluding the identified non-responsive node, wherein each processing node provided the new registration key is authorized to access a plurality of storage devices of a storage array in communication with the plurality of processing nodes.

US Pat. No. 10,649,874

LONG-DURATION TIME SERIES OPERATIONAL ANALYTICS

Teradata US, Inc., San D...

1. A method comprising:transforming time series data into operationally meaningful categories which results in multiple categorical time series, the transforming including transforming of event data into time series data;
detecting temporal patterns in the categorical time series data;
recording detected temporal patterns as discrete time events for subsequent analysis;
applying categorical time series analysis to the previously generated time series to calculate frequencies of occurrence of categorical values and patterns over time;
deriving measures of association among categorical variates;
calculating additional analytics from the derived measures of association among the categorical variates;
transforming mixed numerical and categorical measurements of the time series data into exclusively categorical measurements; and
mapping the time series data to a common time series structure.

US Pat. No. 11,086,870

MULTI-TABLE AGGREGATION THROUGH PARTIAL-GROUP-BY PROCESSING

Teradata US, Inc., San D...


1. A data store system comprising:an array of persistent storage devices configured to store a plurality of data store tables;
a processor in communication with the storage device, the processor configured to: receive a query comprising an aggregate function;
identify structure of an argument of the aggregate function, wherein a subset of data store tables is associated with the argument, and wherein the subset comprises more than one data store table;
partially-execute the aggregate function on each data store table in the subset involved in the argument of the aggregate function to create partially-executed results for each data store table of the subset of data store tables, wherein the partial execution comprises performance of an operation of the aggregate function on the subset of data store tables separately from one another;
join the results of the partial execution based on join conditions contained in the aggregate function;
complete execution of the aggregate function on the results to generate a final result of the aggregate function as at least a portion of execution of the query.

US Pat. No. 10,997,175

METHOD FOR PREDICATE EVALUATION IN RELATIONAL DATABASE SYSTEMS

Teradata US, Inc., San D...

1. A method for performing predicate evaluation in a relational database system, the method comprising the steps:receiving, by a processor, a row-related query;
generating, by said processor, a request to retrieve qualified rows from a database table, said qualified rows comprising rows relevant to said row-related query;
in response to said request, evaluating a set of conditions on multiple rows in said database table simultaneously and generating a results ROWID vector including ROWID values and results values for said evaluation;
building a set of qualified rows from said database table using said ROWID values and results values from said results ROWID vector; and
providing said set of qualified rows to said processor for subsequent processing of said query.

US Pat. No. 10,942,923

DEEP LEARNING FOR OPTIMIZER CARDINALITY ESTIMATION

Teradata US, Inc., San D...

1. A method of estimating parameters of a result of applying a predicate to a single database table, the method comprising:receiving, with a processor, a database query to be run against a database,
the query comprising a query predicate,
the query predicate comprising a condition, the condition applying to a single database table;
parsing the condition to create an input vector;
submitting the input vector to a neural network, wherein the neural network is trained to determine the selectivity, a number of unique values (NUV) of results of applying of predicates to the single database table, and a high mode frequency (HMF) of results of applying of predicates to the single database table;
determining, with the neural network, estimates of:
the selectivity of the query predicate,
an NUV for each column in a result of applying the query predicate to the single database table, and
an HMF for each column in the result of applying the query predicate to the single database table;
wherein each input vector comprises a lower bound for a column of the single database table, the lower bound being determined from the query predicate, and an upper bound for the column of the single database table, the upper bound being determined from the query predicate; and
wherein the query predicate does not restrict one or both of the lower bound or the upper bound for the column and the unrestricted lower bound or the unrestricted upper bound in the input vector is set to a minimum value or a maximum value, respectively, of the column.

US Pat. No. 10,860,581

APPARATUS AND METHOD OF FACILITATING A LOCAL DATABASE SYSTEM TO EXECUTE A QUERY FUNCTION AT A FOREIGN DATABASE SYSTEM

Teradata US, Inc., San D...

1. An apparatus for facilitating a local database system to execute a query function at a foreign database system, the apparatus comprising:a processor including a plurality of Access Module Processors (AMPs) of the local database system; and
a storage device communicatively coupled with the processor, wherein the processor is programmed to
(i) receive a query request;
(ii) retrieve query data associated with the query request;
(iii) determine if the query request can be processed at the local database system;
(iv) if the query request is unable to be processed at the local database system, use one of the plurality of AMPs as a single control processor to connect to the foreign database system;
(v) after the local database system is connected to the foreign database system, use the single control processor to invoke an export table operator to export the retrieved query data in parallel on all of the AMPs from the local database system to the foreign database system to allow the foreign database system to process the retrieved query data;
(vi) after the retrieved query data has been exported from the local database system to the foreign database system, release all AMPs but the one of the plurality of AMPs being used as the single control processor;
(vii) after all AMPs but the one of the plurality of AMPs being used as the single control processor have been released, use the single control processor to send the query request from the local database system to the foreign database system to allow the foreign database system to process the query request using the retrieved query data;
(viii) after the foreign database system has processed the query request using the query data, import a result dataset from the foreign database system; and
(ix) receive a signal from the foreign database system indicating that the foreign database system completed processing the query request using the retrieved query data to notify a dispatcher to perform a parallel import of the result dataset from the foreign database system.

US Pat. No. 10,810,188

LOAD COMMITTED ISOLATION PROCESSING

Teradata US, Inc., San D...

1. A method, comprising:identifying a begin load isolation statement in instructions for a table;
setting the table to an isolated load state;
with the table in the isolated load state, processing operations defined in the instructions against the table creating new uncommitted versions of rows in the table while maintaining previously committed old versions of the rows; and
when an end load isolation statement is encountered within the instructions, committing the new uncommitted versions of the rows to the table and transitioning the table out of the isolated load state;
wherein the processing further includes committing the table for loading upon detection of a checkpoint isolated loading statement in the instructions and immediately placing the table back into the isolated load state until the end load isolation statement is encountered.

US Pat. No. 11,115,212

MULTI-PROCESSING NODE CONNECTION IN A DATA STORE SYSTEM VIA ENCRYPTED PASSWORD

Teradata US, Inc., San D...


1. A system comprising:a server comprising at least one storage device and at least one processor, wherein the server is configured to execute an application and the storage device is configured to store an encrypted password;
a data store system independent from the server, wherein the data store system comprises:at least one persistent storage device configured to store a data store;
a plurality of processing nodes configured to operate on the data store, wherein the data store is configured to:
receive the encrypted password from the application with one of the plurality of processing nodes;
decrypt the encrypted password with the one of the plurality of processing nodes;
authenticate the decrypted password with the one of the processing nodes; and
provide, with the one of the processing nodes, the decrypted password to other processing nodes, wherein each processing node that has the decrypted password is accessible to the application to operate on the data store.


US Pat. No. 11,113,287

DATA STREAM MANAGEMENT SYSTEM

Teradata US, Inc., San D...


1. A system comprising:at least one processor configured to:
receive data from a plurality of independent data sources, wherein the data from each respective data source is received at a rate determined by the respective data source;
buffer the received data in a buffer, wherein received data from different independent data sources is collectively buffered in the buffer, wherein the buffer is configured into a plurality of partitions, and wherein each partition is configured to concurrently buffer received data from different independent data sources together; and
write the buffered received data to at least one data store at a rate independent of the respective rates at which data from the plurality of independent data sources is received, wherein the at least one data store comprises an independent data store management system.

US Pat. No. 11,086,903

METHODS AND SYSTEM FOR OPTIMAL MULTI-ENVIRONMENT DATA SYNCHRONIZATION/REPLICATION

Teradata US, Inc., San D...


1. A method, comprising:receiving a data-changing request from a first data system;
identifying a source data system based on the data-changing request;
providing the data-changing request to the source data system for processing over an in-band connection to the source data system;
obtaining status information for the providing from the source data system over a source-data-system out-of-band connection with the source data system;
selecting a synchronization process from multiple synchronization processes based on the data-changing request and the status information; and
instructing target data systems to process the synchronization process over target-data-system in-band connections to ensure data changes made to data source objects by the source data system when processing the data-changing request are synchronized and replicated on the target data systems using the synchronization process.

US Pat. No. 10,997,168

MANAGEMENT OF SOFT CORRELATION FOR DATABASES AND OPTIMIZATION OF DATABASE QUERIES

Teradata US, Inc., San D...

4. A computer-implemented method of optimizing execution of one or more database queries of a database system, wherein the database system includes one or more processors operable to access data stored in data records in a database by processing the one or more database queries, and wherein the computer-implemented method comprises:obtaining, by the one or more processors of the database system, source and destination database attribute-pairs associated with a soft correlations between source and destination database attribute-pairs of the database system, wherein the source and destination database attribute-pairs are determined based on a mapping expression between the source and destination database attribute-pairs;
(a) determining a type for the soft correlation associated with the obtained source and destination database attribute-pairs, wherein the type of the soft correlation includes: (i) a single-to-range type of soft correlation, (ii) a single-to-list type of soft correlation, and (iii) a single-to-single type of a soft correlation;
(b) determining whether the obtained source and destination database attribute-pairs of the soft correlation correspond to a single-to-range type of soft correlation, wherein the single-to-range type of soft correlation maps a single source database attribute to a range of acceptable destination database attributes indicative of a range between a beginning and an end of range attribute;
(c) determining, for each one of the database sources of one or more data records of the database, whether the corresponding destination attribute is outside of the range of the soft correlation when the determining (b) determines that the source and destination database attribute-pairs of the soft correlation correspond to a single-to-range type of soft correlation;
(d) determining an extent of violations of the range of the soft correlation for each one of the destination attribute that is determined (c) to be outside of the range for the soft correlation;
(e) determining based on the extent of the violations of the range whether to modify the range for the soft correlation; and
modifying the range for the soft correlation to obtain a modified range for the soft correlation to obtain a modified single-to-range soft correlation when the determining (e) determines to modify the range for the soft correlation; and
storing the modified range for the soft correlation with the modified range for optimizing the execution of one or database queries when the determining (e) determines to modify the range for the soft correlation.

US Pat. No. 10,891,290

QUERY PLAN SEARCHING AND OPTIMIZATION

Teradata US, Inc., San D...

1. A method, comprising:identifying a search space for a query, the search space including possible query execution plans for executing the query;
subdividing the possible execution plans in the search space among sub search spaces;
using resources to perform a search to obtain plan costs for the query execution plans;
maintaining a resource cost as the search is performed, wherein the resource cost is associated with the cost of using the resources to perform the search so far and the cost of continuing to utilize the resources to complete the search;
normalizing the resource cost into a same unit of measure as that which is associated with the plan costs; and
selecting an optimal execution plan from the query execution plans for which plan costs have been obtained when the resource cost reaches a threshold.

US Pat. No. 10,841,405

DATA COMPRESSION OF TABLE ROWS

Teradata US, Inc., San D...

1. A system comprising:a storage device configured to store a plurality of data tables;
a processor in communication with the storage device, the processor configured to:
receive a request to transmit a data table from the plurality of data tables, wherein the data table has a plurality of rows;
determine if contents of each column row of each row of the data table are eligible to be compressed, wherein both NULL and non-NULL values are eligible for compression;
for each column row determined to contain eligible contents:
generate compressed data representative of the contents of a respective column row; and
remove the contents of the respective column row from an associated row; and
generate a key indicative of a compression scheme used to compress contents of column rows of the data table, wherein the key is configured to indicate a compressed NULL value in response to the determination that the eligible contents contain a NULL value and to indicate a compressed non-NULL value in response to the determination that the eligible contents contain a non-NULL value; and
transmit the compressed data, the key, and the data table without content of the column rows represented by the compressed data.

US Pat. No. 10,803,066

METHODS AND SYSTEMS FOR HARDWARE ACCELERATION OF DATABASE OPERATIONS AND QUERIES FOR A VERSIONED DATABASE BASED ON MULTIPLE HARDWARE ACCELERATORS

Teradata US, Inc., San D...

1. A computer-implemented method for hardware-based snapshot versioning of a database, said method comprising:determining, by one or more processors of a computer, snapshots of data in the database at intervals;
determining, by the one or more processors of the computer, what data of the database is valid for each of the determined snapshots by using multiple validity bitmaps respectively representative of the snapshots, wherein each one of the multiple validity bitmaps includes a plurality of bits, and wherein each bit of the plurality of bits in each one the multiple validity bitmaps corresponds to a row of data of a data table of the database;
identifying, by the one or more processors of the computer, differences in the data of the snapshots based on comparing the multiple validity bitmaps with each other;
determining, by the one or more processors of the computer, based on the identified differences of the multiple validity bitmaps, a set of snapshot bitmap vectors that takes data of one snapshot to the data of another snapshot of the snapshots;
querying, by the one or more processors of the computer, for data of the database during loading of other data based on multi-version concurrency control;
determining, by the one or more processors of the computer, timestamps for the snapshots of data by using the set of snapshot bitmap vectors;
forming, by the one or more processors of the computer, a query plan for a database query of the database based on version filtering using the set of snapshot bitmap vectors; and
executing the formed query plan for the database query by one or more query processing modules using one or more database machine code (MOP) executed in hardware to perform one or more particular tasks of the database query.

US Pat. No. 10,776,229

DEDICATED FALLBACK PROCESSING FOR A DISTRIBUTED DATA WAREHOUSE

Teradata US, Inc., San D...

1. A method for dedicated fallback processing within a distributed data warehouse, said distributed data warehouse including a plurality of processing units arranged in a plurality of clusters, said method comprising:configuring first, second, and third processing units within a single cluster;
configuring the first processing unit within the single cluster to process as a first dedicated fallback processing unit for the second processing unit of the single cluster;
configuring the second processing unit as a second dedicated fallback processing unit for the third processing unit of the single cluster; and
configuring the third processing unit as a third dedicated fallback processing unit for the first processing unit.

US Pat. No. 9,471,711

SCHEMA-LESS ACCESS TO STORED DATA

Teradata US, Inc., Dayto...

1. A computer implemented method, comprising:
storing a partially-structured data in a data management system using at least one key-value pair;
processing, using the data management system, a query of data, wherein the query is generated using a structured language;
generating an interface containing a plurality of columns of data, wherein each column in the plurality of columns corresponds
to a key in a plurality of stored key-value pairs; and

generating, using the generated interface, the query of data using the structured language;
wherein the generated query refers to at least one column in the generated interface;
wherein the plurality of columns includes a physical column stored in the data management system and a virtual column stored
in an overflow column in the data management system, the overflow column contains at least one key-value pair having a key
that is not associated with the physical column stored in the data management system; and

wherein at least one of the storing, the processing, the generating an interface, and the generating the query of data is
performed using at least one processor of at least one computing system.

US Pat. No. 9,471,444

MANAGEMENT OF A DISTRIBUTED COMPUTING SYSTEM THROUGH REPLICATION OF WRITE AHEAD LOGS

Teradata US, Inc., Dayto...

1. A method comprising:
persisting a state of a distributed system through a Write Ahead Log (WAL) interface;
maintaining a set of replicas of a Write Ahead Log (WAL) through a consensus protocol;
providing a set of mechanisms for at least one of a detection and a recovery from a hardware failure;
recovering a persistent state of a set of applications;
maintaining the persistent state across a set of nodes through the hardware failover;
running an instance of a WAL replication servlet on the set of nodes;
storing an on-disk state of an application in the WAL;
managing a set of WALs through the WAL replication servlet; and
authorizing a designated node to host a Master of the WAL replication servlet, wherein the Master of the WAL replication servlet
is responsible for at least one of a managing of a global state, a managing of a lease and a suggesting of an election.