US20130018919A1 - Speculative Switch Database - Google Patents
Speculative Switch Database Download PDFInfo
- Publication number
- US20130018919A1 US20130018919A1 US13/181,416 US201113181416A US2013018919A1 US 20130018919 A1 US20130018919 A1 US 20130018919A1 US 201113181416 A US201113181416 A US 201113181416A US 2013018919 A1 US2013018919 A1 US 2013018919A1
- Authority
- US
- United States
- Prior art keywords
- database
- identifier
- connection
- query
- backend
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24549—Run-time optimisation
Definitions
- the present disclosure generally relates to databases and, more particularly to switching databases.
- Computer users are able to access and share vast amounts of information through various local and wide area computer networks including proprietary networks as well as public networks such as the Internet.
- a web browser installed on a user's computing device facilitates access to and interaction with information located at various network servers identified by, for example, associated uniform resource locators (URLs).
- URLs uniform resource locators
- Conventional approaches to enable sharing of user-generated content include various information sharing technologies or platforms such as social networking websites. Such websites may include, be linked with, or provide a platform for applications enabling users to view web pages created or customized by other users where visibility and interaction with such pages by other users is governed by some characteristic set of rules.
- relational databases are a collection of relations (frequently referred to as tables). Relational databases use a set of mathematical terms, which may use Structured Query Language (SQL) database terminology.
- SQL Structured Query Language
- a relation may be defined as a set of tuples that have the same attributes.
- a tuple usually represents an object and information about that object.
- a relation is usually described as a table, which is organized into rows and columns. Generally, all the data referenced by an attribute are in the same domain and conform to the same constraints.
- the relational model specifies that the tuples of a relation have no specific order and that the tuples, in turn, impose no order on the attributes.
- Applications access data by specifying queries, which use operations to identify tuples, identify attributes, and to combine relations. Relations can be modified and new tuples can supply explicit values or be derived from a query. Similarly, queries identify may tuples for updating or deleting. It is necessary for each tuple of a relation to be uniquely identifiable by some combination (one or more) of its attribute values. This combination is referred to as the primary key. In a relational database, all data are stored and accessed via relations. Relations that store data are typically implemented with or referred to as tables.
- Relational databases as implemented in relational database management systems, have become a predominant choice for the storage of information in databases used for, for example, financial records, manufacturing and logistical information, personnel data, and other applications. As computer power has increased, the inefficiencies of relational databases, which made them impractical in earlier times, have been outweighed by their ease of use for conventional applications.
- the three leading open source implementations are MySQL, PostgreSQL, and SQLite.
- MySQL is a relational database management system (RDBMS) that runs as a server providing multi-user access to a number of databases.
- RDBMS relational database management system
- M in the acronym of the popular LAMP software stack refers to MySQL. Its popularity for use with web applications is closely tied to the popularity of PHP (the “P” in LAMP).
- Several high-traffic web sites use MySQL for data storage and logging of user data.
- Using databases involves a series of messages that enable a database user to interact with a database.
- a database transaction may involve messaging associated with setting up connections to a database, authentication, querying the database, switching databases, committing transactions to the database, and terminating connections with the database.
- processing switch database operations may include receiving a database selection message from a database client, transmitting an unconditional acknowledgement to the database client in response to the database selection message, accessing a database query from a queue of queries from the a database client where the database query includes a user identifier and a database identifier, determining whether a matching backend database connection exists, and if a matching backend database connection exists, forwarding the database query to the matching backend database connection.
- a matching backend database connection may be a backend database connection having a user identifier equivalent to the user identifier of the database query, and a database identifier that is equivalent to the database identifier the database query.
- FIG. 1A illustrates example devices involved in a database transaction.
- FIG. 1B illustrates an example database environment.
- FIG. 2 illustrates a messaging sequence of an example embodiment.
- FIG. 3 illustrates a flowchart of an example embodiment.
- FIG. 4 illustrates an example computer system.
- FIG. 1A illustrates a system 100 of example components involved in a database transaction.
- system 100 includes database clients 102 , a database proxy module 104 , and database servers 106 .
- these components interoperate to facilitate database transactions between database clients 102 and a database server 106 .
- database clients 102 may transmit and receive messages from database server 106 using database proxy module 104 , and thereby access, retrieve, and store information in a database residing on database server 106 .
- the database proxy module 104 may facilitate and assist in the processing of database transactions between database clients 102 and database servers 106 .
- database proxy module 104 is operable speculatively switch databases in a manner that conserves resources.
- FIG. 1B illustrates a system 101 of an example database environment in which embodiments of the present disclosure may operate.
- system 101 may speculatively switch databases using idle backend database connections to expedite database transactions.
- switching a database refers to the operation of altering the state and parameters associated with an existing database connection corresponding to a particular user and database.
- database proxy module 104 may have a number of idle backend connections to various databases residing on database server 106 .
- database proxy module 104 capitalizes on its knowledge of these backend connections to reuse them, as appropriate, to satisfy requests to select a database for the same or different user.
- a database connection is associated with a database identifier and a user identifier.
- a database identifier may uniquely identify a particular database on database server 106 .
- a user identifier specifies a particular database client 102 . In some embodiments, these parameters are included a use database message and/or a database query received from a database client 102 .
- the illustrated system 101 facilitates speculative switching of databases in a manner that is efficient and avoids the processing and transactional overhead associated with communicating switch messages to database server 106 , including switch user and/or switch database messages.
- Database clients 102 represent computer systems including appropriate hardware, control logic, and data that may be used to interface with other system components, such as database proxy module 104 or database servers 106 , using network 108 .
- database clients 102 may represent web servers, mainframe computers, workstations, laptops, netbooks, tablet computers, personal data assistants, (PDAs), mobile phones, mainframes, and any other suitable computing device capable of interacting with a database using appropriate messaging and/or database transactions.
- Database clients 102 may support a wide array of operations, including but not limited to, web browsing, word processing, querying databases, and processing results retrieved from databases. According to particular embodiments, database clients 102 may provide access, potentially through web-based interfaces, to information managed by other elements such as database proxy module 104 and database servers 106 .
- database clients 102 may include a graphical user interface 110 .
- Graphical user interface 110 represents any appropriate interface for receiving and displaying information to a user of system 100 .
- Graphical user interface 110 may be any appropriate combination of hardware and/or software to facilitate a user's interaction with database clients 102 .
- database clients 102 are web servers that issue a series of database requests in order to deliver web pages to requesting network users. For example, a social networking user may request that a web server deliver a web page associated with another social networking user. In such an example, the web server may issue a number of database queries to populate the requested web page with relevant information.
- the database queries issued by database clients 102 to database servers 106 may request the use of a database having the same user and/or database of an existing idle backend database connection between database proxy module 104 and database server 106 .
- those database queries may be processed efficiently by speculatively switching databases according to embodiments of the present disclosure.
- Network 108 represents any suitable communications network operable to facilitate communication between the components of system 101 , such as database clients 102 , database servers 106 , and database proxy module 104 .
- Network 108 may include any interconnecting system capable of transmitting audio/video signals, data, messages or any other combination of the preceding.
- Network 108 may include all or a portion of a public switched telephone network (PSTN), a public or private data network, a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a local, regional, or global communication or computer network, such as the Internet, a wireline or wireless network, an enterprise intranet, or any other suitable communication link, including combinations thereof, operable to facilitate communication between components of system 101 .
- Network 108 may include any combination of gateways, routers, hubs, switches, access points, base stations, wireless telephone systems and any other hardware, software or combination thereof.
- Database proxy module 104 represents suitable hardware components, control logic, and data for processing database transactions to and from database servers 106 and database clients 102 . As illustrated, database proxy module 104 may be communicatively coupled to other components of system 101 , such as database servers 106 and database clients 102 , by a network 108 . Database proxy module 104 may receive requests to use a particular database of database server 106 , respond to such requests unconditionally or without considerable processing, receive database queries, forward each query to database server 106 , collect the results from each query, and forward the results to appropriate database client 102 . In particular embodiments, database proxy module 104 is operable to expedite database transactions by database client 102 by reusing idle backend database connections having the same or similar parameters. Database proxy module 104 will be discussed in further detail in FIG. 2 .
- Database servers 106 represent suitable hardware components, control logic, and data for managing information in one or more databases.
- database servers 106 may be any suitable combination of computer servers and networking devices, whether real or virtual.
- database servers 106 may manage data associated with a social networking website.
- database servers 106 may manage data corresponding to users of a social networking website in the form of text, audio, video, and images.
- Database servers 106 may also retain information including configurations, settings, rules and policies associated with the managed data and/or particular users or groups.
- Database servers 106 may employ one or more relational databases for storing various types of information in a manner that is accessible and easily retrievable upon request.
- database servers 106 may include various interconnected elements including a memory 112 , a processor 114 , and an interface 116 .
- Memory 112 represents any suitable combination of volatile or non-volatile, local or remote devices suitable for storing information.
- memory 112 may include random access memory (RAM), read only memory (ROM), magnetic storage devices, optical storage devices, or any other suitable information storage device or a combination of such devices.
- Memory 112 may maintain appropriate control logic and rules for controlling the operation of database servers 106 .
- memory 112 may include a database 118 for storing and organizing various types of data.
- database 118 represents a relational database for storing information, such as social networking information, in an easily retrievable format.
- database 118 may represent a SQL database for storing various types of information.
- Processor 114 represents any hardware and/or software that communicatively couples to memory 112 and interface 116 , and controls the operation and administration of database servers 106 .
- processor 114 may execute appropriate software to control the operation of database servers 106 .
- Processor 114 may be a programmable logic device, a microcontroller, a microprocessor, any other appropriate processing device, or any suitable combination of the preceding.
- Interface 116 represents any suitable device operable to receive information from network 108 , transmit information through network 108 , perform processing of received or transmitted information, communicate to other devices or any combination of the preceding.
- Interface 116 represents any port or connection, real or virtual including any suitable hardware and/or software including protocol conversion and data processing capabilities to communicate through a LAN, WAN or other communication systems that allow database servers 106 to exchange information with network 108 , database clients 102 and database proxy module 104 .
- interface 116 may receive requests for database transactions associated with database 118 from database clients 102 .
- interface 116 may receive database queries from database clients 102 and/or database proxy module 104 , for appropriate processing by processor 114 of the information stored in database 118 of memory 112 .
- database proxy module 104 maintains a pool of database connections between itself and one or more database servers located at one or more database servers 106 .
- the database connections may be in an active or idle states with respect to particular databases at database servers 106 .
- An active connection may refer to a database connection on which a result is expected to be returned.
- database proxy module 104 may harness a pool of database connections, as appropriate, to process and respond to database transactions received from database clients 102 .
- database proxy module 104 may multiplex database transactions received from different database clients 104 onto a particular database connection selected from the pool of database connections existing between database proxy module 104 and database servers 106 .
- particular embodiments of the present disclosure facilitate using database connection pooling to improve the performance of database transactions.
- database proxy module 104 receives various database messages from database clients 102 , such as a request to use a particular database and queries to specific databases. Exemplary embodiments may unconditionally acknowledge database selection messages without considerable processing. Subsequent queries may be multiplexed onto any existing idle backend database connection having the same or similar parameters. The exemplary embodiment may also transmit messages to database server 106 as necessary to change one or more parameters associated with an idle backend connection before forwarding the database queries to database server 106 , collecting any database results, and forwarding those results to the appropriate database clients 102 .
- database proxy module 104 may be configured to identify an idle backend connection with the same or similar parameters to a received database transaction other than a database query.
- a database transaction such as a database query, may have a user identifier and a database identifier.
- a user identifier may uniquely identify a database client 102
- a database identifier may specify the desired database on database server 106 .
- database proxy module 104 may determine whether the same or similar idle backend database connections exist such that they may be reused to handle current or subsequent database transactions. Accordingly, database clients 102 , database proxy module 104 , and database servers 106 may work together to speculatively process database transactions that may require database switching.
- a component of systems 100 and 101 may include an interface, logic, memory, and/or other suitable element.
- An interface receives input, sends output, processes the input and/or output and/or performs other suitable operations.
- An interface may comprise hardware and/or software.
- Logic performs the operation of the component, for example, logic executes instructions to generate output from input.
- Logic may include hardware, software, and/or other logic.
- Logic may be encoded in one or more non-transitory tangible media, such as a computer-readable medium or any other suitable tangible medium, and may perform operations when executed by a computer.
- Certain logic, such as a processor may manage the operation of a component. Examples of a processor include one or more computers, one or more microprocessors, one or more applications, and/or other logic. Any suitable logic may perform the functions of system 100 and 101 and the components within systems 100 and 101 .
- a database server 106 may also be database proxy module 104 .
- FIG. 2 is a schematic diagram of an example messaging sequence 200 for speculatively switching a database.
- a database client 102 may issue a message to use a particular database.
- database client 102 may transmit a use DB X message 202 to database proxy module 104 .
- This message may specify to database proxy module 104 that database client 102 has the desire to use the database identified by ‘X’.
- database proxy module 104 In response to the use DB X message 202 , database proxy module 104 immediately responds with an acknowledgment message 204 .
- database proxy module 104 responds to use DB X message 202 unconditionally or automatically without substantial delay or considerable processing.
- database proxy module 104 transmits the acknowledgment message 204 without substantial delay or processing.
- database proxy module 104 may speculate that database server 106 would have acknowledged the use DB X message 202 if it had received it.
- database client 102 may issue a number of requests to database proxy module 104 .
- database client 102 may issue a query message 206 to database proxy module 104 for forwarding to database server 106 .
- query message 206 may represented by query messages 206 a and 206 b .
- the database query message from database client 102 is illustrated as query message 206 a and the forwarded database query from database proxy module 104 to database server 106 is illustrated as query message 206 b .
- database proxy module 104 may determine whether an idle backend database connection exists having both the same user and logical database as requested by query 206 a .
- database proxy module 104 may forward the database query message 206 to that idle backend database connection. If a matching idle backend database connection does not exist, database proxy module 104 may determine whether a user connection limit for database client 102 has been exceeded. If the user connection limit is not exceeded, database proxy module 104 may determine whether an idle backend database connection exists having either a different user or a different logical database. If such a similar idle backend database connection exists, database proxy module 104 may change the user or the logical database as appropriate to match the received database query 206 . In this manner, database proxy module 104 can reuse idle backend connection that it has with database server 106 and thereby conserve computing resources.
- database proxy module 104 may establish a new connection with database server 106 in order to process query 206 .
- database proxy module 104 respond with corresponding results in database results message 208 .
- database results message 208 may be represented by database results messages 208 a and 208 b .
- database proxy module 104 may forward the database results in a database results message 208 b to database client 102 .
- embodiments of the present disclosure may reuse idle backend database connections as appropriate to expedite database transactions with database server 106 .
- messaging sequence 200 has been illustrated as including specific types of messages arranged in a particular sequence, it should be understood that various embodiments may operate using any suitable arrangement collection of messages capable of providing functionality such as that described.
- FIG. 3 illustrates a flow chart of an example process flow 300 for speculatively switching a database.
- process flow 300 begins at step 302 when database proxy module 104 accesses a database query from a queue.
- database proxy module 104 may insert those queries into a queue for processing.
- a queue is a data structure in a memory.
- Database queries placed in a queue can be accessed by database proxy module 104 as desired.
- Queues may enable database proxy module 104 to receive a number of database transactions while it waits for the results of earlier pending database transactions to complete with respect to database server 106 .
- database proxy module 104 may receive a number of database queries following one or more database selection messages.
- those database selection messages are speculatively acknowledged by database proxy module 104 by transmitting an acknowledgment message without substantial delay after receiving the select database message.
- database proxy module 104 determines whether the query was previously flagged as having caused a database switch (i.e., steps 314 - 320 ). For example, if this query was previously received and caused a proxy module 104 to switch the user or logical database associated with an idle backend of its connection, the query may have been flagged. If the database query had been flagged, the database proxy module 104 places the query back on the queue in step 306 . If the query was not flagged, process flow 300 continues to step 308 .
- database proxy module 104 determines whether an idle backend database connection exists having the same user and a logical database. In particular embodiments, such a determination may be made by comparing the user identifier and database identifies associated with the idle back end database connection and the received database query. If such an idle backend database connection exists, database proxy module 104 is operable to forward the database query to that idle database connection. If, however, no idle backend database connection exists having both the same user and the logical database, database proxy module 104 determines whether the user connection limit has been exceeded in step 312 . If the limit has been exceeded, database proxy module 104 may place the query back on the queue in step 306 . If the user connection limit has not been exceeded, database proxy module 104 may flag the query as having caused a database switch or a new connection in step 314 .
- step 316 database proxy module 104 determines whether an idle backend database connection exists having either a different user or a logical database. As discussed above, this determination may be made by comparing the user identifier and database identifier associated with the idle backend database connection and the received database query and determining whether they are equivalent. If any matches are found, process flow 300 continues to step 318 to change the non-matching item. For example, if the user identifiers match, database proxy module 104 will issue a request to database server 106 to change the logical database. On the other hand, if the database identifiers match, then the database proxy module 104 may issue a request to database server 106 to change the user associated with the idle backend database connection.
- process flow 300 continues to step 320 to establish a new database connection by transmitting an appropriate message to database server 106 .
- embodiments of the present disclosure are operable to reuse idle backend database connections having either the same user or logical database, or both. Such embodiments conserve transactional and processing resources by not issuing a new database transaction connection when an idle backend database connection can be reused.
- process flow 300 is illustrated as including specific steps arranged in a particular sequence, it should be understood that various embodiments may operate using any suitable arrangement and collection of steps capable of providing functionality such as that described. For example, in some embodiments, changing the user or database in step 318 may require more than an insignificant amount of processing time and the query may be placed on the queue as it waits for the first available and matching idle backend connection for processing the query.
- FIG. 4 illustrates an example computer system 400 .
- computer system 400 is a computer server that runs all or part of a functionality related to a system for speculating switch database operations.
- computer system 400 may represent the hardware architecture of database clients 102 , database proxy module 104 , and/or database servers 106 .
- hardware system 400 includes a processor 402 , a cache memory 404 , and one or more software applications and drivers directed to the functions described herein.
- hardware system 400 includes a high performance input/output (I/O) bus 406 and a standard I/O bus 408 .
- I/O input/output
- a host bridge 410 couples processor 402 to high performance I/O bus 406
- I/O bus bridge 412 couples the two buses 406 and 408 to each other.
- a system memory 414 and a network/communication interface 416 couple to bus 406 .
- Hardware system 400 may further include video memory (not shown) and a display device coupled to the video memory. Mass storage 418 and I/O ports 420 couple to bus 408 .
- hardware system 400 may also include a keyboard and pointing device 422 and a display 424 coupled to bus 408 .
- network interface 416 provides communication between hardware system 400 and any of a wide range of networks, such as an Ethernet (e.g., IEEE 802.3) network.
- Mass storage 418 provides permanent storage for the data and programming instructions to perform the functions described herein, whereas system memory 414 (e.g., DRAM) provides temporary storage for the data and programming instructions when executed by processor 402 .
- I/O ports 420 are one or more serial and/or parallel communication ports that provide communication between additional peripheral devices, which may be coupled to hardware system 400 .
- Hardware system 400 may include a variety of system architectures; and various components of hardware system 400 may be rearranged.
- cache 404 may be on-chip with processor 402 .
- cache 404 and processor 402 may be packed together as a “processor module,” with processor 402 being referred to as the “processor core.”
- certain embodiments of the present disclosure may not require nor include all of the above components.
- the peripheral devices shown coupled to standard I/O bus 408 may couple to high performance I/O bus 406 .
- only a single bus may exist with the components of hardware system 400 being coupled to the single bus.
- hardware system 400 may include additional components, such as additional processors, storage devices, or memories.
- the speculative switch database processing system includes a series of software routines run by hardware system 400 .
- These software routines include a plurality or series of instructions to be executed by a processor in a hardware system, such as processor 402 .
- the series of instructions are stored on a storage device, such as mass storage 418 .
- the series of instructions can be stored on any suitable storage medium, such as a diskette, CD-ROM, ROM, or EEPROM.
- the series of instructions need not be stored locally, and could be received from a remote storage device, such as a server on a network, via network/communication interface 416 .
- the instructions are copied from the storage device, such as mass storage 418 , into memory 414 and then accessed and executed by processor 402 .
- An operating system manages and controls the operation of hardware system 400 , including the input and output of data to and from software applications (not shown).
- the operating system provides an interface between the software applications being executed on the system and the hardware components of the system.
- the operating system is the LINUX operating system.
- suitable operating systems such as the Windows® 95/98/NT/XP/Vista/7 operating system, available from Microsoft Corporation of Redmond, Wash., the Apple Macintosh Operating System, available from Apple Computer Inc. of Cupertino, Calif., UNIX operating systems, and the like.
Abstract
Description
- The present disclosure generally relates to databases and, more particularly to switching databases.
- Computer users are able to access and share vast amounts of information through various local and wide area computer networks including proprietary networks as well as public networks such as the Internet. Typically, a web browser installed on a user's computing device facilitates access to and interaction with information located at various network servers identified by, for example, associated uniform resource locators (URLs). Conventional approaches to enable sharing of user-generated content include various information sharing technologies or platforms such as social networking websites. Such websites may include, be linked with, or provide a platform for applications enabling users to view web pages created or customized by other users where visibility and interaction with such pages by other users is governed by some characteristic set of rules.
- Such social networking information, and most information in general, is typically stored in relational databases. Generally, a relational database is a collection of relations (frequently referred to as tables). Relational databases use a set of mathematical terms, which may use Structured Query Language (SQL) database terminology. For example, a relation may be defined as a set of tuples that have the same attributes. A tuple usually represents an object and information about that object. A relation is usually described as a table, which is organized into rows and columns. Generally, all the data referenced by an attribute are in the same domain and conform to the same constraints.
- The relational model specifies that the tuples of a relation have no specific order and that the tuples, in turn, impose no order on the attributes. Applications access data by specifying queries, which use operations to identify tuples, identify attributes, and to combine relations. Relations can be modified and new tuples can supply explicit values or be derived from a query. Similarly, queries identify may tuples for updating or deleting. It is necessary for each tuple of a relation to be uniquely identifiable by some combination (one or more) of its attribute values. This combination is referred to as the primary key. In a relational database, all data are stored and accessed via relations. Relations that store data are typically implemented with or referred to as tables.
- Relational databases, as implemented in relational database management systems, have become a predominant choice for the storage of information in databases used for, for example, financial records, manufacturing and logistical information, personnel data, and other applications. As computer power has increased, the inefficiencies of relational databases, which made them impractical in earlier times, have been outweighed by their ease of use for conventional applications. The three leading open source implementations are MySQL, PostgreSQL, and SQLite. MySQL is a relational database management system (RDBMS) that runs as a server providing multi-user access to a number of databases. The “M” in the acronym of the popular LAMP software stack refers to MySQL. Its popularity for use with web applications is closely tied to the popularity of PHP (the “P” in LAMP). Several high-traffic web sites use MySQL for data storage and logging of user data.
- Using databases involves a series of messages that enable a database user to interact with a database. For example, a database transaction may involve messaging associated with setting up connections to a database, authentication, querying the database, switching databases, committing transactions to the database, and terminating connections with the database.
- In accordance with the present disclosure, disadvantages and problems associated with processing of switch database operations may be reduced or eliminated.
- According to one embodiment, processing switch database operations may include receiving a database selection message from a database client, transmitting an unconditional acknowledgement to the database client in response to the database selection message, accessing a database query from a queue of queries from the a database client where the database query includes a user identifier and a database identifier, determining whether a matching backend database connection exists, and if a matching backend database connection exists, forwarding the database query to the matching backend database connection. In some embodiments, a matching backend database connection may be a backend database connection having a user identifier equivalent to the user identifier of the database query, and a database identifier that is equivalent to the database identifier the database query.
-
FIG. 1A illustrates example devices involved in a database transaction. -
FIG. 1B illustrates an example database environment. -
FIG. 2 illustrates a messaging sequence of an example embodiment. -
FIG. 3 illustrates a flowchart of an example embodiment. -
FIG. 4 illustrates an example computer system. - The present disclosure is now described in detail with reference to a few embodiments thereof as illustrated in the accompanying drawings. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. However, the present disclosure may be practiced without some or all of these specific details. In other instances, well known process steps and/or structures have not been described in detail in order not to unnecessarily obscure the present disclosure. In addition, while the disclosure is described in conjunction with the particular embodiments, it should be understood that this description is not intended to limit the disclosure to the described embodiments. To the contrary, the description is intended to cover alternatives, modifications, and equivalents as may be included within the spirit and scope of the disclosure as defined by the appended claims.
-
FIG. 1A illustrates asystem 100 of example components involved in a database transaction. As illustrated,system 100 includesdatabase clients 102, adatabase proxy module 104, anddatabase servers 106. In appropriate environments, these components interoperate to facilitate database transactions betweendatabase clients 102 and adatabase server 106. For example,database clients 102 may transmit and receive messages fromdatabase server 106 usingdatabase proxy module 104, and thereby access, retrieve, and store information in a database residing ondatabase server 106. Thedatabase proxy module 104 may facilitate and assist in the processing of database transactions betweendatabase clients 102 anddatabase servers 106. In particular embodiments,database proxy module 104 is operable speculatively switch databases in a manner that conserves resources. -
FIG. 1B illustrates asystem 101 of an example database environment in which embodiments of the present disclosure may operate. In the illustrated embodiment,system 101 may speculatively switch databases using idle backend database connections to expedite database transactions. In particular embodiments, switching a database refers to the operation of altering the state and parameters associated with an existing database connection corresponding to a particular user and database. For example,database proxy module 104 may have a number of idle backend connections to various databases residing ondatabase server 106. In particular embodiments,database proxy module 104 capitalizes on its knowledge of these backend connections to reuse them, as appropriate, to satisfy requests to select a database for the same or different user. In certain embodiments, a database connection is associated with a database identifier and a user identifier. A database identifier may uniquely identify a particular database ondatabase server 106. A user identifier specifies aparticular database client 102. In some embodiments, these parameters are included a use database message and/or a database query received from adatabase client 102. The illustratedsystem 101 facilitates speculative switching of databases in a manner that is efficient and avoids the processing and transactional overhead associated with communicating switch messages todatabase server 106, including switch user and/or switch database messages. -
Database clients 102 represent computer systems including appropriate hardware, control logic, and data that may be used to interface with other system components, such asdatabase proxy module 104 ordatabase servers 106, usingnetwork 108. For example,database clients 102 may represent web servers, mainframe computers, workstations, laptops, netbooks, tablet computers, personal data assistants, (PDAs), mobile phones, mainframes, and any other suitable computing device capable of interacting with a database using appropriate messaging and/or database transactions.Database clients 102 may support a wide array of operations, including but not limited to, web browsing, word processing, querying databases, and processing results retrieved from databases. According to particular embodiments,database clients 102 may provide access, potentially through web-based interfaces, to information managed by other elements such asdatabase proxy module 104 anddatabase servers 106. - As illustrated,
database clients 102 may include agraphical user interface 110.Graphical user interface 110 represents any appropriate interface for receiving and displaying information to a user ofsystem 100.Graphical user interface 110 may be any appropriate combination of hardware and/or software to facilitate a user's interaction withdatabase clients 102. In particular embodiments,database clients 102 are web servers that issue a series of database requests in order to deliver web pages to requesting network users. For example, a social networking user may request that a web server deliver a web page associated with another social networking user. In such an example, the web server may issue a number of database queries to populate the requested web page with relevant information. In some embodiments, the database queries issued bydatabase clients 102 todatabase servers 106 may request the use of a database having the same user and/or database of an existing idle backend database connection betweendatabase proxy module 104 anddatabase server 106. In those instances, those database queries may be processed efficiently by speculatively switching databases according to embodiments of the present disclosure. -
Network 108 represents any suitable communications network operable to facilitate communication between the components ofsystem 101, such asdatabase clients 102,database servers 106, anddatabase proxy module 104.Network 108 may include any interconnecting system capable of transmitting audio/video signals, data, messages or any other combination of the preceding.Network 108 may include all or a portion of a public switched telephone network (PSTN), a public or private data network, a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a local, regional, or global communication or computer network, such as the Internet, a wireline or wireless network, an enterprise intranet, or any other suitable communication link, including combinations thereof, operable to facilitate communication between components ofsystem 101.Network 108 may include any combination of gateways, routers, hubs, switches, access points, base stations, wireless telephone systems and any other hardware, software or combination thereof. -
Database proxy module 104 represents suitable hardware components, control logic, and data for processing database transactions to and fromdatabase servers 106 anddatabase clients 102. As illustrated,database proxy module 104 may be communicatively coupled to other components ofsystem 101, such asdatabase servers 106 anddatabase clients 102, by anetwork 108.Database proxy module 104 may receive requests to use a particular database ofdatabase server 106, respond to such requests unconditionally or without considerable processing, receive database queries, forward each query todatabase server 106, collect the results from each query, and forward the results toappropriate database client 102. In particular embodiments,database proxy module 104 is operable to expedite database transactions bydatabase client 102 by reusing idle backend database connections having the same or similar parameters.Database proxy module 104 will be discussed in further detail inFIG. 2 . -
Database servers 106 represent suitable hardware components, control logic, and data for managing information in one or more databases. For example,database servers 106 may be any suitable combination of computer servers and networking devices, whether real or virtual. In particular embodiments,database servers 106 may manage data associated with a social networking website. For example,database servers 106 may manage data corresponding to users of a social networking website in the form of text, audio, video, and images.Database servers 106 may also retain information including configurations, settings, rules and policies associated with the managed data and/or particular users or groups.Database servers 106 may employ one or more relational databases for storing various types of information in a manner that is accessible and easily retrievable upon request. - As illustrated,
database servers 106 may include various interconnected elements including amemory 112, aprocessor 114, and aninterface 116.Memory 112 represents any suitable combination of volatile or non-volatile, local or remote devices suitable for storing information. For example,memory 112 may include random access memory (RAM), read only memory (ROM), magnetic storage devices, optical storage devices, or any other suitable information storage device or a combination of such devices.Memory 112 may maintain appropriate control logic and rules for controlling the operation ofdatabase servers 106. As illustrated,memory 112 may include adatabase 118 for storing and organizing various types of data. In particular embodiments,database 118 represents a relational database for storing information, such as social networking information, in an easily retrievable format. For example,database 118 may represent a SQL database for storing various types of information. -
Processor 114 represents any hardware and/or software that communicatively couples tomemory 112 andinterface 116, and controls the operation and administration ofdatabase servers 106. For example,processor 114 may execute appropriate software to control the operation ofdatabase servers 106.Processor 114 may be a programmable logic device, a microcontroller, a microprocessor, any other appropriate processing device, or any suitable combination of the preceding. -
Interface 116 represents any suitable device operable to receive information fromnetwork 108, transmit information throughnetwork 108, perform processing of received or transmitted information, communicate to other devices or any combination of the preceding.Interface 116 represents any port or connection, real or virtual including any suitable hardware and/or software including protocol conversion and data processing capabilities to communicate through a LAN, WAN or other communication systems that allowdatabase servers 106 to exchange information withnetwork 108,database clients 102 anddatabase proxy module 104. For example,interface 116 may receive requests for database transactions associated withdatabase 118 fromdatabase clients 102. According to particular embodiments,interface 116 may receive database queries fromdatabase clients 102 and/ordatabase proxy module 104, for appropriate processing byprocessor 114 of the information stored indatabase 118 ofmemory 112. - In certain embodiments,
database proxy module 104 maintains a pool of database connections between itself and one or more database servers located at one ormore database servers 106. According to particular implementations, the database connections may be in an active or idle states with respect to particular databases atdatabase servers 106. An active connection may refer to a database connection on which a result is expected to be returned. In particular embodiments,database proxy module 104 may harness a pool of database connections, as appropriate, to process and respond to database transactions received fromdatabase clients 102. For example,database proxy module 104 may multiplex database transactions received fromdifferent database clients 104 onto a particular database connection selected from the pool of database connections existing betweendatabase proxy module 104 anddatabase servers 106. Thus, particular embodiments of the present disclosure facilitate using database connection pooling to improve the performance of database transactions. - In exemplary embodiments,
database proxy module 104 receives various database messages fromdatabase clients 102, such as a request to use a particular database and queries to specific databases. Exemplary embodiments may unconditionally acknowledge database selection messages without considerable processing. Subsequent queries may be multiplexed onto any existing idle backend database connection having the same or similar parameters. The exemplary embodiment may also transmit messages todatabase server 106 as necessary to change one or more parameters associated with an idle backend connection before forwarding the database queries todatabase server 106, collecting any database results, and forwarding those results to theappropriate database clients 102. - Alternate embodiments may process database transactions other than queries while still employing the speculative database switching of the present disclosure. For example,
database proxy module 104 may be configured to identify an idle backend connection with the same or similar parameters to a received database transaction other than a database query. A database transaction, such as a database query, may have a user identifier and a database identifier. A user identifier may uniquely identify adatabase client 102, while a database identifier may specify the desired database ondatabase server 106. Using parameters such as the user identifier and the database identifier,database proxy module 104 may determine whether the same or similar idle backend database connections exist such that they may be reused to handle current or subsequent database transactions. Accordingly,database clients 102,database proxy module 104, anddatabase servers 106 may work together to speculatively process database transactions that may require database switching. - A component of
systems system systems - While
systems database server 106 may also bedatabase proxy module 104. -
FIG. 2 is a schematic diagram of an example messaging sequence 200 for speculatively switching a database. As illustrated, adatabase client 102 may issue a message to use a particular database. For example,database client 102 may transmit a use DBX message 202 todatabase proxy module 104. This message may specify todatabase proxy module 104 thatdatabase client 102 has the desire to use the database identified by ‘X’. In response to the use DBX message 202,database proxy module 104 immediately responds with anacknowledgment message 204. In some embodiments,database proxy module 104 responds to use DBX message 202 unconditionally or automatically without substantial delay or considerable processing. In particular embodiments,database proxy module 104 transmits theacknowledgment message 204 without substantial delay or processing. For example,database proxy module 104 may speculate thatdatabase server 106 would have acknowledged the use DBX message 202 if it had received it. - Upon receiving the
acknowledgment message 204,database client 102 may issue a number of requests todatabase proxy module 104. For example,database client 102 may issue a query message 206 todatabase proxy module 104 for forwarding todatabase server 106. As illustrated, query message 206 may represented byquery messages database client 102 is illustrated asquery message 206 a and the forwarded database query fromdatabase proxy module 104 todatabase server 106 is illustrated asquery message 206 b. In certain embodiments,database proxy module 104 may determine whether an idle backend database connection exists having both the same user and logical database as requested byquery 206 a. If such an idle backend database connection exists,database proxy module 104 may forward the database query message 206 to that idle backend database connection. If a matching idle backend database connection does not exist,database proxy module 104 may determine whether a user connection limit fordatabase client 102 has been exceeded. If the user connection limit is not exceeded,database proxy module 104 may determine whether an idle backend database connection exists having either a different user or a different logical database. If such a similar idle backend database connection exists,database proxy module 104 may change the user or the logical database as appropriate to match the received database query 206. In this manner,database proxy module 104 can reuse idle backend connection that it has withdatabase server 106 and thereby conserve computing resources. If no idle backend database connection having either different user or logical databases found,database proxy module 104 may establish a new connection withdatabase server 106 in order to process query 206. In certain embodiments, once the database switch is made and the query 206 is processed bydatabase server 106,database proxy module 104 respond with corresponding results in database results message 208. As illustrated, database results message 208 may be represented bydatabase results messages database proxy module 104 receives the database results indatabase results message 208 a, it may forward the database results in a database resultsmessage 208 b todatabase client 102. - As discussed, embodiments of the present disclosure may reuse idle backend database connections as appropriate to expedite database transactions with
database server 106. While messaging sequence 200 has been illustrated as including specific types of messages arranged in a particular sequence, it should be understood that various embodiments may operate using any suitable arrangement collection of messages capable of providing functionality such as that described. -
FIG. 3 illustrates a flow chart of anexample process flow 300 for speculatively switching a database. As illustrated,process flow 300 begins atstep 302 whendatabase proxy module 104 accesses a database query from a queue. As database queries are received,database proxy module 104 may insert those queries into a queue for processing. In particular embodiments, a queue is a data structure in a memory. Database queries placed in a queue can be accessed bydatabase proxy module 104 as desired. Queues may enabledatabase proxy module 104 to receive a number of database transactions while it waits for the results of earlier pending database transactions to complete with respect todatabase server 106. As discussed above,database proxy module 104 may receive a number of database queries following one or more database selection messages. In particular embodiments, those database selection messages are speculatively acknowledged bydatabase proxy module 104 by transmitting an acknowledgment message without substantial delay after receiving the select database message. Next, instep 304,database proxy module 104 determines whether the query was previously flagged as having caused a database switch (i.e., steps 314-320). For example, if this query was previously received and caused aproxy module 104 to switch the user or logical database associated with an idle backend of its connection, the query may have been flagged. If the database query had been flagged, thedatabase proxy module 104 places the query back on the queue instep 306. If the query was not flagged,process flow 300 continues to step 308. Instep 308,database proxy module 104 determines whether an idle backend database connection exists having the same user and a logical database. In particular embodiments, such a determination may be made by comparing the user identifier and database identifies associated with the idle back end database connection and the received database query. If such an idle backend database connection exists,database proxy module 104 is operable to forward the database query to that idle database connection. If, however, no idle backend database connection exists having both the same user and the logical database,database proxy module 104 determines whether the user connection limit has been exceeded instep 312. If the limit has been exceeded,database proxy module 104 may place the query back on the queue instep 306. If the user connection limit has not been exceeded,database proxy module 104 may flag the query as having caused a database switch or a new connection instep 314. - The
process flow 300 continues to step 316 wheredatabase proxy module 104 determines whether an idle backend database connection exists having either a different user or a logical database. As discussed above, this determination may be made by comparing the user identifier and database identifier associated with the idle backend database connection and the received database query and determining whether they are equivalent. If any matches are found,process flow 300 continues to step 318 to change the non-matching item. For example, if the user identifiers match,database proxy module 104 will issue a request todatabase server 106 to change the logical database. On the other hand, if the database identifiers match, then thedatabase proxy module 104 may issue a request todatabase server 106 to change the user associated with the idle backend database connection. If, however, no idle backend database connection exists having either a different user or a different logical database, then process flow 300 continues to step 320 to establish a new database connection by transmitting an appropriate message todatabase server 106. As demonstrated, embodiments of the present disclosure are operable to reuse idle backend database connections having either the same user or logical database, or both. Such embodiments conserve transactional and processing resources by not issuing a new database transaction connection when an idle backend database connection can be reused. - While process flow 300 is illustrated as including specific steps arranged in a particular sequence, it should be understood that various embodiments may operate using any suitable arrangement and collection of steps capable of providing functionality such as that described. For example, in some embodiments, changing the user or database in
step 318 may require more than an insignificant amount of processing time and the query may be placed on the queue as it waits for the first available and matching idle backend connection for processing the query. -
FIG. 4 illustrates anexample computer system 400. In particular embodiments,computer system 400 is a computer server that runs all or part of a functionality related to a system for speculating switch database operations. In particular embodiments,computer system 400 may represent the hardware architecture ofdatabase clients 102,database proxy module 104, and/ordatabase servers 106. In one embodiment,hardware system 400 includes aprocessor 402, acache memory 404, and one or more software applications and drivers directed to the functions described herein. Additionally,hardware system 400 includes a high performance input/output (I/O)bus 406 and a standard I/O bus 408. Ahost bridge 410couples processor 402 to high performance I/O bus 406, whereas I/O bus bridge 412 couples the twobuses system memory 414 and a network/communication interface 416 couple tobus 406.Hardware system 400 may further include video memory (not shown) and a display device coupled to the video memory.Mass storage 418 and I/O ports 420 couple tobus 408. In one embodiment,hardware system 400 may also include a keyboard and pointing device 422 and a display 424 coupled tobus 408. Collectively, these elements are intended to represent a broad category of computer hardware systems, including but not limited to general purpose computer systems based on the x86-compatible processors manufactured by Intel Corporation of Santa Clara, Calif., and the x86-compatible processors manufactured by Advanced Micro Devices (AMD), Inc., of Sunnyvale, Calif., as well as any other suitable processor. - The elements of
hardware system 400 are described in greater detail below. In particular,network interface 416 provides communication betweenhardware system 400 and any of a wide range of networks, such as an Ethernet (e.g., IEEE 802.3) network.Mass storage 418 provides permanent storage for the data and programming instructions to perform the functions described herein, whereas system memory 414 (e.g., DRAM) provides temporary storage for the data and programming instructions when executed byprocessor 402. I/O ports 420 are one or more serial and/or parallel communication ports that provide communication between additional peripheral devices, which may be coupled tohardware system 400. -
Hardware system 400 may include a variety of system architectures; and various components ofhardware system 400 may be rearranged. For example,cache 404 may be on-chip withprocessor 402. Alternatively,cache 404 andprocessor 402 may be packed together as a “processor module,” withprocessor 402 being referred to as the “processor core.” Furthermore, certain embodiments of the present disclosure may not require nor include all of the above components. For example, the peripheral devices shown coupled to standard I/O bus 408 may couple to high performance I/O bus 406. In addition, in some embodiments only a single bus may exist with the components ofhardware system 400 being coupled to the single bus. Furthermore,hardware system 400 may include additional components, such as additional processors, storage devices, or memories. - In particular embodiments, the speculative switch database processing system, as well as other computer-implemented operations described herein includes a series of software routines run by
hardware system 400. These software routines include a plurality or series of instructions to be executed by a processor in a hardware system, such asprocessor 402. Initially, the series of instructions are stored on a storage device, such asmass storage 418. However, the series of instructions can be stored on any suitable storage medium, such as a diskette, CD-ROM, ROM, or EEPROM. Furthermore, the series of instructions need not be stored locally, and could be received from a remote storage device, such as a server on a network, via network/communication interface 416. The instructions are copied from the storage device, such asmass storage 418, intomemory 414 and then accessed and executed byprocessor 402. - An operating system manages and controls the operation of
hardware system 400, including the input and output of data to and from software applications (not shown). The operating system provides an interface between the software applications being executed on the system and the hardware components of the system. According to one embodiment of the present disclosure, the operating system is the LINUX operating system. However, embodiments of the present disclosure may be used with other suitable operating systems, such as the Windows® 95/98/NT/XP/Vista/7 operating system, available from Microsoft Corporation of Redmond, Wash., the Apple Macintosh Operating System, available from Apple Computer Inc. of Cupertino, Calif., UNIX operating systems, and the like. - The present disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments herein that a person having ordinary skill in the art would comprehend. Similarly, where appropriate, the appended claims encompass all changes, substitutions, variations, alterations, and modifications to the example embodiments herein that a person having ordinary skill in the art would comprehend.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/181,416 US8756217B2 (en) | 2011-07-12 | 2011-07-12 | Speculative switch database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/181,416 US8756217B2 (en) | 2011-07-12 | 2011-07-12 | Speculative switch database |
Publications (2)
Publication Number | Publication Date |
---|---|
US20130018919A1 true US20130018919A1 (en) | 2013-01-17 |
US8756217B2 US8756217B2 (en) | 2014-06-17 |
Family
ID=47519558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/181,416 Active 2032-01-29 US8756217B2 (en) | 2011-07-12 | 2011-07-12 | Speculative switch database |
Country Status (1)
Country | Link |
---|---|
US (1) | US8756217B2 (en) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150026213A1 (en) * | 2013-06-06 | 2015-01-22 | Oracle International Corporation | System and method for providing a shareable global cache for use with a database environment |
WO2016085497A1 (en) * | 2014-11-26 | 2016-06-02 | Hewlett Packard Enterprise Development Lp | Speculative execution of a stream of changes |
US9678995B2 (en) | 2013-06-06 | 2017-06-13 | Oracle International Corporation | System and method for planned migration of service connections |
US9720970B2 (en) | 2013-06-06 | 2017-08-01 | Oracle International Corporation | Efficient storage and retrieval of fragmented data using pseudo linear dynamic byte array |
US9785687B2 (en) | 2013-06-06 | 2017-10-10 | Oracle International Corporation | System and method for transparent multi key-value weighted attributed connection using uni-tag connection pools |
US20180300367A1 (en) * | 2017-04-13 | 2018-10-18 | Sap Se | Adaptive metadata refreshing |
US20180307717A1 (en) * | 2017-04-21 | 2018-10-25 | Microsoft Technology Licensing, Llc | Trigger System For Databases Using Proxy |
US20190075170A1 (en) * | 2017-09-06 | 2019-03-07 | Oracle International Corporation | System and method for high availability and load balancing in a database environment |
US10834055B2 (en) | 2016-08-29 | 2020-11-10 | Microsoft Technology Licensing, Llc. | Cross-tenant data leakage isolation |
US11080274B2 (en) * | 2017-01-17 | 2021-08-03 | Futurewei Technologies, Inc. | Best-efforts database functions |
US20220229903A1 (en) * | 2021-01-21 | 2022-07-21 | Intuit Inc. | Feature extraction and time series anomaly detection over dynamic graphs |
US11928187B1 (en) * | 2021-02-17 | 2024-03-12 | Bank Of America Corporation | Media hosting system employing a secured video stream |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10366079B1 (en) | 2015-01-26 | 2019-07-30 | Microstrategy Incorporated | Enterprise connectivity |
SG11201906831YA (en) * | 2018-12-28 | 2019-08-27 | Alibaba Group Holding Ltd | Accelerating transaction deliveries in blockchain networks using acceleration nodes |
WO2019072308A2 (en) * | 2018-12-28 | 2019-04-18 | Alibaba Group Holding Limited | Improving blockchain transaction speeds using global acceleration nodes |
EP3566393B1 (en) | 2018-12-28 | 2021-09-01 | Advanced New Technologies Co., Ltd. | Accelerating transaction deliveries in blockchain networks using transaction resending |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5857188A (en) * | 1996-04-29 | 1999-01-05 | Ncr Corporation | Management of client requests in a client-server environment |
US6434543B1 (en) * | 1999-11-01 | 2002-08-13 | Sun Microsystems, Inc. | System and method for reliable caching of database connections in a distributed application |
US20030204593A1 (en) * | 2002-04-25 | 2003-10-30 | International Business Machines Corporation | System and method for dynamically altering connections in a data processing network |
US20070061329A1 (en) * | 2005-09-12 | 2007-03-15 | Microsoft Corporation | Arbitrating an appropriate back-end server to receive channels of a client session |
US7490162B1 (en) * | 2002-05-15 | 2009-02-10 | F5 Networks, Inc. | Method and system for forwarding messages received at a traffic manager |
US20090138448A1 (en) * | 2003-10-30 | 2009-05-28 | International Business Machines Corporation | Processing database queries by returning results of a first query to subsequent queries |
US20100217793A1 (en) * | 2009-02-23 | 2010-08-26 | Research In Motion Limited | Method, system and apparatus for connecting a plurality of client machines to a plurality of servers |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999045487A1 (en) | 1998-03-03 | 1999-09-10 | Amazon.Com, Inc. | Identifying the items most relevant to a current query based on items selected in connection with similar queries |
US6615221B2 (en) | 2001-03-09 | 2003-09-02 | Hewlett-Packard Development Company, Lp. | Scalable transport layer protocol for multiprocessor interconnection networks that tolerates interconnection component failure |
US6772363B2 (en) | 2001-03-12 | 2004-08-03 | Hewlett-Packard Development Company, L.P. | Fast failover database tier in a multi-tier transaction processing system |
US6801919B2 (en) | 2001-07-27 | 2004-10-05 | Hewlett-Packard Development Company, L.P. | Object oriented database interface encapsulation that allows for chronologically overlapping transactions in a multi-threaded environment |
US7702739B1 (en) | 2002-10-01 | 2010-04-20 | Bao Tran | Efficient transactional messaging between loosely coupled client and server over multiple intermittent networks with policy based routing |
US8069225B2 (en) | 2003-04-14 | 2011-11-29 | Riverbed Technology, Inc. | Transparent client-server transaction accelerator |
US8176186B2 (en) | 2002-10-30 | 2012-05-08 | Riverbed Technology, Inc. | Transaction accelerator for client-server communications systems |
JP4283576B2 (en) | 2003-03-27 | 2009-06-24 | 株式会社日立製作所 | Transaction synchronization method, database system, and database apparatus |
US7206162B2 (en) | 2004-11-30 | 2007-04-17 | Hitachi Global Storage Technologies Netherlands B.V. | Seek trajectory generation using adaptive filtering |
US8732186B2 (en) | 2005-12-01 | 2014-05-20 | Peter Warren | Computer-implemented method and system for enabling communication between networked users based on common characteristics |
US20080013720A1 (en) | 2006-02-14 | 2008-01-17 | Steven Degele | Monobase amorphous encryption |
US7996396B2 (en) | 2006-03-28 | 2011-08-09 | A9.Com, Inc. | Identifying the items most relevant to a current query based on user activity with respect to the results of similar queries |
US7877380B2 (en) | 2008-02-25 | 2011-01-25 | Yahoo! Inc. | System for query scheduling to maximize work sharing |
US8069469B1 (en) | 2008-07-25 | 2011-11-29 | Sprint Communications Company L.P. | Addressing security in asymmetrical networks |
US8156129B2 (en) | 2009-01-15 | 2012-04-10 | Microsoft Corporation | Substantially similar queries |
US8280881B1 (en) | 2009-10-29 | 2012-10-02 | Google Inc. | Similar search queries and images |
US8996506B2 (en) | 2011-03-28 | 2015-03-31 | Red Hat Israel, Ltd. | Duplicate search optimization |
-
2011
- 2011-07-12 US US13/181,416 patent/US8756217B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5857188A (en) * | 1996-04-29 | 1999-01-05 | Ncr Corporation | Management of client requests in a client-server environment |
US6434543B1 (en) * | 1999-11-01 | 2002-08-13 | Sun Microsystems, Inc. | System and method for reliable caching of database connections in a distributed application |
US20030204593A1 (en) * | 2002-04-25 | 2003-10-30 | International Business Machines Corporation | System and method for dynamically altering connections in a data processing network |
US7490162B1 (en) * | 2002-05-15 | 2009-02-10 | F5 Networks, Inc. | Method and system for forwarding messages received at a traffic manager |
US20090138448A1 (en) * | 2003-10-30 | 2009-05-28 | International Business Machines Corporation | Processing database queries by returning results of a first query to subsequent queries |
US20070061329A1 (en) * | 2005-09-12 | 2007-03-15 | Microsoft Corporation | Arbitrating an appropriate back-end server to receive channels of a client session |
US20100217793A1 (en) * | 2009-02-23 | 2010-08-26 | Research In Motion Limited | Method, system and apparatus for connecting a plurality of client machines to a plurality of servers |
Non-Patent Citations (1)
Title |
---|
"Speculative Execution in a Distributed File System", by Nightingale et al.. dated 10/26/2005 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150026213A1 (en) * | 2013-06-06 | 2015-01-22 | Oracle International Corporation | System and method for providing a shareable global cache for use with a database environment |
US9678995B2 (en) | 2013-06-06 | 2017-06-13 | Oracle International Corporation | System and method for planned migration of service connections |
US9720970B2 (en) | 2013-06-06 | 2017-08-01 | Oracle International Corporation | Efficient storage and retrieval of fragmented data using pseudo linear dynamic byte array |
US9747341B2 (en) * | 2013-06-06 | 2017-08-29 | Oracle International Corporation | System and method for providing a shareable global cache for use with a database environment |
US9785687B2 (en) | 2013-06-06 | 2017-10-10 | Oracle International Corporation | System and method for transparent multi key-value weighted attributed connection using uni-tag connection pools |
WO2016085497A1 (en) * | 2014-11-26 | 2016-06-02 | Hewlett Packard Enterprise Development Lp | Speculative execution of a stream of changes |
US10834055B2 (en) | 2016-08-29 | 2020-11-10 | Microsoft Technology Licensing, Llc. | Cross-tenant data leakage isolation |
US11080274B2 (en) * | 2017-01-17 | 2021-08-03 | Futurewei Technologies, Inc. | Best-efforts database functions |
US20180300367A1 (en) * | 2017-04-13 | 2018-10-18 | Sap Se | Adaptive metadata refreshing |
US10489381B2 (en) * | 2017-04-13 | 2019-11-26 | Sap Se | Adaptive metadata refreshing |
US11334558B2 (en) * | 2017-04-13 | 2022-05-17 | Sap Se | Adaptive metadata refreshing |
US10558641B2 (en) * | 2017-04-21 | 2020-02-11 | Microsoft Technology Licensing, Llc | Trigger system for databases using proxy |
US20180307717A1 (en) * | 2017-04-21 | 2018-10-25 | Microsoft Technology Licensing, Llc | Trigger System For Databases Using Proxy |
US20190075170A1 (en) * | 2017-09-06 | 2019-03-07 | Oracle International Corporation | System and method for high availability and load balancing in a database environment |
US10915506B2 (en) | 2017-09-06 | 2021-02-09 | Oracle International Corporation | System and method for row buffering in a database environment |
US11100058B2 (en) | 2017-09-06 | 2021-08-24 | Oracle International Corporation | System and method for connection concentration in a database environment |
US10909088B2 (en) * | 2017-09-06 | 2021-02-02 | Oracle International Corporation | System and method for high availability and load balancing in a database environment |
US20220229903A1 (en) * | 2021-01-21 | 2022-07-21 | Intuit Inc. | Feature extraction and time series anomaly detection over dynamic graphs |
US11928187B1 (en) * | 2021-02-17 | 2024-03-12 | Bank Of America Corporation | Media hosting system employing a secured video stream |
Also Published As
Publication number | Publication date |
---|---|
US8756217B2 (en) | 2014-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8756217B2 (en) | Speculative switch database | |
US8914390B2 (en) | Repetitive query recognition and processing | |
US10445349B2 (en) | Management of a database system | |
EP3285178B1 (en) | Data query method in crossing-partition database, and crossing-partition query device | |
US9081837B2 (en) | Scoped database connections | |
US10108645B1 (en) | Database monitoring for online migration optimization | |
US9465720B2 (en) | Methods and systems for internally debugging code in an on-demand service environment | |
US20190026335A1 (en) | Query engine selection | |
US7860822B1 (en) | Distributed aggregation mapping | |
US20110264704A1 (en) | Methods and Systems for Deleting Large Amounts of Data From a Multitenant Database | |
US11556536B2 (en) | Autonomic caching for in memory data grid query processing | |
US20110106853A1 (en) | Declarative model security pattern | |
US8566307B2 (en) | Database query governor with tailored thresholds | |
US9378235B2 (en) | Management of updates in a database system | |
US11520740B2 (en) | Efficiently deleting data from objects in a multi-tenant database system | |
WO2016048266A1 (en) | Tenant data mapping for multiple tenant cloud applications | |
US9672231B2 (en) | Concurrent access for hierarchical data storage | |
WO2024060956A1 (en) | Hybrid database management method and apparatus, hybrid database, and electronic device | |
US9619508B2 (en) | Speculative begin transaction | |
US20140149386A1 (en) | Database row access control | |
US9229969B2 (en) | Management of searches in a database system | |
US8903951B2 (en) | Speculative database authentication | |
US8812438B2 (en) | System, method and computer program product for synchronizing data using data identifying messages | |
EP3462341B1 (en) | Local identifiers for database objects | |
WO2021143199A1 (en) | Method and apparatus for searching log, computer device, and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: FACEBOOK, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PEEK, DANIEL NOTA;REEL/FRAME:026911/0676 Effective date: 20110913 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
AS | Assignment |
Owner name: META PLATFORMS, INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:FACEBOOK, INC.;REEL/FRAME:058553/0802 Effective date: 20211028 |