The present invention relates generally to computer and data science, computer software and hardware, computer and server memory, distributed server configuration, and data storage and retrieval management. More specifically, techniques for temporal optimization of data operations using distributed search and server management are described.
As various computer programs, applications, platforms, and other users and consumers of data increase, there are also a rising number of problems associated with managing large amounts of data. Processing, storage, and retrieval of large quantities of data, including that generated from social media and social networks, are areas of innovation that are struggling to keep pace with the rising demand for increasingly complex and sophisticated data storage. Searching and retrieving data stored in large amounts across distributed data networks that use extensive physical, virtual, and logical resources is becoming increasingly difficult to deploy and manage and incurs significant expense to users, consumers, and customers of data. In other words, conventional techniques for managing large amounts of data address the inherent issue of scalability by providing expensive solutions that typically involve adding more resources instead of managing existing resources for greater efficiency, lower latency, and higher reliability; these techniques are technologically limited and expensive in terms of time, labor, and financial cost. With data sources such as online commerce, social media, social networks, enterprises (i.e., large corporate, governmental, academic, institutional, military, financial, medical/healthcare, or other types of private data networks) generating increasingly large quantities of data, conventional techniques for processing, storing, and managing are failing to provide solutions that are able to support these data needs. Further, finding specific items within these large quantities of data is also increasingly difficult. Still further, there are individuals, entities, and organizations that wish to commercialize data, but due to the large quantities, are finding it increasingly difficult to communicate, market, sell, promote, or otherwise generate targeted messages to intended users. Conventional data management techniques store large amounts of data in a manner that do not facilitate rapid and accurate searching and retrieval. Conventional techniques typically rely upon increasing the amount and types of data storage servers (i.e., adding physical, virtual, or logical processing or storage resources) and, when combined with conventional partitioning techniques such as striping, are problematic because these techniques do not scale. Often conventional techniques are not only slow and inefficient when searching and retrieving data from databases, but these also typically result in generating server indices that are also massive in scale and difficult to search for specific data. More importantly, these conventional techniques are prohibitively expensive as data storage servers tend to be expensive, complex, and difficult to deploy, particularly for smaller enterprises and businesses with substantially lesser technology budgets and financing options. For hosted services such as computing cloud-based storage services, some of the complexities of deployment and management are lessened, but the expense of using these services continues to remain high as different classes of servers with different levels of performance also carry different prices. Faster performance typically requires higher cost, which is problematic as computer and data science continues to improve.
Thus, what is needed is a solution for managing, storing, and retrieving data without the limitations of conventional techniques.
Various embodiments or examples (“examples”) of the invention are disclosed in the following detailed description and the accompanying drawings:
Various embodiments or examples may be implemented in numerous ways, including as a system, a process, an apparatus, a user interface, or a series of program instructions on a computer readable medium such as a computer readable storage medium or a computer network where the program instructions are sent over optical, electronic, or wireless communication links. In general, operations of disclosed processes may be performed in an arbitrary order, unless otherwise provided in the claims.
A detailed description of one or more examples is provided below along with accompanying figures. The detailed description is provided in connection with such examples, but is not limited to any particular example. The scope is limited only by the claims and numerous alternatives, modifications, and equivalents are encompassed. Numerous specific details are set forth in the following description in order to provide a thorough understanding. These details are provided for the purpose of example and the described techniques may be practiced according to the claims without some or all of these specific details. For clarity, technical material that is known in the technical fields related to the examples has not been described in detail to avoid unnecessarily obscuring the description.
Referring back to
As shown in
As shown here, data may be queried from, retrieved, or stored to one or more of index database 120, database 122, social database 124, manifest files database 126, metadata database 128, or other types, schema, or structures, all, some, or none of which may be configured to store data in data structures such as a database, data store, data repository, data facility, data warehouse, or the like. Data may also be generated and received from or sent to one or more of client 130, mobile clients 132-134, computer 136, or other clients (not shown) that consume, use, or generate data.
As shown, client 130, mobile clients 132-134, and computer 136 are representative of types of clients and devices that may send data to or receive data from application 102 over data network 118. Data may be in any type of output format generated by an application (e.g., Twitter®, Snapchat®, Messenger®, instant messaging, email, text messaging, IRC, HTML, XML, Java®, or others, without limitation), transmitted over data networks 118 to application 102. Likewise, data may be stored in any type of format and, in some examples, classified as various types of data formats in one or more of index database 120, database 122, social database 124, manifest files database 126, metadata database 128, or other databases (not shown). For example, messaging data may be transmitted from a mobile tablet (e.g., mobile clients 132-134) over data network 118 to application 102. Application 102 may be configured to receive or send data directly or indirectly to/from any of modules 104-115 over data networks 116-118. In some examples, data received by or sent from application 102 may be transmitted over application programming interface 115, which may be configured to receive, convert, and transfer (i.e., send) data in any type of data format from clients 130-136 for processing by application 102 (or any of modules 104-114) before being stored to one or more of index database 120, database 122, social database 124, manifest files database 126, metadata database 128, or other databases (not shown). Similarly, data may be queried and retrieved from one or more of index database 120, database 122, social database 124, manifest files database 126, metadata database 128, or other databases (not shown) using, for example, API 115. Further, data may also be processed by one or more of modules 104-114 and transferred using API 115 over data network 116 (which may also be implemented using a single or multiple data networks) to one or more of index database 120, database 122, social database 124, manifest files database 126, metadata database 128, or other databases (not shown) to be stored at a location that may be indicated in a server or database index (hereafter “index”). Application 102 may also be configured to transfer data to/from one or more of clients 130-136 over API 115 to one or more of logic module 104, cluster manifest file manager 106, resource manager 108, indexer 110, search platform 112, or query manager 114 to perform processing or other functions on the data before transmitting data back to clients 130-136 or storing processed data (i.e., “processed data” refers to resultant data generated by one or more of logic module 104, cluster manifest file manager 106, resource manager 108, indexer 110, search platform 112, query manager 114, or application 102) on one or more of index database 120, database 122, social database 124, manifest files database 126, metadata database 128. For example, a stream of “social data” (e.g., data generated by a social media application or network such as those described above or others, without limitation) may be received as input to application 102 over data network 118. Social data, in some examples, may refer to data generated from any type of application, system, device, platform, program, or other set of computer instructions that are intended for use in enabling data transfer and communication between endpoints used by and for social purposes such as the creation, management, or participation in a computing or online community. As used herein, “online” may refer to any type of computing environment in which endpoints (e.g., clients 130-136) are configured to transfer data between each other, either directly or indirectly over one or more data networks (e.g., data networks 116-118). As an example, social data may be generated from social media (e.g., content that is transmitted digitally to/from various types of devices such as posting digital still images, video and audio files, text-based content such as editorials, news feeds, entertainment-related information, and others, without limitation or restriction), social networks (e.g., data networks that are purposes-configured and deployed to transfer social data), or applications that can be used for purposes such as social media, among others. Further, social data is an example of data that application 102 may be executed upon, but is neither a limitation nor a restriction on the types of data that may be processed by application 102.
Referring back to
Here, application 102 is configured with logic module 104, cluster manifest file manager 106, resource manager 108, indexer 110, search platform 112, and query manager 114. In some examples, application 102 may be configured differently than is shown with more, fewer, or different modules apart from those shown and described (i.e., logic module 104, cluster manifest file manager 106, resource manager 108, indexer 110, search platform 112, and query manager 114). As shown, logic module 104, cluster manifest file manager 106, resource manager 108, indexer 110, search platform 112, and query manager 114 may be implemented as software, hardware, firmware, or a combination thereof, without limitation or restriction to any computer programming or formatting language, device, type, or configuration. However, here, one or more of logic module 104, cluster manifest file manager 106, resource manager 108, indexer 110, search platform 112, and query manager 114 may be implemented as software modules that are configured to communicate with each other module over a local or distributed data network. In some examples, application 102 and logic module 104, cluster manifest file manager 106, resource manager 108, indexer 110, search platform 112, and query manager 114 may be implemented as part of a software platform where each module may be encoded using, for example, Java®, Python™, JavaScript (also referred to as JS), binary encoding, machine assembly, COBOL, HTML, xHTML, XML, or any other type of computer programming and formatting languages.
Here, logic module 104 is configured to provide processes and algorithms for various features and functionality, including providing control functionality for cluster manifest file manager 106, resource manager 108, indexer 110, search platform 112, and query manager 114. In some examples, logic module 104 may be a set of rules that are manually input to provide parameters, thresholds, and other quantitative restrictions or comparative statements to help determine actions to be taken, which of cluster manifest file manager 106, resource manager 108, indexer 110, search platform 112, or query manager 114 to invoke, service calls to make (e.g., over API 115), or any other functions that require decisions or a determinant action to be taken. In other examples, logic module 104 may be implemented not as a rules-based engine or module, but instead as a heuristic, semantic, or context evaluation set of algorithms that evaluate incoming data from, for example, clients 130-136 or elsewhere (e.g., index database 120, database 122, social database 124, manifest files database 126, metadata database 128, or other data storage or processing resources over data networks such as data networks 116-118) in order to parse, evaluate, analyze, or perform other functions provided by application 102. As shown, application 102 is configured with several modules that provide different platform functions for temporally managing data from various sources in order to optimize or improve the efficiency of searching and retrieval in response to queries as well as reducing latency in returning data in response to a query, accurately and efficiently. For example, if social data (not shown) is generated from an input or “stream” of social data coming from one or more of clients 130-136, it may be received at API 115 and further processed by resource manager 108, which may be configured to manage various types of storage resources (e.g., local, distributed, networked, cloud-based, and the like) to determine the technical configuration and location of the social data to be stored (e.g., in social database 124). Resource manager 108, in some examples, may also exchange data with one or more other modules (e.g., cluster manifest file manager 106, indexer 110, search platform 112, query manager 114, or API 115) to perform other functions. As shown, resource manager 108, in some examples, can be used cooperatively with cluster manifest file manager 106 and indexer 110 in order to determine a location that has been temporally-optimized (as described in further detail below) for subsequent search and retrieval in response to query requests (hereafter “query” or “request,” which may be used substantially synonymously or interchangeably with each other to indicate a request for data in response to a request formatted in accordance with a query language (without limitation or restriction to any particular language) from a given location and resource (e.g., server or group of logically or physically coupled (directly, indirectly, or remotely) servers).
As shown, cluster manifest file manager 106 may be configured to receive instructions from logic module 104 and/or resource manager 108 to configure one or more databases intended to store processed data generated from data received by application 102 from, for example, clients 130-136. Databases may include index database 120, database 122, social database 124, manifest files database 126, metadata database 128, and others, without limitation or restriction to those shown and described. In some examples, storage and/or processing resources such as index database 120, database 122, social database 124, manifest files database 126, metadata database 128, and others may be configured by cluster manifest file manager 106 to create a managed system of resources that can store data processed by application 102 by optimizing the storage and retrieval of data (i.e., increasing the speed of execution of program instructions to execute a query, delete, add, or write operation in one or more of index database 120, database 122, social database 124, manifest files database 126, metadata database 128, or other database(s), without limitation). As described in further detail below, cluster manifest file manager 106 is configured to provide program instructions from application 102 to each of index database 120, database 122, social database 124, manifest files database 126, metadata database 128, or other databases (not shown) in order to configure and partition by establishing shards and slicing each storage server in order to ensure that queries, when received by application 102, are executed and sent responses by minimalizing search time. Distributed search platforms or applications such as Solr™ the Apache Lucene™ Foundation, or others may be used, in some examples, to implement search platform 112 to provide data searching functionality. In other examples, different search platforms or applications may be used and are not limited to the examples shown and described. Here, search platform 112 may be configured to receive a query from API 115 and, using the techniques described herein, “rewrite” (i.e., structure and configure a query request received by application 102 for a given data schema, without limitation or restriction to any particular data storage facility or schema shown or described) a query and execute it against a given data structure (i.e., database and data schema such as those implemented by one or more of index database 120, database 122, social database 124, manifest files database 126, metadata database 128, and others).
Referring back to cluster manifest file manager 106, in some examples, one or more of index database 120, database 122, social database 124, manifest files database 126, and metadata database 128 may be configured in one or more host groups. In some examples, host group configuration may be performed using a manifest file (not shown), which includes various server parameters, ports, services, rules, thresholds, limitations, restrictions, data transmission protocols, policies, addresses, partitioning (i.e., identifying, allocating, and/or configuring, among other functions shards, stripes, and partitions of servers), or any other setting that may be used to determine how to allocate storage resources for storing data received from and retrieved by application 102. Further, as described herein, a manifest file may be used to configure one or more host groups in order to partition storage resources to temporally optimize data processing and storage functions.
In some examples, a manifest file may be used to configure a given host group to store data that is aged within a give time range. A time characteristic such as a time range may be measured in seconds, minutes, hours, days, weeks, months, or any other measurement of time that may be useful for server configuration. As an example, a host group may be configured using a manifest file to identify a given resource to store data and/or processed data generated between t=0 (i.e., time of initial generation (i.e., the time of posting, transmission, sent, or the like)) and t=86400 seconds, which may be a time range for saving data occurring in the first twenty-four (24) hours following data generation. As used herein, a “time characteristic” may refer to a time range, a time bucket, a bucket of time, a time bracket, or any expression that is used to encompass a discrete period of time, regardless of the actual unit of time measurement. Continuing the example described above, for data that “ages” or is “aged” past the first twenty-hour (24) hours, a different host group may be allocated for movement and storage of the data. In other words, as data to be stored in one or more of index database 120, database 122, social database 124, manifest files database 126, and metadata database 128 ages, the data may be moved from one host group to another; from a device or resource of a given server class to another device or resource of a different server class. This “bucketing” or sharding of data permits faster query responses for rewritten queries generated by query manager 114 because indexer 110 can return a location to be searched by search platform 112 for the requested (i.e., target) data to be returned. Further detail regarding temporal optimization of server resources for processing, storing, and retrieving data (e.g., social data, among others, without limitation or restriction) is described in greater detail below.
As described herein, any of index database 120, database 122, social database 124, manifest files database 126, and metadata database 128 may be configured using one or more manifest files to configure for temporal optimization of data processing, storage, and retrieval. In other words, database 122 may include multiple storage servers configured to store data for different time ranges and, as stored data (e.g., data and processed data that has been directed for storage by application 102) ages, it may be moved between different partitions (e.g., shards, slices, stripes, and the like), host groups, and server classes in order to provide storage and retrieval functionality that is optimized to retrieve recently-generated data at higher data retrieval speeds using servers with data retrieval speeds and technologies that are faster and more expensive. However, by storing data based on aging, data storage can be optimized by targeting data within given time ranges onto different host groups and different server classes, each of which may have different costs associated with the use of servers assigned to these classes. In so doing, data storage is optimized to not only optimize storage and processor resource costs, but also minimize latency and increase accuracy of data retrieval.
In some examples, server configuration using a manifest file may be further performed by determining, for a given host group, a server type and class to be used to implement the host group. In the example above, data generated more recently (i.e., not aging significantly since initial generation from clients 130-136) may be of greater interest to a user or community of users. As social media applications and networks can generate large quantities of data and numerous discrete data files (e.g., posts, “tweets,” messages, and the like) resulting in millions of users generating query requests for a given text, still image, audio, or video file nearly simultaneously, the techniques described herein for host group configuration (i.e., using a manifest file) can partition processing and storage resources based on time characteristics and assign different server classes having different access speeds that are allocated amongst data that is more likely to be requested in large numbers of query requests as opposed to aged data that may be stored on other servers or storage resources that have slower (i.e., and less expensive) server classes assigned. Using the described techniques, system 100 is capable of responding to large numbers of queries due to increased read-write-access capabilities (e.g., solid state memory technologies providing faster addressing speeds than mechanically-addressed memory technologies, quantum computing processors relative to conventional semiconductor, silicon-based memory technologies, and others) and provide increased performance by assigned to faster processing, storage, and retrieval resources more recent data (e.g., data from clients 130-136 within the first twenty-four (24) hours since initial generation)). Further, by periodically reconciling processing and storage resources, data may be moved between different server classes as aging increases, or other parameters or characteristics, in addition to time characteristics, change. In some examples, a periodicity for performing reconciliation may also be indicated in a manifest file. Thus, continuing the above example, when a query is received for recent data, query manager 114 may be configured to parse, evaluate, and re-write a given request into a rewritten query that is run against those servers identified by indexer 110 as being assigned to data stored in the first twenty-four (24) hours. As data is stored, in one or more of index database 120, database 122, social database 124, manifest files database 126, and metadata database 128, indexer 110 may be configured to modify a server index (hereafter “index”) to specify a location, including host group, server, shard, slice, partition, server class, or other parameter to be used by search platform 112 in executing a query. As shown, indices for given servers may be stored in index database 120, among others. Data (e.g., actual data or copies thereof as generated by clients 130-136) may be stored in one or more databases such as database 120 or others. Different types of data may also be segmented, isolated, or otherwise separated and stored in different host groups using the techniques described herein. For example, data generated from social media applications and networks may be stored as “social data” in social database 124. Further examples of using different data storage resources may also include storing manifest files in manifest files database 126 and metadata in metadata database 128, among others. As described herein, metadata may refer to descriptive data that is generated during the parsing and evaluation of data from clients 130-136 by application 102 or any modules or elements (e.g., logic module 104, cluster manifest file manager 106, resource manager 108, indexer 110, search platform 112, and query manager 114, among others that may not be shown or described in
In some examples, a process (e.g., an algorithm or set of algorithms that may or may not be logically related to update a given state of stored data and storage resources) known as reconciliation (as described in greater detail below) may be performed by system 100 and application 102, index(s) are updated by indexer 110 to reflect modified locations and any parameters such as those specified above. Various types of data operations may be performed in order to “reconcile” a previously stored version of a data file with a more recently received data file by application 102. In some examples, a master version of a data file (not shown) and a copy of a data file stored (not shown), for example, in database 122, may be stored on a server shard located on a device of a server class that has the highest data retrieval rate in system 100. A newly received data file may be evaluated by application 102 to determine that one or more data operations (e.g., add, delete, read, write, transfer, or others) is to be performed based on, for example, time characteristics that indicate the data file is to be transferred to another host group in which a different server class is used for data storage and retrieval. As described in greater detail below, reconciliation may be used to manage how data files are stored on one or more of index database 120, database 122, social database 124, manifest files database 126, and metadata database 128, among others. In other examples, system 100 and the above-described elements may be implemented differently, with variations in function, order, procedure, and process, without limitation to any of the examples or accompanying descriptions.
In some examples, application 202 using API 115 may be in data communication with one or more data processing and/or storage resources (not shown) over one or more data networks (not shown). Using a manifest file retrieved from manifest files database 126 (not shown), one or more host groups can be configured by application 202 using the techniques described herein. For example, shard manager 214 can be configured to determine how, across a number of storage resources (as identified by resource manager 108 (
As shown, class manager 216 may be configured as a software, hardware, firmware, circuitry, or combination thereof and used as an individual component or element of application 202 to assign or determine the assignment of particular classes of servers to host groups being managed by application 202. For example, if two host groups are each assigned a server class, server class 1 may be assigned to a host group as solid state memory for fast data access, retrieval, and data operations for data to be stored that was originally generated in the last 12 hours. Continuing the above example, data that has aged past 12 hours (e.g., 12 hours and 1 second or longer) may be moved to a different host group using older, mechanically-addressed memory technology (e.g., disk drives, and the like). The location of data stored on either of the above-referenced host groups may be identified to query manager 114 (
As described herein, class manager 216 may be configured to associate, assign, track, or identify which classes of servers are assigned to various host groups. Data transferred between class manager 216 and cluster/host group module 220 may be used by application 202 to implement a management system of various host groups and clusters of servers in order to deploy the techniques described herein. As used herein, clusters of servers may be used interchangeably with “server cluster” or “cluster” and is intended to refer to a computing cluster or node of servers that are logically assigned together as a group, which may include multiple instances of physical or virtual machines or servers, partitions, shards, slices, or the like. Further, cluster/host group module 220 may also exchange data with reconciliation module 222 in order to reconcile (i.e., perform reconciliation) data stored throughout various host groups and/or server clusters if, in some examples, new incoming data (e.g., input data streams for various social media, social networks, or social media-oriented applications, and the like) indicate that data previously stored has changed. As an example, when a change is detected (e.g., an older posted video or image is replaced with a newer version, an news article or feed is replaced with a recent news update, an audio file previously stored (e.g., database 122) has been edited to be replaced by a newer version of the audio file, and the like), cluster/host group module 220 may send data as a command in order to trigger or initiate reconciliation module 222 to perform one or more data operations in order to effect the change. As used herein, “data operation” may refer to any type of computer programming or formatting operation that results in data being added, deleted, modified, replaced, changed, reordered, joined, shifted, or the like, without limitation or restriction to any particular type of database or data schema operation. As described in greater detail below, reconciliation may be performed on a schedule, intermittently, infrequently, frequently, periodically, rapidly, or on any type of schedule or random occurrence, without limitation or restriction. Reconciliation, in some examples, is used to ensure that host groups and clusters of servers managed by application 202 store updated data and data files, or copies thereof, in order to provide accurate and updated information in response to queries. Various types of programming and formatting languages may be used to implement reconciliation module 222 (or any of the elements shown in
Referring back to
In some examples, data or data files accessed, stored, or retrieved by application 202 from various sources (e.g., clients 130-136 (
As shown in
In some examples, reconciliation module 222 may be used (for example, in a Scala-implemented architecture) to perform various data operations on data stored on one or more of clusters 312-316 and servers 318-332. Data operations such as those described above may be performed by reconciliation module 222 when logic module 204 (
In some examples, query data 506 may be received by platform 508 and, when received, may represent a query request initiated by a client (e.g., clients 130-136 (
In some examples, platform 508 may rewrite or write a new query (not shown) using parsed data from query data 506 and send a rewritten request that has been targeted to a given host group based on determining a time associated with the requested data (i.e., stored data to be returned in response to the initial query). As an example, host group data 512-514 may include rewritten queries, queries generated by platform 508, or other data or signals that, when sent by application 508, or any of the elements shown and described herein, is used to executed one or more data operations on servers assigned to host groups, but which are targeted for execution based on temporal optimization and identification of time ranges in which queried data is assigned. In other words, host group data 512-514 may be issued to retrieve stored data from a given host group if, based on parsing query data 506, a given host group or servers assigned to a host group have been partitioned to encompass the time range within which the requested stored data (i.e., data may be stored on a server, shard, slice, stripe, or other type of partition based on a time of when the data was generated, transmitted, received, or otherwise assigned a given time).
Referring back to
As shown, for example, at time t=0 data 532 is stored on server 534, which may be implemented as a class “i2” server. As used herein, arbitrary designation of servers are used for purposes of illustration and the exemplary designations of server classes (e.g., i2, r3, r(n)) are not intended to be specific, limiting, or restrictive, and other server classes apart from those shown and described may be used. As used herein, “server class” or “class” may refer to a type or categorization of processing or storage server based on various attributes and characteristics such as memory technology type (e.g., solid state, random access memory (RAM), read only memory (ROM), disk drive, quantum computing, semiconductor, or others), data transfer rates, storage capacity or volume, compatibility (e.g., for use in arrays such as a redundant array of independent disks (“RAID”)), or others, without limitation or restriction to any particular or specific type of class.
Here, as data 532 ages towards time t=a, data 532 may be retrieved from storage server 534 as a copy, deleted from server 534, and stored on server 536 until time t=b. At t=b, data 532 may be moved server 536 to server 538, which may be implemented as a different class of server (e.g., r3) until t=c, at which time data 532 may be moved in further data operations, as illustrated by server 542, which is representative of any number of servers and classes of servers using the techniques described herein. As used herein movement of data may refer to data retrieval operations to remove data from a location on a server, performing another data operation to delete the data from the location at the server, and performing a further data operation to write (i.e., save) the data to a new location on a different server; although the order of deleting and writing may be performed synchronously, simultaneously, in reverse order, or in no particular order. In other examples, the above-described data model 530 and corresponding flow description may be varied in process, order, or other aspects, without limitation or restriction to the examples shown and described.
Referring back to
In some examples, after receiving data from an API, the data may be parsed by application 102 (
Referring back to
Alternatively, if process 720 determines there is a single class of servers, data received by application 102 (
In some examples, determining the type of change that has occurred to previously stored data may include identifying one or more data operations to be performed on stored data. Once the type(s) of change has been determined and one or more data operations associated with enacting the indicated change(s) has also been determined, a server index may be referenced to determine a location associated with the targeted stored data. After determining the location of the stored data targeted for change (i.e., modification) by referencing a pointer, address, or other locating information included within a data structure configured as a server index (“index”), the associated data operation(s) are performed (748). As used herein, data operation may refer to any type of algorithmic, digital, software, method, or process that can modify data, regardless of programming language, format, or application architectural level (e.g., various levels of an application “stack” as identified in various types of models such as the Open Systems Interconnect (“OSI”) model).
In some examples, performance of a data operation may include identifying a location of stored data indicated for change by received data (i.e., data received after the target data was stored), copying the stored data in its unmodified state to a cache, buffer, or temporary memory location, performing the data operation on the copy of the stored data, and storing the modified stored data to the original location from which the data was retrieved or to a different location, if specified by data received by application 102 (
After identifying a time characteristic associated with the stored data sought to be retrieved in response to a query, in some examples, a location is determined to identify one or more server resources on which the stored data is housed (810). Upon identifying a location(s) of the stored data to be retrieved, application 102 (
After configuring cluster(s), host group(s), server resources, and shards, a query requesting stored data may be rewritten in the data schema, format, or programming or formatting language of databases installed the elements set forth above (832). In some examples, queries may also be rewritten in order to be executed using a given search facility, application, platform, or system. For example, queries may be rewritten by query manager 114 (
In some examples, when a rewritten query is executed by search platform 114 (e.g., in Solr or another enterprise-level search language or format), a copy of the data being sought by the query is retrieved (850). Once retrieved, the copy of the requested data is returned in response to the request in a format and language (e.g., HTML, XML, Java®, JavaScript, command line interface, binary, or any other type of programming or formatting language that may be used to display data) to the client that initiated the query (852). In other examples, the above-described process 840 may be varied in process, order, steps, sub-processes, or other aspects, without limitation or restriction to the examples shown and described.
Here, the value determined from a received query is used to reference an index to determine a match to locate stored data to be returned in response to a query (864). In some examples, a determination is then made to determine if a value in the index matches the value parsed from the original query (868). If not match is found, an error message may be returned and the process ends (870). If a match is found, then the matched value is converted into the data schema for the server resource on which the requested data is stored (872). The requested data is then retrieved and returned in response to the original query (874). In other examples, the above-described process 860 may be varied in process, order, steps, sub-processes, or other aspects, without limitation or restriction to the examples shown and described.
In some examples, when a value parsed from a query does not have a corresponding matching value in an index for a server resource(s) assigned to a host group assigned to a time range in which the requested data is stored, a master copy of the requested data may be located using metadata parsed from the original query. For example, a query may be parsed to identify various types and formats of metadata that may be used to identify data requested. Using the metadata, a search may be performed of the host group and associated server resources to locate a master copy of the requested data (882). Once located, a copy of the master data (or master data file(s)) may be retrieved (884). Once retrieved, in some examples, a data operation to reconcile the stored data may be performed by storing a copy of the master data at the location indicated by the index (886). After storing the copy of the master data at the location where the queried data should have been stored (i.e., but was damaged or deleted), another copy of the master data is returned in response to the original query (888). In some examples, the above-described process 880 may be used to replace, modify, fix, replace, address, write, or otherwise save data to a location that may have been corrupted for various reasons, including, but not limited, to power outages, disasters, catastrophic loss, server damage, corrupted memory or data structures, or others. In other examples, when data stored on a server resource does not match a state indicated by an index, process 880 may be used to restore stored data to an uncorrupted or undamaged state. In other examples, the above-described process 880 may be varied in process, order, steps, sub-processes, or other aspects, without limitation or restriction to the examples shown and described.
According to some examples, computing system 900 performs specific operations by processor 904 executing one or more sequences of one or more instructions stored in system memory 906. Such instructions may be read into system memory 906 from another computer readable medium, such as static storage device 908 or disk drive 910. In some examples, hard-wired circuitry may be used in place of or in combination with software instructions for implementation.
The term “computer readable medium” refers to any tangible medium that participates in providing instructions to processor 904 for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as disk drive 910. Volatile media includes dynamic memory, such as system memory 906.
Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, or any other medium from which a computer can read.
Instructions may further be transmitted or received using a transmission medium. The term “transmission medium” may include any tangible or intangible medium that is capable of storing, encoding or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible medium to facilitate communication of such instructions. Transmission media includes coaxial cables, copper wire, and fiber optics, including wires that comprise bus 902 for transmitting a computer data signal.
In some examples, execution of the sequences of instructions may be performed by a single computer system 900. According to some examples, two or more computing system 900 coupled by communication link 920 (e.g., LAN, PSTN, or wireless network) may perform the sequence of instructions in coordination with one another. Computing system 900 may transmit and receive messages, data, and instructions, including program, i.e., application code, through communication link 920 and communication interface 912. Received program code may be executed by processor 904 as it is received, and/or stored in disk drive 910, or other non-volatile storage for later execution. In other examples, the above-described techniques may be implemented differently in design, function, and/or structure and are not intended to be limited to the examples described and/or shown in the drawings.
Although the foregoing examples have been described in some detail for purposes of clarity of understanding, the above-described inventive techniques are not limited to the details provided. There are many alternative ways of implementing the above-described invention techniques. The disclosed examples are illustrative and not restrictive.
Number | Name | Date | Kind |
---|---|---|---|
6041311 | Chislenko et al. | Mar 2000 | A |
6146026 | Ushiku | Nov 2000 | A |
6385611 | Cardona | May 2002 | B1 |
6684239 | Flepp et al. | Jan 2004 | B1 |
6742032 | Castellani et al. | May 2004 | B1 |
6871232 | Curie et al. | Mar 2005 | B2 |
7032030 | Codignotto | Apr 2006 | B1 |
7222156 | Gupta et al. | May 2007 | B2 |
7409710 | Uchil et al. | Aug 2008 | B1 |
7606865 | Kumar et al. | Oct 2009 | B2 |
7644057 | Nelken et al. | Jan 2010 | B2 |
7702541 | Black et al. | Apr 2010 | B2 |
7725492 | Sittig et al. | May 2010 | B2 |
7751620 | Cosoi | Jul 2010 | B1 |
7756926 | Tseng et al. | Jul 2010 | B2 |
7792948 | Zhao et al. | Sep 2010 | B2 |
7818758 | Bonet et al. | Oct 2010 | B2 |
7979369 | Grenier et al. | Jul 2011 | B2 |
8006187 | Bailey et al. | Aug 2011 | B1 |
8027931 | Kalaboukis | Sep 2011 | B2 |
8082308 | Filev | Dec 2011 | B1 |
8131745 | Hoffman et al. | Mar 2012 | B1 |
8171128 | Zuckerberg et al. | May 2012 | B2 |
8200527 | Thompson et al. | Jun 2012 | B1 |
8225376 | Zuckerberg et al. | Jul 2012 | B2 |
8286154 | Kaakani et al. | Oct 2012 | B2 |
8321300 | Bockius et al. | Nov 2012 | B1 |
8412657 | Grenier et al. | Apr 2013 | B2 |
8437369 | Shaikli | May 2013 | B2 |
8505069 | Solodovnikov et al. | Aug 2013 | B1 |
8606792 | Jackson et al. | Dec 2013 | B1 |
8615442 | Kapur et al. | Dec 2013 | B1 |
8752041 | Akiyoshi et al. | Jun 2014 | B2 |
8769417 | Robinson et al. | Jul 2014 | B1 |
8825515 | Hanson | Sep 2014 | B1 |
8886580 | Grenier et al. | Nov 2014 | B2 |
8892524 | Lee et al. | Nov 2014 | B1 |
8972428 | Dicker et al. | Mar 2015 | B2 |
9021361 | Pettinati et al. | Apr 2015 | B1 |
9105044 | Wu | Aug 2015 | B2 |
9131382 | Johns | Sep 2015 | B1 |
9141997 | Gaedcke et al. | Sep 2015 | B2 |
9143478 | Ramaswamy | Sep 2015 | B2 |
9229702 | Kapulkin et al. | Jan 2016 | B1 |
9282098 | Hitchcock et al. | Mar 2016 | B1 |
9311683 | Saylor et al. | Apr 2016 | B1 |
9325696 | Balfanz et al. | Apr 2016 | B1 |
9338186 | Wollenstein et al. | May 2016 | B2 |
9378295 | Marra et al. | Jun 2016 | B1 |
9483802 | Gaedcke et al. | Nov 2016 | B2 |
9501746 | Prakash | Nov 2016 | B2 |
9509742 | Gordon | Nov 2016 | B2 |
9519723 | Lorenz et al. | Dec 2016 | B2 |
9596206 | Bueno et al. | Mar 2017 | B2 |
9619531 | Wu | Apr 2017 | B2 |
9756098 | Kazerani et al. | Sep 2017 | B2 |
9787664 | Subbiah et al. | Oct 2017 | B1 |
9800639 | Gordon | Oct 2017 | B2 |
9953063 | Spasojevic et al. | Apr 2018 | B2 |
10084838 | Gordon et al. | Sep 2018 | B2 |
10142386 | Gordon | Nov 2018 | B2 |
10264042 | Gordon | Apr 2019 | B2 |
10284723 | Neuer, III et al. | May 2019 | B1 |
10855657 | Senftleber et al. | Dec 2020 | B2 |
10931540 | Davis et al. | Feb 2021 | B2 |
20010025253 | Heintz et al. | Sep 2001 | A1 |
20010037469 | Gupta et al. | Nov 2001 | A1 |
20010042087 | Kephart et al. | Nov 2001 | A1 |
20010047290 | Petras et al. | Nov 2001 | A1 |
20020010746 | Jilk et al. | Jan 2002 | A1 |
20020049793 | Okumura et al. | Apr 2002 | A1 |
20020070953 | Barg et al. | Jun 2002 | A1 |
20020105545 | Carter et al. | Aug 2002 | A1 |
20020144156 | Copeland | Oct 2002 | A1 |
20030005103 | Narad et al. | Jan 2003 | A1 |
20030028525 | Santos et al. | Feb 2003 | A1 |
20030078959 | Yeung et al. | Apr 2003 | A1 |
20030128203 | Marshall et al. | Jul 2003 | A1 |
20030135565 | Estrada | Jul 2003 | A1 |
20030187871 | Amano et al. | Oct 2003 | A1 |
20030225850 | Teague | Dec 2003 | A1 |
20040049673 | Song et al. | Mar 2004 | A1 |
20040073666 | Foster et al. | Apr 2004 | A1 |
20040133697 | Mamaghani et al. | Jul 2004 | A1 |
20040174397 | Cereghini et al. | Sep 2004 | A1 |
20050060643 | Glass et al. | Mar 2005 | A1 |
20050074126 | Stanko | Apr 2005 | A1 |
20050132348 | Meulemans et al. | Jun 2005 | A1 |
20050206644 | Kincaid | Sep 2005 | A1 |
20050283614 | Hardt | Dec 2005 | A1 |
20060010215 | Clegg et al. | Jan 2006 | A1 |
20060036685 | Canning et al. | Feb 2006 | A1 |
20060129602 | Witriol et al. | Jun 2006 | A1 |
20060143307 | Codignotto | Jun 2006 | A1 |
20060155581 | Eisenberger et al. | Jul 2006 | A1 |
20060185021 | Dujari et al. | Aug 2006 | A1 |
20060206578 | Heidloff et al. | Sep 2006 | A1 |
20060294196 | Feirouz et al. | Dec 2006 | A1 |
20070083536 | Darnell et al. | Apr 2007 | A1 |
20070136354 | Chen | Jun 2007 | A1 |
20070171716 | Wright et al. | Jul 2007 | A1 |
20070240119 | Ducheneaut et al. | Oct 2007 | A1 |
20070282800 | England et al. | Dec 2007 | A1 |
20070286528 | Podilchuk | Dec 2007 | A1 |
20070289006 | Ramachandran et al. | Dec 2007 | A1 |
20080005284 | Ungar et al. | Jan 2008 | A1 |
20080033776 | Marchese | Feb 2008 | A1 |
20080034058 | Korman et al. | Feb 2008 | A1 |
20080040673 | Zuckerberg et al. | Feb 2008 | A1 |
20080103906 | Singh | May 2008 | A1 |
20080109245 | Gupta | May 2008 | A1 |
20080109491 | Gupta | May 2008 | A1 |
20080120379 | Malik | May 2008 | A1 |
20080126476 | Nicholas et al. | May 2008 | A1 |
20080133488 | Bandaru et al. | Jun 2008 | A1 |
20080178125 | Elsbree et al. | Jul 2008 | A1 |
20080189406 | Shen | Aug 2008 | A1 |
20080201344 | Levergood et al. | Aug 2008 | A1 |
20080215591 | Howard et al. | Sep 2008 | A1 |
20080221870 | Attardi et al. | Sep 2008 | A1 |
20080225848 | Pilon et al. | Sep 2008 | A1 |
20080263603 | Murray et al. | Oct 2008 | A1 |
20080294680 | Powell et al. | Nov 2008 | A1 |
20080306830 | Lasa et al. | Dec 2008 | A1 |
20090013043 | Tan | Jan 2009 | A1 |
20090043852 | Weir et al. | Feb 2009 | A1 |
20090089657 | Davis | Apr 2009 | A1 |
20090106080 | Carrier et al. | Apr 2009 | A1 |
20090132311 | Klinger et al. | May 2009 | A1 |
20090138472 | MacLean | May 2009 | A1 |
20090144723 | Hartin et al. | Jun 2009 | A1 |
20090157667 | Brougher et al. | Jun 2009 | A1 |
20090157708 | Bandini et al. | Jun 2009 | A1 |
20090157899 | Gagliardi et al. | Jun 2009 | A1 |
20090158265 | Davis et al. | Jun 2009 | A1 |
20090177670 | Grenier et al. | Jul 2009 | A1 |
20090181649 | Bull et al. | Jul 2009 | A1 |
20090210282 | Elenbaas et al. | Aug 2009 | A1 |
20090249451 | Su et al. | Oct 2009 | A1 |
20090292608 | Polachek | Nov 2009 | A1 |
20090292722 | Ayloo | Nov 2009 | A1 |
20090300036 | Nagasaki | Dec 2009 | A1 |
20100071052 | Mao et al. | Mar 2010 | A1 |
20100082503 | Kantak et al. | Apr 2010 | A1 |
20100106730 | Amin Ian et al. | Apr 2010 | A1 |
20100119053 | Goeldi | May 2010 | A1 |
20100121707 | Goeldi | May 2010 | A1 |
20100121843 | Goeldi | May 2010 | A1 |
20100153516 | Weinberg et al. | Jun 2010 | A1 |
20100169148 | Oberhofer et al. | Jul 2010 | A1 |
20100205663 | Ward et al. | Aug 2010 | A1 |
20100223341 | Manolescu et al. | Sep 2010 | A1 |
20100246797 | Chavez et al. | Sep 2010 | A1 |
20100250683 | Hoyne et al. | Sep 2010 | A1 |
20100274732 | Grinchenko et al. | Oct 2010 | A1 |
20100281258 | Andress et al. | Nov 2010 | A1 |
20100287512 | Gan et al. | Nov 2010 | A1 |
20100293560 | Bland et al. | Nov 2010 | A1 |
20100306122 | Shaffer | Dec 2010 | A1 |
20100306528 | Andress et al. | Dec 2010 | A1 |
20100312769 | Bailey et al. | Dec 2010 | A1 |
20110004922 | Bono et al. | Jan 2011 | A1 |
20110055217 | Kamel et al. | Mar 2011 | A1 |
20110055264 | Sundelin et al. | Mar 2011 | A1 |
20110077988 | Cates et al. | Mar 2011 | A1 |
20110113041 | Hawthorne et al. | May 2011 | A1 |
20110119593 | Jacobson et al. | May 2011 | A1 |
20110125826 | Erhart et al. | May 2011 | A1 |
20110144801 | Selker et al. | Jun 2011 | A1 |
20110153603 | Adiba et al. | Jun 2011 | A1 |
20110197146 | Goto et al. | Aug 2011 | A1 |
20110212430 | Smithmier et al. | Sep 2011 | A1 |
20110219087 | Jorasch et al. | Sep 2011 | A1 |
20110246513 | Covannon et al. | Oct 2011 | A1 |
20110283366 | Kwon et al. | Nov 2011 | A1 |
20110289574 | Hull et al. | Nov 2011 | A1 |
20110302653 | Frantz et al. | Dec 2011 | A1 |
20120036080 | Singer et al. | Feb 2012 | A1 |
20120054135 | Salaka et al. | Mar 2012 | A1 |
20120076367 | Tseng | Mar 2012 | A1 |
20120077158 | Jastrzembski et al. | Mar 2012 | A1 |
20120089706 | Collins et al. | Apr 2012 | A1 |
20120095861 | Feng et al. | Apr 2012 | A1 |
20120102021 | Hill et al. | Apr 2012 | A1 |
20120117059 | Bailey et al. | May 2012 | A1 |
20120131653 | Pasquero et al. | May 2012 | A1 |
20120158632 | Grenier et al. | Jun 2012 | A1 |
20120195422 | Famous | Aug 2012 | A1 |
20120208568 | Cooley | Aug 2012 | A1 |
20120210119 | Baxter et al. | Aug 2012 | A1 |
20120232953 | Custer | Sep 2012 | A1 |
20120254321 | Lindsay et al. | Oct 2012 | A1 |
20120265806 | Blanchflower et al. | Oct 2012 | A1 |
20120271729 | Vincelette et al. | Oct 2012 | A1 |
20120284155 | Holten et al. | Nov 2012 | A1 |
20120290605 | Ickman et al. | Nov 2012 | A1 |
20120303659 | Erhart et al. | Nov 2012 | A1 |
20120317198 | Patton et al. | Dec 2012 | A1 |
20130007121 | Fontenot et al. | Jan 2013 | A1 |
20130018957 | Parnaby et al. | Jan 2013 | A1 |
20130024522 | Pierre et al. | Jan 2013 | A1 |
20130050747 | Cok et al. | Feb 2013 | A1 |
20130066876 | Raskino et al. | Mar 2013 | A1 |
20130110946 | Bradshaw | May 2013 | A1 |
20130116044 | Schwartz | May 2013 | A1 |
20130138428 | Chandramouli et al. | May 2013 | A1 |
20130159472 | Newton et al. | Jun 2013 | A1 |
20130198260 | Dow et al. | Aug 2013 | A1 |
20130212349 | Maruyama | Aug 2013 | A1 |
20130218801 | Rago | Aug 2013 | A1 |
20130218865 | Angulo et al. | Aug 2013 | A1 |
20130282417 | Gaedcke et al. | Oct 2013 | A1 |
20130282594 | Gaedcke et al. | Oct 2013 | A1 |
20130282603 | Gaedcke et al. | Oct 2013 | A1 |
20130282722 | Grenier et al. | Oct 2013 | A1 |
20130291058 | Wollenstein et al. | Oct 2013 | A1 |
20130298038 | Spivack et al. | Nov 2013 | A1 |
20130304726 | Sandulescu et al. | Nov 2013 | A1 |
20130304758 | Gruber et al. | Nov 2013 | A1 |
20130318156 | Friedman et al. | Nov 2013 | A1 |
20130332263 | Vora et al. | Dec 2013 | A1 |
20140006524 | Singh et al. | Jan 2014 | A1 |
20140032306 | Sukornyk et al. | Jan 2014 | A1 |
20140040275 | Dang | Feb 2014 | A1 |
20140040377 | Friedman et al. | Feb 2014 | A1 |
20140040993 | Lorenzo et al. | Feb 2014 | A1 |
20140047429 | Gaither et al. | Feb 2014 | A1 |
20140067520 | Campanile | Mar 2014 | A1 |
20140074844 | Subraman et al. | Mar 2014 | A1 |
20140082072 | Kass et al. | Mar 2014 | A1 |
20140108675 | Wu | Apr 2014 | A1 |
20140164352 | Denninghoff | Jun 2014 | A1 |
20140173444 | Wu | Jun 2014 | A1 |
20140173501 | Wu | Jun 2014 | A1 |
20140173509 | Wu | Jun 2014 | A1 |
20140181087 | Wu | Jun 2014 | A1 |
20140181194 | Sullivan | Jun 2014 | A1 |
20140181728 | Wu | Jun 2014 | A1 |
20140184841 | Woo et al. | Jul 2014 | A1 |
20140189808 | Mahaffey et al. | Jul 2014 | A1 |
20140200989 | Kassko et al. | Jul 2014 | A1 |
20140222834 | Parikh et al. | Aug 2014 | A1 |
20140223527 | Bortz et al. | Aug 2014 | A1 |
20140244621 | Lindsay | Aug 2014 | A1 |
20140278785 | Gaedcke et al. | Sep 2014 | A1 |
20140280113 | Hohwald | Sep 2014 | A1 |
20140280398 | Smith et al. | Sep 2014 | A1 |
20140289034 | Wu | Sep 2014 | A1 |
20140298199 | Johnson, Jr. et al. | Oct 2014 | A1 |
20140304249 | Ayzenshtat et al. | Oct 2014 | A1 |
20140324902 | Morris et al. | Oct 2014 | A1 |
20140337953 | Banatwala et al. | Nov 2014 | A1 |
20140358911 | McCarthy et al. | Dec 2014 | A1 |
20150006708 | Banke et al. | Jan 2015 | A1 |
20150032492 | Ting et al. | Jan 2015 | A1 |
20150032751 | Ting et al. | Jan 2015 | A1 |
20150039705 | Kursun | Feb 2015 | A1 |
20150100537 | Grieves et al. | Apr 2015 | A1 |
20150112918 | Zheng et al. | Apr 2015 | A1 |
20150120713 | Kim et al. | Apr 2015 | A1 |
20150127453 | Tew et al. | May 2015 | A1 |
20150134457 | Cheung et al. | May 2015 | A1 |
20150134579 | Zaman et al. | May 2015 | A1 |
20150161211 | Patel | Jun 2015 | A1 |
20150170294 | Goyal et al. | Jun 2015 | A1 |
20150188907 | Khalid et al. | Jul 2015 | A1 |
20150193504 | Naidu et al. | Jul 2015 | A1 |
20150244706 | Grajek et al. | Aug 2015 | A1 |
20150281227 | Ivey et al. | Oct 2015 | A1 |
20150286643 | Kumar | Oct 2015 | A1 |
20150288522 | McCoy et al. | Oct 2015 | A1 |
20150295869 | Li et al. | Oct 2015 | A1 |
20150310018 | Fan et al. | Oct 2015 | A1 |
20150310020 | Brav et al. | Oct 2015 | A1 |
20150310571 | Brav et al. | Oct 2015 | A1 |
20150312200 | Bray et al. | Oct 2015 | A1 |
20150334102 | Haugsnes | Nov 2015 | A1 |
20150347616 | Levi et al. | Dec 2015 | A1 |
20150381552 | Vijay et al. | Dec 2015 | A1 |
20160019628 | Udumudi et al. | Jan 2016 | A1 |
20160021097 | Shrotri | Jan 2016 | A1 |
20160034551 | Huang | Feb 2016 | A1 |
20160042053 | De Sousa Webber | Feb 2016 | A1 |
20160055250 | Rush | Feb 2016 | A1 |
20160055541 | Calistri-Yeh | Feb 2016 | A1 |
20160057576 | Kessler et al. | Feb 2016 | A1 |
20160073166 | Hu et al. | Mar 2016 | A1 |
20160080445 | Kazerani et al. | Mar 2016 | A1 |
20160110688 | Knox et al. | Apr 2016 | A1 |
20160125157 | Wu | May 2016 | A1 |
20160132904 | Mondel et al. | May 2016 | A1 |
20160132973 | Wu | May 2016 | A1 |
20160134580 | Castera et al. | May 2016 | A1 |
20160147760 | N et al. | May 2016 | A1 |
20160151704 | Wu | Jun 2016 | A1 |
20160164863 | Hitchcock et al. | Jun 2016 | A1 |
20160203221 | Rao et al. | Jul 2016 | A1 |
20160203523 | Spasojevic et al. | Jul 2016 | A1 |
20160210555 | Murphy et al. | Jul 2016 | A1 |
20160320926 | Ganin et al. | Nov 2016 | A1 |
20160321261 | Spasojevic et al. | Nov 2016 | A1 |
20160321562 | Zeng | Nov 2016 | A1 |
20160321694 | Vorozhtsov | Nov 2016 | A1 |
20160335572 | Bennett et al. | Nov 2016 | A1 |
20160352667 | Pickett et al. | Dec 2016 | A1 |
20170048237 | Pfitzmann et al. | Feb 2017 | A1 |
20170132276 | Saurabh | May 2017 | A1 |
20170154356 | Trevisiol et al. | Jun 2017 | A1 |
20170154366 | Turgeman | Jun 2017 | A1 |
20170180294 | Milligan et al. | Jun 2017 | A1 |
20170193546 | Bennett et al. | Jul 2017 | A1 |
20170264619 | Narayanaswamy et al. | Sep 2017 | A1 |
20170300490 | Kachemir | Oct 2017 | A1 |
20170366636 | Wang et al. | Dec 2017 | A1 |
20180027075 | Schoeffler et al. | Jan 2018 | A1 |
20180041336 | Keshava et al. | Feb 2018 | A1 |
20180053114 | Adjaoute | Feb 2018 | A1 |
20180081983 | Carru et al. | Mar 2018 | A1 |
20180091468 | Yong et al. | Mar 2018 | A1 |
20180097802 | Lander et al. | Apr 2018 | A1 |
20180144389 | Fredrich et al. | May 2018 | A1 |
20180152471 | Jakobsson | May 2018 | A1 |
20180211285 | Todasco et al. | Jul 2018 | A1 |
20180219830 | O'Brien et al. | Aug 2018 | A1 |
20180295137 | Zager et al. | Oct 2018 | A1 |
20180329565 | Yeung et al. | Nov 2018 | A1 |
20180332079 | Ashley et al. | Nov 2018 | A1 |
20180337907 | Bhansali et al. | Nov 2018 | A1 |
20180337910 | Gustayson et al. | Nov 2018 | A1 |
20180367484 | Rodriguez et al. | Dec 2018 | A1 |
20190057204 | Marcovecchio et al. | Feb 2019 | A1 |
20190114356 | Senftleber et al. | Apr 2019 | A1 |
20190116137 | Senftleber et al. | Apr 2019 | A1 |
20190116148 | Senftleber et al. | Apr 2019 | A1 |
20190158610 | Holzband et al. | May 2019 | A1 |
20190159166 | Aggarwal et al. | May 2019 | A1 |
20190230151 | Falcao et al. | Jul 2019 | A1 |
20190245751 | Wong | Aug 2019 | A1 |
20190306248 | Swarangi et al. | Oct 2019 | A1 |
20190354709 | Brinskelle | Nov 2019 | A1 |
20200007530 | Abdul et al. | Jan 2020 | A1 |
20200051120 | Senftleber et al. | Feb 2020 | A1 |
20200099676 | Desarda et al. | Mar 2020 | A1 |
20200120068 | Senftleber et al. | Apr 2020 | A1 |
20200120095 | Senftleber et al. | Apr 2020 | A1 |
20200120096 | Senftleber et al. | Apr 2020 | A1 |
20200120167 | Senftleber et al. | Apr 2020 | A1 |
20200184575 | Gaedcke et al. | Jun 2020 | A1 |
20200258091 | Gaedcke et al. | Aug 2020 | A1 |
20200287957 | Falcao et al. | Sep 2020 | A1 |
20200329110 | Holzband et al. | Oct 2020 | A1 |
20200358755 | Abdul et al. | Nov 2020 | A1 |
20200366564 | Davis et al. | Nov 2020 | A1 |
Number | Date | Country |
---|---|---|
102054033 | May 2011 | CN |
103177095 | Dec 2015 | CN |
2009047674 | Apr 2009 | WO |
2013158839 | Oct 2013 | WO |
2014089460 | Jun 2014 | WO |
2014153463 | Jan 2015 | WO |
2015013436 | Jan 2015 | WO |
2019075284 | Apr 2019 | WO |
2019144159 | Jul 2019 | WO |
2020232311 | Nov 2020 | WO |
Entry |
---|
Friedman et al., U.S. Appl. No. 61/650,849, filed May 23, 2012 and entitled, “Dynamic Information Streams in a Social Network Platform.” |
Wu, Michael, U.S. Appl. No. 62/072,929, filed Oct. 30, 2014 and entitled, “Systems and Methods to Monitor Health of Online Social Communities.” |
Bista, Sanat Kumar et al., “Using Gamification in an Online Community,” CSIRO ITC Centre, Conference Paper, 2012. |
Frunzi, Victoria E., Non-Final Office Action dated Oct. 16, 2018 for U.S. Appl. No. 15/018,787. |
Kolosowski-Gager, Katherine, Final Office Action dated Feb. 11, 2019 for U.S. Appl. No. 14/627,151. |
Lithium Technologies. “Community Health Index for Online Communities.” 2009, https://www.lithium.com/pdfs/whitepapers/Lithium-Community-Health-Index_v1AY2ULb.pdf. Retrieved from the Internet Wayback Machine, dated Feb. 19, 2011. |
Netzloff, Eric R., Non-Final Office Action dated Nov. 6, 2018 for U.S. Appl. No. 14/824,021. |
Ofori-Awuah, Maame, Non-Final Office Action dated Apr. 5, 2019 for U.S. Appl. No. 14/929,209. |
Senftleber et al., International (PCT) Patent Application No. PCT/US2018/055545, filed Oct. 12, 2018 and entitled, “Predicting Performance of Content and Electronic Messages Among a System of Networked Computing Devices.” |
Senftleber et al., U.S. Appl. No. 16/158,167, filed Oct. 11, 2018 and entitled, “Credential and Authentication Management in Scalable Data Networks.” |
Senftleber et al., U.S. Appl. No. 16/158,169, filed Oct. 11, 2018 and entitled, “Native Activity Tracking Using Credential and Authentication Management in Scalable Data Networks.” |
Senftleber et al., U.S. Appl. No. 16/158,172, filed Oct. 11, 2018 and entitled, “Proxied Multi-Factor Authentication Using Credential and Authentication Management in Scalable Data Networks.” |
Senftleber et al., U.S. Appl. No. 16/194,126, filed Nov. 16, 2018 and entitled, “Multiplexed Data Exchange Portal Interface in Scalable Data Networks.” |
Vo, Huyen X., Non-Final Office Action dated Mar. 15, 2019 for U.S. Appl. No. 15/782,642. |
Young, Lee W., Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration, dated Apr. 1, 2019 for International Application No. PCT/US2018/05545. |
“Craigslist Online Community.” Craigslist.org. Jul. 6, 2010,. |
Cannell, Larry, “Windows 7 Federated Search and SharePoint 2010” online article dated Jun. 2010 <http://blogs.gartner.com/larry-cannell/2010/09/09/windows-7-federated-search-and-sharepoint-2010[May 13, 2016 12:36:15 PM]. |
Constine, Josh, “Facebook tests notification unsubscribe button for feed posts,” Aug. 9, 2010. http://www.adweek.com/socialtime/unsubscribe-button-posts/244868. |
Dwyer, Cameron, “Five out-of-the-box ways to get Email into SharePoint” Jan. 2012, <https://camerondwyer.wordpress.com/2012/09/04/five-out-of-the-box-ways-to-get-email-into-sharepoint/[May 13, 2016 10:48:43 AM]. |
Emojipedia, (https://web.archive.org/web/20150915110235/https://emojipedia.org/fisted-hand-sign/), Date: Sep. 15, 2015; (https://web.archive.org/web/20150823012626/https://emojipedia.org/clapping-hands-sign/), Date: Aug. 23, 2015; (https://web.archive.org/web/20150829090848/https://emojipedia.org/smiling-face-with-sunglasses/), Date: Aug. 29, 2015. |
Falcao et al., U.S. Appl. No. 15/877,379, filed Jan. 22, 2018 and entitled, “Temporal Optimization of Data Operations Using Distributed Search and Server Management.” |
Giphy, (https://web.archive.org/web/20140813065113/http://giphy.com/search/happy), Date: Aug. 13, 2014; https://web.archive.org/web20141231135329/https://giphy.com/upload, Date: Dec. 31, 2014; https://web.archive.org/web/20150919214012/http://giphy.com/create/upload, Date: Sep. 19, 2015. |
Hashemi, Mazdak, “The Infrastructure Behind Twitter: Scale”, Jan. 19, 2017, Twitter, Inc. Blog Post, https://blog.twitter.com/engineering/en_us/topics/infrastructure/2017/the-infrastructure-behind-twitter-scale.html. |
Holzband et al., U.S. Appl. No. 15/821,543, filed Nov. 22, 2017 and entitled, “Responsive Action Prediction Based on Electronic Messages Among a System of Networked Computing Devices.” |
Jou et al., “Predicting Viewer Perceived Emotions in Animated GIFs”, Nov. 3-7, 2014 (4 pages). |
Senftleber et al., U.S. Appl. No. 15/782,635, filed Oct. 12, 2017 and entitled, “Computerized Tools to Enhance Speed and Propagation of Content in Electronic Messages Among a System of Networked Computing Devices.” |
Senftleber et al., U.S. Appl. No. 15/782,642, filed Oct. 12, 2017 and entitled, “Predicting Performance of Content and Electronic Messages Among a System of Networked Computing Devices.” |
Senftleber et al., U.S. Appl. No. 15/782,653, filed Oct. 12, 2017 and entitled, “Optimizing Effectiveness of Content in Electronic Messages Among a System of Networked Computing Device.” |
Fiorillo, James N., Non-Final Office Action for U.S. Appl. No. 15/821,543 dated Aug. 16, 2019. |
Rashid, Ishrat, Non-Final Office Action dated Jun. 11, 2019 for U.S. Appl. No. 15/782,653. |
Young, Lee W.; Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration dated Jun. 24, 2019 for International Application No. PCT/US2019/014637. |
Dinh, Khanh Q., Notice of Allowance and Fee(s) Due dated Oct. 29, 2019 for U.S. Appl. No. 15/877,379. |
Fiorillo, James N., Notice of Allowance and Fee(s) Due dated Nov. 14, 2019 for U.S. Appl. No. 15/821,543. |
Matthews, Tara, et al. “Community Insights: Helping Community Leaders Enhance the Value of Enterprise Online Communities.” Proceedings of the Sigchi Conference on Human Factors in Computing Systems, Apr. 27-May 2, 2013, Paris, France. ACM (2013). pp. 513-522. |
Mesa, Joel, Final Office Action dated Mar. 30, 2020 for U.S. Appl. No. 15/782,635. |
Mesa, Joel, Non-Final Office Action for U.S. Appl. No. 15/782,635 dated Oct. 4, 2019. |
Ofori-Awuah, Maame, Final Office Action dated Sep. 6, 2019 for U.S. Appl. No. 14/929,209. |
Perungavoor, Venkatanaray, Notice of Allowance and Fee(s) Due for U.S. Appl. No. 16/158,167, dated May 15, 2020. |
Rashid, lshrat, Final Office Action for U.S. Appl. No. 15/782,653 dated Sep. 19, 2019. |
Takesue, Masaru, An HTTP Extension for Secure Transfer of Confidential Data, 2009 IEEE International Conference on Networking, Architecture, and Storage, Hunan, 2009, pp. 101-108, doi: 10.1109/NAS.2009.21. |
Wang, Xiaoqing, and Shannon Lantzy. “A Systematic Examination of Member Turnover and Online Community Health.” Thirty Second International Conference on Information Systems, Shanghai (2011), pp. 1-11. |
Anicas, Mitchell; An Introduction to OAuth 2, DigitalOcean, Published Jul. 21, 2014, Retrieved Jan. 29, 2021; <>. |
Dagnew, Saba, Final Office Action dated Feb. 12, 2020 for U.S. Appl. No. 15/581,795. |
Dagnew, Saba, Non-Final Office Action for U.S. Appl. No. 15/581,795 dated Sep. 16, 2019. |
Fett et al., The Web SSO Standard OpenID Connect: In-Depth Formal Security Analysis and Security Guidelines, 2017 IEEE 30th Computer Security Foundations Symposium (Year: 2017). |
Goldberg, Ivan R., Non-Final Office Action dated Mar. 3, 2021 for U.S. Appl. No. 16/701,143. |
Hardt, Dick, The OAuth 2.0 Authorization Framework draft-ieft-oauth-v2-31; Internet Engineering Task Force (IEFT) (Year: 2012). |
Kim, Harry C., Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration dated Sep. 16, 2020 for International Patent Application No. PCT/US2020/032999. |
Liu et al., OAuth Based Authentication and Authorization in Open Telco API; International Conference on Computer Science and Electronics Engineering, 2012 (Year: 2012). |
Mesa, Joel, Non-Final Office Action dated Oct. 6, 2020 for U.S. Appl. No. 15/782,635. |
Mesa, Joel, Notice of Allowance and Fee(s) Due dated Feb. 24, 2021 for U.S. Appl. No. 15/782,635. |
Niruntasukrat et al., Authorization Mechanism for MQTT-based Internet of Things, IEEE ICC 2016 Workshops: W07-Workshop on Convergent Internet of Things (Year: 2016). |
Ofori-Awuah, Maame, Final Office Action dated Oct. 2, 2020 for U.S. Appl. No. 14/929,209. |
Rashid, lshrat, Non-Final Office Action dated Jun. 12, 2020 for U.S. Appl. No. 15/782,653. |
Shaw, Robert A., Non-Final Office Action dated Jan. 22, 2021 for U.S. Appl. No. 16/158,169. |
Singh, Amardeep, IP Australia, Examination Report No. 1 for Australia Patent Application No. 2019209542 dated Dec. 17, 2020. |
Spasojevic, Nemanja et al., “When-To-Post on Social Networks”, International Conference on Knowledge Discovery and Data Mining (KDD), Aug. 10-13, 2015, pp. 2127-2136, Retrieved Online: http://dl.acm.org/citation.cfm?d=2788584. |
Suh, Andrew, Final Office Action dated Dec. 3, 2020 for U.S. Appl. No. 16/158,172. |
Suh, Andrew, Non-Final Office Action dated Jul. 8, 2020 for U.S. Appl. No. 16/158,172. |
Takesue, Masaru, An HTTP Extension for Secure Transfer of Confidential Data. IEEE, 2009 (Year: 2009). |
Trapanese, William C., Non-Final Office Action dated May 27, 2020 for U.S. Appl. No. 16/413,577. |
Vo, Huyen X., Non-Final Office Action dated Oct. 15, 2020 for U.S. Appl. No. 16/458,183. |
Ahmed, Saba, Final Office Action dated Jun. 29, 2016 for U.S. Appl. No. 14/098,492. |
Ahmed, Saba, Non-Final Office Action dated Nov. 19, 2015 for U.S. Appl. No. 14/098,492. |
Blaufeld, Justin R., Final Office Action dated Mar. 24, 2016 for U.S. Appl. No. 14/098,501. |
Blaufeld, Justin R., Non-Final Office Action dated Sep. 24, 2015 for U.S. Appl. No. 14/098,501. |
Bostock, Mike, Sankey Diagram, available at http://bost.ocks.org/mike/sankey, published May 21, 2012, 1 pg. |
Brown Jr., Nathan H., Final Office Action dated Mar. 29, 2011 for U.S. Appl. No. 11/971,856. |
Brown Jr., Nathan H., Non-Final Office Action dated Jun. 6, 2012 for U.S. Appl. No. 13/167,482. |
Brown Jr., Nathan H., Non-Final Office Action dated Mar. 24, 2014 for U.S. Appl. No. 13/780,487. |
Brown Jr., Nathan H., Non-Final Office Action dated Nov. 26, 2010 for U.S. Appl. No. 11/971,856. |
Bui, Hanh Thi Minh, Non-Final Office Action dated Mar. 13, 2015 for U.S. Appl. No. 14/012,978. |
Chung, Mong-Shune, Non-Final Office Action dated Jan. 29, 2016 for U.S. Appl. No. 14/098,505. |
Filipczyk, Marcin R., Final Office Action dated Oct. 5, 2015 for U.S. Appl. No. 13/950,268. |
Filipczyk, Marcin R., Non-Final Office Action dated Mar. 10, 2016 for U.S. Appl. No. 13/950,268. |
Filipczyk, Marcin R., Non-Final Office action dated May 22, 2015 for U.S. Appl. No. 13/950,268. |
Friedman et al., U.S. Appl. No. 61/650,849, filed May 23, 2012 and entitled, “Dynamic Streams in a Social Network Platform.” Information. |
Gaedckle et al., U.S. Appl. No. 61/636,132, filed Apr. 20, 2012 and entitled, “System and Method for Providing a Social Customer Care System.”. |
Georgandellis, Andrew C., Final Office Action dated Mar. 30, 2016 for U.S. Appl. No. 13/900,878. |
Georgandellis, Andrew C., Final Office Action dated Oct. 26, 2017 for U.S. Appl. No. 13/900,878. |
Georgandellis, Andrew C., Final Office Action dated Sep. 21, 2016 for U.S. Appl. No. 14/035,166. |
Georgandellis, Andrew C., Non-Final Office Action dated Jan. 26, 2017 for U.S. Appl. No. 13/900,878. |
Georgandellis, Andrew C., Non-Final Office Action dated Jul. 11, 2016 for U.S. Appl. No. 14/035,166. |
Georgandellis, Andrew C., Non-Final Office Action dated May 23, 2017 for U.S. Appl. No. 14/035,166. |
Georgandellis, Andrew C., Non-Final Office Action dated Nov. 3, 2015 for U.S. Appl. No. 13/900,878. |
Goldberg, Ivan R., Final Office Action dated Jan. 12, 2015 for U.S. Appl. No. 13/835,502. |
Goldberg, Ivan R., Final Office Action dated Jan. 13, 2015 for U.S. Appl. No. 13/835,250. |
Goldberg, Ivan R., Final Office Action dated Jan. 15, 2015 for U.S. Appl. No. 13/865,429. |
Goldberg, Ivan R., Non-Final Office Action dated Apr. 13, 2016 for U.S. Appl. No. 13/865,429. |
Goldberg, Ivan R., Non-Final Office Action dated Jun. 18, 2014 for U.S. Appl. No. 13/835,250. |
Goldberg, Ivan R., Non-Final Office Action dated Jun. 18, 2014 for U.S. Appl. No. 13/835,502. |
Goldberg, Ivan R., Non-Final Office Action dated Jun. 20, 2014 for U.S. Appl. No. 13/865,411. |
Goldberg, Ivan R., Non-Final Office Action dated Jun. 23, 2014 for U.S. Appl. No. 13/865,429. |
Hatcher, Deirdre D., Non-Final Office Action dated Jan. 14, 2016 for U.S. Appl. No. 13/950,258. |
Jang, Gijeong, Written Opinion of the International Searching Authority and International Search Report dated Jul. 28, 2015 for International Patent Application No. PCT/US2014/047866. |
Kolosowski-Gager, Katherine, Non-Final Office Action dated Jun. 29, 2018 for U.S. Appl. No. 14/627,151. |
Lithium Website, http://www.lithium.com, Dec. 11, 2010, retrieved from Internet Archive, pp. 1-9. |
M2 PressWire, “Alterian: Social media monitoring and analytics comes of age with Alterian's acquisition of market leader Techrigy,” Jul. 15, 2009, Anonymous, Norman Media Ltd, London. |
Mosley, Kyle T., Non-Final Office Action dated Dec. 28, 2017 for U.S. Appl. No. 14/852,965. |
Mosley, Kyle T., Non-Final Office Action dated Oct. 4, 2017 for U.S. Appl. No. 14/627,151. |
Netzloff, Eric R., Non-Final Office Action dated Nov. 25, 2014 for U.S. Appl. No. 13/848,706. |
Oh, Eung Gie, Written Opinion of the International Searching Authority and International Search Report dated Nov. 18, 2014 for International Patent Application No. PCT/US2014/031345. |
Olshannikov, Alex, Final Office Action dated Apr. 15, 2016 for U.S. Appl. No. 14/098,480. |
Olshannikov, Alex, Final Office Action dated Feb. 17, 2016 for U.S. Appl. No. 14/098,509. |
Olshannikov, Alex, Non-Final Office Action dated Nov. 5, 2015 for U.S. Appl. No. 14/098,480. |
Olshannikov, Alex, Non-Final Office Action dated Oct. 22, 2015 for U.S. Appl. No. 14/098,509. |
Raju, “5 Ways to Tweet More Than 140 Characters,” Dec. 28, 2008, Technically Personal, http://www.techpp.com/2008/12/28/5-ways-to-tweet-more-than-140-characters/, retrieved from Internet Archive version from Mar. 3, 2011. |
Rao et al., U.S. Appl. No. 62/049,642, filed Sep. 12, 2014 and entitled, “System and Apparatus for an Application Agnostic User Search Engine.” |
Spasojevic et al., U.S. Appl. No. 61/943,047, filed Feb. 21, 2014 and entitled, “Domain Generic Large Scale Topic Expertise & Interest Mining Across Multiple Online Social Networks.” |
Tabor, Amare F., Final Office Action dated Apr. 8, 2015 for U.S. Appl. No. 13/871,076. |
Tabor, Amare F., Non-Final Office Action dated Aug. 15, 2014 for U.S. Appl. No. 13/871,076. |
Thomas, Shane, Written Opinion of the International Searching Authority and International Search Report dated Aug. 16, 2013 for International Patent Application No. PCT/US2013/037107. |
Walsh, John B., Non-Final Office Action dated Mar. 24, 2017 for U.S. Appl. No. 14/702,696. |
Wollenstein et al., U.S. Appl. No. 61/639,509, filed Apr. 27, 2012 and entitled, “Systems and Methods for Implementing Custom Privacy Settings.” |
Wu, Michael, U.S. Appl. No. 61/734,927, filed Dec. 7, 2012 and entitled, “Systems and Methods for Presenting Analytic Data.” |
Wu, Michael, U.S. Provisional Patent Application No. 62/072,929, filed Oct. 30, 2014 and entitled, “Systems and Methods to Monitor Health of Online Social Communities.” |
Young, Lee W., Written Opinion of the International Searching Authority and International Search Report dated May 28, 2014 for International Patent Application No. PCT/US2013/073625. |
Arentz et al., Classifying offensive sites based on image content [online], Computer Vision and Image Understanding 94, 295-310, 2004, Retrieved from the Internet: https://www.sciencedirect.com/science/article/abs/pii/51077314203001875. |
Number | Date | Country | |
---|---|---|---|
20190228093 A1 | Jul 2019 | US |