US12271354B2 - Methods and systems for garbage deletion in a document database - Google Patents
Methods and systems for garbage deletion in a document database Download PDFInfo
- Publication number
- US12271354B2 US12271354B2 US17/897,997 US202217897997A US12271354B2 US 12271354 B2 US12271354 B2 US 12271354B2 US 202217897997 A US202217897997 A US 202217897997A US 12271354 B2 US12271354 B2 US 12271354B2
- Authority
- US
- United States
- Prior art keywords
- change
- change set
- document
- document database
- nodes
- 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.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/93—Document management systems
Definitions
- the present disclosure is related to the field of database management, and, more particularly, is related to the field of garbage collection in a document database.
- CDNs First-generation content delivery networks reduce user perceived latency when performing read operations against shared data.
- Each data item in the system is designated with a primary site where all data modifications occur and read-only replicas are maintained at every other site. These replicas are periodically refreshed on demand and cache eviction messages are used to expire the data stored at remote replicas. Updates are totally ordered by the primary site; in that every replica in the system sees the same updates in the same order. Therefore, users observe eventual consistency; writes are performed at the designated primary replica and reads at other DCs eventually return the result of the most recent write. While CDNs work well for a read-dominated workload, they fail to assist the developer in situations where the workload may be write-dominated.
- the exemplary system can include at least one memory for storing computer-executable instructions; and at least one processor for executing the instructions stored on the memory.
- the execution of the instructions programs the at least one processor to perform operations including, for each change in a first change set, comparing a first characteristic of the change to a second characteristic of a corresponding change in a second change set.
- the change of the first change set and the change of the second change set can pertain to an attribute of a document in the document database.
- the operations include, for each change in the first change set, determining whether the change of the first change set is superseded by the change of the second change set based on the comparison of the first characteristic to the second characteristic.
- the operations can include determining whether the first change set is redundant with the second change set if each change of the first change set is superseded by a corresponding change of the second change set; and eliminating the first change set from the document database when the first change set is redundant with second change set.
- a method for garbage deletion in a document database can include for each change in a first change set, comparing a first characteristic of the change to a second characteristic of a corresponding change in a second change set.
- the change of the first change set and the change of the second change set can pertain to an attribute of a document in the document database.
- the method include, for each change in the first change set, determining whether the change of the first change set is superseded by the change of the second change set based on the comparison of the first characteristic to the second characteristic.
- the method can include determining whether the first change set is redundant with the second change set if each change of the first change set is superseded by a corresponding change of the second change set; and eliminating the first change set from the document database when the first change set is redundant with second change set.
- a non-transitory computer-readable medium having instructions stored thereon that, when executed by one or more computer processors, cause the computer processors to perform operations including, for each change in a first change set, comparing a first characteristic of the change to a second characteristic of a corresponding change in a second change set.
- the change of the first change set and the change of the second change set can pertain to an attribute of a document in the document database.
- the operations include, for each change in the first change set, determining whether the change of the first change set is superseded by the change of the second change set based on the comparison of the first characteristic to the second characteristic.
- the operations can include determining whether the first change set is redundant with the second change set if each change of the first change set is superseded by a corresponding change of the second change set; and eliminating the first change set from the document database when the first change set is redundant with second change set.
- FIG. 1 is a diagram illustrating an exemplary document database system and related network.
- FIGS. 2 A- 2 B are diagrams illustrating value convergence methods for example mappings.
- FIGS. 3 A- 3 B are diagrams illustrating value convergence methods for example sequences.
- FIG. 4 is a flowchart illustrating an exemplary method for garbage collection in a concurrent version scenario.
- FIG. 5 is a flowchart illustrating an exemplary method for garbage collection including lexicographical sorting.
- FIG. 6 is a flowchart illustrating an exemplary method for garbage collection including prioritization of updates over removes.
- FIG. 7 is a diagram of an example computer system that may be used in implementing the systems and methods described herein.
- Described herein are exemplary systems and methods for garbage collection and/or deletion in document databases.
- DCs data centers
- this leads to difficulties in managing the consistency among multiple replicas.
- handling writes at each DC can raise a number of difficult challenges. First, if all replicas in the system are expected to observe the same events in the same order, it is beneficial for the system to some form of coordination between replicas to obtain this order.
- CRDTs conflict-free replicated data types
- state-based CRDTs each CRDT is an abstract data type that is extended with a deterministic merge operation.
- Operation-based CRDTs rely on two properties: (i) causal delivery of changes, which ensures that changes are delivered to remote replicas observing the causal order in which the changes occurred; and (ii) the commutativity of concurrent operations, which ensures that any changes that are concurrent with respect to the causal order will result in the same outcome.
- exemplary systems that include a geo-replicated, conflict-free replicated document database.
- the exemplary document database can operate in two modes: (i) a single-master mode, in which the system provides strong consistency and serializable transactions; or (ii) a multi-master mode, in which the system provides session guarantees.
- Documents in the exemplary document database may be JavaScript Object Notation (JSON) documents that can contain sequences and/or dictionaries. These documents can reference other documents in the exemplary system. Modifications to documents may be modeled using operation-based CRDTs and conflicting changes may be automatically resolved by using a predefined merge process that depends on the type of modification and/or the type of document.
- JSON JavaScript Object Notation
- Modifications to documents may be stored in a log and may be asynchronously propagated in causal order using reliable causal broadcast, thereby enabling users to observe session guarantees while connected to a single DC. Users may initiate reads and writes and may have the ability to perform atomic transactions. In multi-master mode, transactions may exhibit parallel snapshot isolation.
- the exemplary document database may provide the following:
- garbage collection is a term of art referring to the reclamation of “garbage” or memory occupied by objects (e.g., data) that are not used in the program or database.
- garbage collection the exemplary systems and methods described herein increase the efficiency of computing systems. For instance, the exemplary systems may free up memory that can be used for more important data, enable greater flexibility in the management of such databases, enable users with more efficient and/or faster computing and/or data storage services, and/or decrease the resources used in managing unused data in document databases. Further, garbage collection may enable a database to store more user data in a given storage unit, thereby leading to better utilization of storage unit. These advantages may be important in computing networks that rely on a significant number of data centers (which may be geographically distributed) to service its users. Therefore, the exemplary systems and methods described herein enable more efficient storage of data, thereby improving the functioning of computing systems.
- FIG. 1 illustrates a network 100 including an exemplary document database system 102 and its relationship to other network components.
- the exemplary document database 102 is a key-value document storage system configured to operate in multiple DCs 104 a , 104 b , 104 n (collectively referred to as 104 ) (e.g., tens of DCs, hundreds of DCs, etc.).
- Each DC 104 can replicate a set of databases (e.g., one or more databases 106 a , 106 b , 106 n , collectively referred to as 106 ).
- Each database 106 may include one or more collections 108 a , 108 b , 108 n (collectively referred to as 108 ) of documents.
- Documents may be accessed using a query language that can operate over collections and can enable users to read and/or write documents.
- Each document may be assigned a unique key. This key may be assigned by the system at the time of document creation.
- a single metadata database may be used to replicate information regarding which databases (e.g., the identities thereof) are replicated by which DCs (e.g., the identities thereof).
- DCs e.g., the identities thereof.
- a cluster of nodes may be responsible for storage of each database. Cluster membership within the DC can be strongly consistent and can be managed by a service, e.g., Apache Zookeeper (provided by Apache Software Foundation, Forest Hill, Maryland, USA), according to one embodiment.
- Apache Zookeeper provided by Apache Software Foundation, Forest Hill, Maryland, USA
- databases are fully replicated. In some instances, not each DC replicates all databases. Therefore, the system can be partially replicated where each collection contains metadata regarding the DCs at which the collection should be replicated.
- Databases may operate in one of two modes: (i) single-master, in which a single DC is responsible for processing read and/or write operations issued against the database and all other DCs (of the system) that replicate the database are passive (e.g., issue read operations but not write operations); or (ii) multi-master, in which every DC replicating the database is configured to accept and process read and/or write operations.
- Client devices 110 referred to herein as clients
- Client devices 110 may be automatically connected to their nearest available DC (e.g., geographically nearest).
- Read and/or write operations may be automatically routed to the primary replica if the accessed database is a single-master database. Writes occurring within a single DC may be synchronous.
- the exemplary database system can include of three components: global persistent streams, a document store, and a local persistent stream. Each component may be replicated for fault tolerance.
- the first component is a set of global persistent streams that contains the unacknowledged changes for the remote DCs that replicate the same databases. There may be one stream per destination replica and/or per each collection.
- the exemplary system may be realized using Apache Bookkeeper (provided by Apache Software Foundation, Forest Hill, Maryland, USA). The exemplary system may use a pull-based model, where remote replicas subscribe to events in one or more of the streams and changes are pulled in first-in, first-out (FIFO) order, to the origin DC by the remote DC, according to one embodiment.
- FIFO first-in, first-out
- the second component is a document store, which may be realized using RocksDB (provided by Facebook, Inc., Menlo Park, California, USA).
- the document store can be used for storage of events and the materialized state related to each key in the collection.
- Each document, one for each key in the collection may be made up of two components: (a) the event log, which can include some, most, or all of the events taken from the changes in the persistent streams related to this key; and (b) the materialized state, which is a materialized version of the events in the event log.
- this materialized state may be an optimization, so readers do not need to wait for the document to be materialized from the event log for every read.
- the third component is a local persistent stream that can include a real-time view of the changes occurring in the database.
- This system can be realized using Apache Bookkeeper. Each item is the materialized state resulting from local and/or incoming changes occurring at this replica and, in some instances, populated as the changes arrive.
- documents in the exemplary document database system can be formatted in the JSON format and may be aggregated into collections.
- the exemplary document database system supports two types of collections: (a) generic collections, in which any free-form JSON document can be stored in the system; and/or (b) edge collections.
- Generic collections may store three types of documents: one primitive type and two recursive types.
- Registers may serve as a primitive type that can only be modified by assignment and may contain opaque values.
- Maps and sequences are recursive types; they may contain other maps, sequences, and/or base types by document reference or through value embedding. Maps are unordered dictionaries; sequences can be considered maps from array index to value.
- Document references are pointers to other keys in the store upon materialization. Document references may be recursively resolved to a final value in the materialized state.
- Edge collections can be used for the storage of graph data. Edge collections may ensure that all stored JSON documents take a particular form. They can include a “from” field and a “to” field that specifies the source and destination vertices in the graph, respectively. Edges may be annotated with a free-form type, denoting the type of relation-labeled edges.
- the exemplary document database system supports one or more of the following types of indexes over documents:
- indexes are colocated on the same nodes as the documents that they are indexing. They can be stored alongside the documents in RocksDB and mutated along with the document in a transaction, thereby ensuring all-or-nothing behavior under failure.
- API Application Programming Interface
- Clients can interact with the exemplary document database system using a query language similar to structured query language (SQL) that operates over a JSON document, enabling clients to insert, change, and/or select documents.
- SQL structured query language
- a document may be changed using its unique key assigned by the exemplary document database system.
- Clients may interact with the exemplary document database system by issuing API commands against a replica of the system, e.g., the replica geographically nearest to the client's physical location.
- a replica of the system e.g., the replica geographically nearest to the client's physical location.
- the receiving DC computes a delta (representing the change) from the current materialized state to the new state generated by the client's operation.
- this delta describes the difference between the current materialized state and the new state and may not contain the unmodified fields.
- the state for a map at DC 1 starts with two keys: key x, which points to value 1 , and key y, which points to value 2 .
- key x which points to value 1
- key y which points to value 2 .
- an change is generated containing only the modified contents of the object. Therefore, the change does not contain the key x.
- This change generated from a user's change command is a delta.
- the delta is then decomposed into a set of changes representing the change to each field.
- the change generated by the exemplary document database system for the map contained two keys, key y pointing to the value 4 and key z pointing to the value 3 .
- the decomposition of this change creates two distinct changes, one for each key in the map, y and z. These decomposed changes can then be inserted into global persistent streams for each DC that is replicating the collection containing this key.
- the set of changes placed in the global persistent streams can be represented by a set of decomposed delta changes and annotated with two logical clocks: (a) a logical clock representing the causal dependencies on which this change depends; and (b) a logical clock representing the unique identifier for this change.
- each key in the exemplary document database system has a document in the document store and this document contains both an event log and materialized state.
- the event log in each document is a collection of event logs for each field; in the case of the previously discussed map, there is a single event log for each field: x, y, and z.
- the exemplary document database system atomically inserts the events into the event log and changes the materialized state for each set of changes received. Finally, the materialized state is placed in the local persistent stream at the DC.
- each DC provides streams of changes realized by persistent streams. If a remote DC is instructed to replicate a collection, it can subscribe to the streams of one, some, or all of the other remote DCs that are replicating that collection.
- Remote DCs can be configured to pull a single group of changes at a time (representing a single write to the exemplary document database system and annotated with a single logical clock) and apply those changes locally. The remote DC can remotely acknowledge that the change has been applied before moving to the next group of changes. Changes are kept in persistent streams until acknowledged by the remote DC or when a predetermined time window expires, which can require the DC rejoin the cluster and perform a full synchronization.
- DCs receive changes from other DCs in FIFO order. Changes are received over the stream in the order applied at the sender's log. Changes are timestamped using a vector clock that serves to capture causal dependencies. Upon receipt of an change, the change is buffered and only applied when causal dependencies are met. Therefore, within a single session, users observe causal consistency, marked by the combination of monotonic read, monotonic write, read your writes, and writes follow reads. This is also referred to as session consistency.
- clients' consistency guarantees may weaken for two reasons. First, if a client is a device that changes location, e.g., a mobile device, a laptop, a tablet, a notebook computer, a smart watch, smart glasses, etc., a previously accessed DC may no longer be the geographically closest DC during all interactions. Second, if a DC fails, a client may be routed to another DC to ensure availability. Under one or more of these circumstances, clients' guarantees are weakened to eventual consistency.
- Changes in the system may occur concurrently and therefore the value for a given key may diverge at an individual replica based on the delivery order of concurrent changes—the order they are placed in each DC's event log for the key.
- the exemplary document database system provides a mechanism to ensure deterministic value convergence without global coordination.
- operation-based CRDTs One mechanism for ensuring deterministic value convergence is based on operation-based CRDTs.
- operation-based CRDTs The intuition of operation-based CRDTs is as follows: if changes are delivered to each replica in an order that respects the causal order of events and concurrent changes are commutative, then all replicas that receive the same set of changes will arrive at the same value. This is a property that has been formalized as “strong eventual consistency”, with CRDTs being one data structure realizing this property.
- Registers Registers. Registers, whose only operation is assignment to a value, pose an interesting challenge. While concurrent assignments to the same value do commute, concurrent assignment to two different values do not.
- the exemplary document database system may arbitrate the choice between the conflicting changes to select based on the lexicographical sorting of the node identifier in the update, opting for the greatest value based on this ordering of the conflicting changes.
- References share a similar design to registers. They are registers that are restricted to only contain values that point to other keys in the exemplary system. As the concurrent assignment of registers to different values is non-commutative, the arbitration strategy used for registers must also be used for reference.
- Maps pose an interesting challenge as well. Maps typically provide the ability to add and remove keys, as well as to modify the value of a key.
- the exemplary document database system can ensure that concurrent modifications to the dictionary commute and ensure that concurrent modifications to each key in the same map commute as well.
- the exemplary document database system's insertion of new keys are modeled as updates to a perpendicular ( ⁇ ) or nullary value
- updates for keys can take priority over removals for keys, and removals capture the elements being removed.
- the removal of the key at a replica removes all contents at time of removal, including the value 1 and the update would add 2 into the set.
- dictionaries in the exemplary document database system are recursive, they may contain other maps, references, sequences, and/or registers.
- the merge process outlined in this section may be applied recursively throughout the map to achieve value convergence.
- the exemplary document database system's dictionaries are recursive, therefore they can contain other dictionaries, as well as registers—using the conflict resolution semantics presented above—and sequences, discussed next.
- FIGS. 3 A- 3 B illustrate examples 300a, 300b that provide a sequence that is concurrently modified in two or more DCs with the addition of a new word.
- the concurrent modification of a sequence 302 a occurs where two DCs have concurrently added a word at the same starting position.
- the sequence 302 b itself is broken up into cells representing each position in the sequence.
- Each cell is a document reference to another document in the database.
- the other document is written to as a register and concurrent writes to that cell are resolved using the convergence strategy for the register.
- the concurrent operation that the exemplary document database system can have is the assignment of document references to positions in the sequence 302 b .
- lexicographical order on the node identifier of the update is used to arbitrate the concurrent updates. This results in the final sentence 308 : “The quick, brown fox jumps over the lazy dog.”
- UUID universally unique identifier
- Transactions can enable users to perform operations on groups of documents in the exemplary database.
- Transactions can be atomic by ensuring that changes, applied against multiple documents in the DC, are applied atomically (e.g., all-or-nothing.)
- Transactions in the exemplary document database system exhibit a variety of isolation levels, depending on the objects being written to and read from.
- a wait-die process can be used for deadlock detection and resolution only for transactions executing in the same DC.
- transactions exhibit parallel snapshot isolation. Both read and write locks are taken upon write or specified at the start of the transaction. Transactions are ordered related to the causal order of changes and concurrent transactions are arbitrated using the ordering process outlined above.
- the event log stored inside each document may grow indefinitely. This is enabled to ensure that at any point, when a new change arrives, the materialized state for the document can be regenerated.
- changes are stored as operations modifying a part of a document's state.
- the change sets the value of a register.
- an change modifies an individual field (e.g., a specific field in the dictionary).
- the exemplary document database system needs only to retain the most recent event for a given field. Therefore, in some embodiments, other events (the “garbage”) can be collected, removed, and/or deleted.
- CRDTs are replicated data types that eventually converge to the same state under concurrent changes.
- a CRDT instance can be changed without requiring coordination with its replicas. This makes CRDTs highly available for writes.
- CRDTs can be classified into state-based CRDTs (e.g., convergent replicated data types (CvRDTs)) and operation-based CRDTs (e.g., commutative replicated data types (CmRDTs)).
- state-based CRDTs e.g., convergent replicated data types (CvRDTs)
- operation-based CRDTs e.g., commutative replicated data types (CmRDTs)
- State-based CRDTs are configured to disseminate states among replicas whereas operation-based CRDTs are designed to disseminate operations.
- the exemplary document database system can use operation-based CRDTs (i.e., CmRDTs) in which replicas are guaranteed to converge if operations are disseminated through a reliable causal broadcast (RCB) middleware and/or if they are configured to be commutative for concurrent operations.
- CmRDTs operation-based CRDTs
- RTB reliable causal broadcast
- the prepare phase reviews the operation and (optionally) the current state and produces a message, representing the operation, which is then disseminated to all replicas;
- a user may desire to create following JSON document in the exemplary document database system:
- each change is recorded as an immutable event in the log. For example, if a user wants to change “first_name” field to “Jane”, the generated immutable event that needs to be recorded in the log is: ⁇ vector_clock, update, first_name, Jane>
- CRDT requires the exemplary document database system to create an immutable event and append to the event log as part of the prepare phase. If the field in the document is changed 100,000 times, the final document still has only 3 fields but the underlying event log will contain 100,003 immutable events.
- the size of the document can be proportional to the number of changes made to the document. Because the exemplary database is a geo-replicated database, each location has its own local event log for each document in the database that remains available for writes even if partitioned from other locations.
- Events written at one location are asynchronously and reliably replicated to other locations. Then, at the arriving location, the merge phase is applied to each event (to merge with the existing event log at that location for the given document) to derive a converged state deterministically.
- the exemplary document database system operates in the merge phase at each location when the event log of each document is pruned.
- the exemplary document database system is configured to:
- a vector clock vc can be defined as a map from node identifiers taken from N to a Lamport clock.
- the vector clock is ordered using the coordinate-wise extension of natural numbers on the Lamport clock.
- a change c is a 4-tuple consisting of an attribute a, an operation o, and issuing node n, and a vector clock vc.
- C ranges over all possible operations c, where attributes range over the natural numbers.
- C ⁇ (a, o, n, vc)
- a change set cs is a set of changes c.
- the set of all possible change sets CS is represented by the powerset of changes C.
- CS P(C)
- a change log cl is defined as a set of changes c.
- the set of all possible change logs CL is taken from the powerset of change sets CS.
- CL P(CS)
- node(c) ⁇ 3 (c)
- a function type is defined below to access the type of change for a given change c using the standard projection on the standard projection of the change c.
- type(c) ⁇ 1 ( ⁇ 2 (c))
- FIG. 4 is a flowchart illustrating the exemplary garbage collection process 400 .
- step 402 of process 400 for a given attribute, the vector clock vc 1 of a change c 1 (of change set cs 1 ) is compared to a vector clock vc 2 of a change c 2 (of change set cs 2 ).
- step 404 of process 400 the exemplary system may determine that a change c 1 is superseded by another change c 2 if the changes are for the same attribute and vector clock vc of change c 1 is ordered strictly before the associated vector clock vc of change c 2 .
- a change set cs 1 may include changes c 1a , c 1b , . . . c 1n and a change set cs 2 may include c 2a a, c 2b , . . . c 2n .
- Each change c is associated with a vector clock vc, as follows:
- a change set cs 1 may be superseded by a change set cs 2 if the respective vector clocks vc 1 of each change c 1 is ordered before the corresponding ones of the respective vector clocks vc 2 of each change c 2 .
- the exemplary system may determine that a change set cs is redundant with respect to a change log cl if, for each change in the change set cs (e.g., change set cs 1 ), there exists a change in another change set cs' (e.g., change set cs 2 ) taken from the change log cl that supersedes those changes.
- redundant cv (cs,cl) ⁇ c ⁇ cs, ⁇ c′ ⁇ cs′
- the exemplary system may eliminate (e.g., archive, remove, permanently delete, etc.) the change set cs 1 from the document database if redundant with change set cs 2 .
- documents with a single attribute may include as many as N non-redundant change sets cs, where N is the number of nodes in the cluster.
- N is the number of nodes in the cluster.
- a DC can include a cluster of N nodes starting with an empty document. If all nodes cannot directly communicate with any of the other nodes, and if each node generates a change to the attribute of the document before it can communicate that change to any of the other nodes, then none of the changes can supersede any of the other changes. Therefore, if none of the changes are superseded by any of the other changes, none of the change sets cs will be considered redundant.
- documents with M attributes may include as many as N non-redundant change sets cs for each attribute, where N is the number of nodes in the cluster.
- the exemplary process considers update operations and keeps all concurrent changes in the change log cl until each change set cs in the change log cs is considered redundant.
- the system retains the concurrent update with the greatest node identifier. Note that, in this exemplary embodiment, removes are not considered in lexicographical sorting.
- FIG. 5 is a flowchart illustrating the garbage collection process 500 which may leverage lexicographical sorting.
- step 502 a of process 500 for a given attribute, the vector clock vc 1 of a change ci is compared to a vector clock vc 2 of a change c 2 .
- the exemplary system may determine that a change c 1 is superseded by another change c 2 if the changes are for the same attribute and change c 1 's associated vector clock vc is ordered strictly before the change c 2 's associated vector clock.
- step 502 b the node identifier of the change c 1 is compared to the node identifier of change c 2 .
- the exemplary system may determine that the change ci is superseded by change c 2 if the changes c 1 and c 2 are concurrent, but the node identifier for the change c 2 is strictly greater.
- steps 502 a and 504 a may be executed for each change c of a change set cs.
- the exemplary system may determine that a change set cs is redundant with respect to a change log cl if, for all changes in the change set cs, there exists a change c′ in another change set cs' taken from the change log cl that supersedes the change c.
- redundant ls ,(cs,cl) ⁇ c ⁇ cs, ⁇ c′ ⁇ cs′
- the exemplary system may eliminate (e.g., archive, remove, permanently delete, etc.) the change set cs 1 from the document database if redundant with change set cs 2 .
- Lexicographical Sorting Minimality of Garbage Collection
- documents with a single attribute may include only a single non-redundant change set cs.
- a DC can include a cluster of N nodes starting with an empty document. If, for some time, all nodes cannot directly communicate with any of the other nodes, and if each node generates a change to that attribute before it can communicate that change to any of the other nodes, then none of the changes can supersede any of the other changes. Given that each node has a unique node identifier, one of the changes must supersede the other. Therefore, if, for every pair of change sets cs, one of the change sets cs must supersede the other, then transitively only a single change set cs will be non-redundant.
- Documents with M attributes may include as many as M non-redundant change sets cs.
- the exemplary garbage collection process may arbitrate on concurrent updates using the lexicographically greatest node identifier, and/or may consider updates where updates should supersede removes.
- FIG. 6 is a flowchart illustrating the garbage collection process 600 which may leverage prioritization of updates over removes.
- step 602 a of process 600 for a given attribute, the vector clock vc 1 of a change c 1 is compared to a vector clock vc 2 of a change c 2 .
- the exemplary system may determine that a change c 1 may be superseded by another change c 2 if the changes are for the same attribute but change c 1 's associated vector clock vc is ordered strictly before change c 2 's associated vector clock vc.
- step 602 b the lexicographical order of the change c 1 is compared to the lexicographical order of change c 2 .
- the exemplary system may determine that the change c 1 may be superseded by change c 2 if the changes are concurrent and the update with the greatest lexicographical order is preferred when both types of change are updates.
- the system is configured to compare the change type of change c 1 to the change type of change c 2 .
- step 604 c the system may determine that the change c 1 may be superseded by change c 2 if the change type of change c 1 is a remove and the change type of change c 2 is an update, as updates are preferred over removals.
- the exemplary system may determine that a change set cs is redundant with respect to a change log cl if, for all changes in the change set cs, there exists a change c' in another change set cs' taken from the change log cl that supersedes the change c.
- redundant ur (cs,cl) ⁇ c ⁇ cs, ⁇ c′ ⁇ cs′
- the exemplary system may eliminate (e.g., archive, remove, permanently delete, etc.) the change set cs 1 from the document database if redundant with change set cs 2 .
- documents with a single attribute may include only a single non-redundant change set if all of the types of operations performed are updates.
- a DC can include a cluster of N nodes starting with a document with a single attribute set to 1. If all nodes cannot directly communicate with any of the other nodes, and if each node generates an update to that attribute before it can communicate that change to any of the other nodes, then none of the changes can supersede any of the other changes. Given that each node has a unique node identifier, one of the changes can supersede the other based on the node identifier. Therefore, if, for every pair of change sets, one of the change sets must supersede the other, then transitively only a single change set will be non-redundant.
- documents with a single attribute may include only a single non-redundant change set if the types of operations performed are updates with a single removal by the first node.
- a DC can include a cluster of N nodes starting with a document with a single attribute set to 1. If (i) all nodes cannot directly communicate with any of the other nodes, (ii) each node generates an update to that attribute, and (iii) the first node removes that attribute, then before any of the nodes can communicate with any other nodes none of the changes can supersede any of the other changes. Given that updates override removals, and that each node has a unique node identifier that can supersede any other nodes based on removals, transitively only a single change set will be non-redundant.
- documents with a single attribute may include only a single non-redundant change set if the types of operations performed are removes with a single update by the first node.
- a DC can include a cluster of N nodes starting with a document with a single attribute set to 1. If (i) all nodes cannot directly communicate with any of the other nodes, (ii) each node generates a remove for that attribute, and (iii) the first node updates that attribute, then before any of the nodes can communicate with any other nodes none of the changes can supersede any of the other changes. Given that updates override removals, and that each node has a unique node identifier that can supersede any other nodes based on removals (by Lemma 4.1), transitively, only a single change set will be non-redundant.
- Documents with M attributes may include as many as M non-redundant change sets.
- some or all of the processing described above can be carried out on a personal computing device, on one or more centralized computing devices, or via cloud-based processing by one or more servers. In some examples, some types of processing occur on one device and other types of processing occur on another device. In some examples, some or all of the data described above can be stored on a personal computing device, in data storage hosted on one or more centralized computing devices, or via cloud-based storage. In some examples, some data are stored in one location and other data are stored in another location. In some examples, quantum computing can be used. In some examples, functional programming languages can be used. In some examples, electrical memory, such as flash-based memory, can be used.
- FIG. 7 is a block diagram of an example computer system 700 that may be used in implementing the technology described in this document.
- General-purpose computers, network appliances, mobile devices, or other electronic systems may also include at least portions of the system 700 .
- the system 700 includes a processor 710 , a memory 720 , a storage device 730 , and an input/output device 740 .
- Each of the components 710 , 720 , 730 , and 740 may be interconnected, for example, using a system bus 750 .
- the processor 710 is capable of processing instructions for execution within the system 700 .
- the processor 710 is a single-threaded processor.
- the processor 710 is a multi-threaded processor.
- the processor 710 is capable of processing instructions stored in the memory 720 or on the storage device 730 .
- the memory 720 stores information within the system 700 .
- the memory 720 is a non-transitory computer-readable medium.
- the memory 720 is a volatile memory unit.
- the memory 720 is a non-volatile memory unit.
- the storage device 730 is capable of providing mass storage for the system 700 .
- the storage device 730 is a non-transitory computer-readable medium.
- the storage device 730 may include, for example, a hard disk device, an optical disk device, a solid-date drive, a flash drive, or some other large capacity storage device.
- the storage device may store long-term data (e.g., database data, file system data, etc.).
- the input/output device 740 provides input/output operations for the system 700 .
- the input/output device 740 may include one or more of a network interface devices, e.g., an Ethernet card, a serial communication device, e.g., an RS-232 port, and/or a wireless interface device, e.g., an 802.11 card, a 3G wireless modem, or a 4G wireless modem.
- the input/output device may include driver devices configured to receive input data and send output data to other input/output devices, e.g., keyboard, printer and display devices 760 .
- mobile computing devices, mobile communication devices, and other devices may be used.
- At least a portion of the approaches described above may be realized by instructions that upon execution cause one or more processing devices to carry out the processes and functions described above.
- Such instructions may include, for example, interpreted instructions such as script instructions, or executable code, or other instructions stored in a non-transitory computer readable medium.
- the storage device 730 may be implemented in a distributed way over a network, such as a server farm or a set of widely distributed servers, or may be implemented in a single computing device.
- the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus.
- the computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them.
- system may encompass all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers.
- a processing system may include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- a processing system may include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
- a computer program (which may also be referred to or described as a program, software, a software application, a module, a software module, a script, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
- a computer program may, but need not, correspond to a file in a file system.
- a program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code).
- a computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
- the processes and logic flows described in this specification can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output.
- the processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- special purpose logic circuitry e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- Computers suitable for the execution of a computer program can include, by way of example, general or special purpose microprocessors or both, or any other kind of central processing unit.
- a central processing unit will receive instructions and data from a read-only memory or a random access memory or both.
- a computer generally includes a central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data.
- a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks.
- mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks.
- a computer need not have such devices.
- a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few.
- PDA personal digital assistant
- GPS Global Positioning System
- USB universal serial bus
- Computer readable media suitable for storing computer program instructions and data include all forms of nonvolatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD-ROM and DVD-ROM disks.
- semiconductor memory devices e.g., EPROM, EEPROM, and flash memory devices
- magnetic disks e.g., internal hard disks or removable disks
- magneto optical disks e.g., CD-ROM and DVD-ROM disks.
- the processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
- a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer.
- a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
- keyboard and a pointing device e.g., a mouse or a trackball
- Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
- a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a
- Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components.
- the components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
- LAN local area network
- WAN wide area network
- the computing system can include clients and servers.
- a client and server are generally remote from each other and typically interact through a communication network.
- the relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
- the term “approximately”, the phrase “approximately equal to”, and other similar phrases, as used in the specification and the claims should be understood to mean that one value (X) is within a predetermined range of another value (Y).
- the predetermined range may be plus or minus 20%, 10%, 5%, 3%, 1%, 0.1%, or less than 0.1%, unless otherwise indicated.
- a reference to “A and/or B”, when used in conjunction with open-ended language such as “comprising” can refer, in one embodiment, to A only (optionally including elements other than B); in another embodiment, to B only (optionally including elements other than A); in yet another embodiment, to both A and B (optionally including other elements); etc.
- the phrase “at least one,” in reference to a list of one or more elements, should be understood to mean at least one element selected from any one or more of the elements in the list of elements, but not necessarily including at least one of each and every element specifically listed within the list of elements and not excluding any combinations of elements in the list of elements.
- This definition also allows that elements may optionally be present other than the elements specifically identified within the list of elements to which the phrase “at least one” refers, whether related or unrelated to those elements specifically identified.
- “at least one of A and B” can refer, in one embodiment, to at least one, optionally including more than one, A, with no B present (and optionally including elements other than B); in another embodiment, to at least one, optionally including more than one, B, with no A present (and optionally including elements other than A); in yet another embodiment, to at least one, optionally including more than one, A, and at least one, optionally including more than one, B (and optionally including other elements); etc.
- ordinal terms such as “first,” “second,” “third,” etc., in the claims to modify a claim element does not by itself connote any priority, precedence, or order of one claim element over another or the temporal order in which acts of a method are performed. Ordinal terms are used merely as labels to distinguish one claim element having a certain name from another element having a same name (but for use of the ordinal term), to distinguish the claim elements.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
-
- i. Geo-replicated JSON document database that provides strong consistency (single-master) or session guarantees (multi-master);
- ii. Operation-based CRDT document model with garbage collection for automatic resolution of concurrent, conflicting changes; and/or
- iii. Transactions with serializable isolation (single-master) or parallel snapshot isolation (multi-master).
-
- 1. Geo-location. If the document provides afield containing a latitude-longitude tuple, the tuple can be used to facilitate geo-queries.
- 2. Hash. The hash index can be used to index a document based on a specific field, if that field happens to be unique.
- 3. Persistent. Persistent indexes are durably stored hash indexes; instead of being recreated upon failure of a DC, they are stored durably on disk.
- 4. Full-text. Given a field to index, a Lucene-style full-text search index can be built across all documents in the collection.
- 5. Skip-list. The skip-list index indexes documents using a given field and provides support for efficient range queries.
-
- (1) In the prepare phase, a CmRDT operation is executed on the local replica.
-
- (2) The merge phase applies the disseminated operation at all replicas.
| { | ||
| first_name: John, | ||
| last_name: Doe, | ||
| zipcode: 94087 | ||
| } | ||
| <vector_clock, insert, first_name, John> | ||
| <vector_clock, insert, last_name, Doe> | ||
| <vector_clock, insert, zipcode, 94087> | ||
<vector_clock, update, first_name, Jane>
-
- 1. Prune the event log for each document at each location so that the size of the document does not grow in proportion to number of times the document is changed;
- 2. Operates in the merge phase when the event logs are pruned (i.e., collect garbage); and/or
- 3. Accomplish the above in a coordination-free manner. In other words, each location does the pruning of its event logs without requiring coordination or synchronization with other locations that are spread around the globe.
N={n1, . . . , nn}
VC={n→N} where n∈N
T={remove, update}
remove≤T remove<update≤T update
O={(t,v)|t∈T, v∈N}
C={(a, o, n, vc)|a∈N,o ∈,n∈N, vc∈VC}
CS=P(C)
CL=P(CS)
attr(c)=π1(c)
node(c)=π3(c)
type(c)=π1(π2(c))
supersededcv(c1, c2)=attr(c1)=attr(c2)∧vc(c2)<vc(c2)
This step may be executed for each change c of a change set cs. For example, a change set cs1 may include changes c1a, c1b, . . . c1n and a change set cs2 may include c2aa, c2b, . . . c2n. Each change c is associated with a vector clock vc, as follows:
| TABLE 1 |
| Comparison of change set cs1 to change set |
| cs2 for the exemplary garbage collection method. |
| Change set cs1 | Change set cs2 |
| Changes c1 | Vector clocks vc1 | Changes c2 | Vector clocks vc2 |
| c1a | vc1a | c2a | vc2a |
| c1b | vc1b | c2b | vc2b |
| . . . | . . . | . . . | . . . |
| c1n | vc1n | c2n | vc2n |
redundantcv(cs,cl)=∀c ∈cs,∃c′∈cs′|cs′ ∈cl∧supersededcv(c,c′)
redundantls,(cs,cl)=∀c∈cs, ∃c′∈cs′|cs′∈cl ∧supersededls,(c,c′)
In
Lexicographical Sorting—Minimality of Garbage Collection
supersededur(c1, c2)={true attr(c1)=attr(c2)∧vc(c1)<vc(c2) false attr(c1)=attr(c2)∧Vc(c1)>vc(c2) type(c2)>T type(c1) attr(c1)=attr(c2)∧vc(c1)≮vc(c2)∧vc(c2)≮vc(c1)∧type(c1)≠type(c2) node(c2) >node(c1) attr(c1)=attr(c2)∧vc(c1)≮vc(c2)∧vc(c2)≮vc(c1)∧type(c1)≠type(c2)
As detailed above for
redundantur(cs,cl)=∀c∈cs,∃c′∈cs′|cs′∈cl∧supersededur(c,c′)
In
Claims (11)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/897,997 US12271354B2 (en) | 2019-07-23 | 2022-08-29 | Methods and systems for garbage deletion in a document database |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201962877739P | 2019-07-23 | 2019-07-23 | |
| US16/935,839 US11429576B2 (en) | 2019-07-23 | 2020-07-22 | Methods and systems for garbage deletion in a document database |
| US17/897,997 US12271354B2 (en) | 2019-07-23 | 2022-08-29 | Methods and systems for garbage deletion in a document database |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/935,839 Continuation US11429576B2 (en) | 2019-07-23 | 2020-07-22 | Methods and systems for garbage deletion in a document database |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20230031418A1 US20230031418A1 (en) | 2023-02-02 |
| US12271354B2 true US12271354B2 (en) | 2025-04-08 |
Family
ID=74193103
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/935,839 Active 2040-11-13 US11429576B2 (en) | 2019-07-23 | 2020-07-22 | Methods and systems for garbage deletion in a document database |
| US17/897,997 Active 2040-07-22 US12271354B2 (en) | 2019-07-23 | 2022-08-29 | Methods and systems for garbage deletion in a document database |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/935,839 Active 2040-11-13 US11429576B2 (en) | 2019-07-23 | 2020-07-22 | Methods and systems for garbage deletion in a document database |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US11429576B2 (en) |
| EP (1) | EP3994581A4 (en) |
| CN (1) | CN114375444A (en) |
| WO (1) | WO2021016440A1 (en) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7428894B2 (en) * | 2020-04-20 | 2024-02-07 | 富士通株式会社 | Information processing device, information processing system, and information processing program |
| US11651030B2 (en) * | 2021-04-06 | 2023-05-16 | International Business Machines Corporation | Delta-based conflict-free replicated data type arrays using dot stores that map dots to dot stores |
| CN117216115B (en) * | 2023-11-09 | 2024-02-02 | 西安热工研究院有限公司 | DCS screen measurement point verification and subscription methods, systems, equipment and storage media |
| CN120144069B (en) * | 2025-05-16 | 2025-08-05 | 中电云计算技术有限公司 | Hard disk garbage collection method, device, electronic equipment and storage medium |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5649185A (en) * | 1991-03-01 | 1997-07-15 | International Business Machines Corporation | Method and means for providing access to a library of digitized documents and images |
| US20140032513A1 (en) * | 2008-02-19 | 2014-01-30 | Adobe Systems Incorporated | Determination of differences between electronic documents |
| US20170286476A1 (en) * | 2006-03-31 | 2017-10-05 | Amazon Technologies, Inc. | System and method for providing high availability data |
| US20180165781A1 (en) * | 2015-02-13 | 2018-06-14 | Yoti Holding Limited | Digital Identity System |
| US20200327116A1 (en) * | 2017-10-03 | 2020-10-15 | Lyconos, Inc. | Systems and methods for document automation |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8078582B2 (en) * | 2009-04-06 | 2011-12-13 | Microsoft Corporation | Data change ordering in multi-log based replication |
| US8341134B2 (en) * | 2010-12-10 | 2012-12-25 | International Business Machines Corporation | Asynchronous deletion of a range of messages processed by a parallel database replication apply process |
-
2020
- 2020-07-22 US US16/935,839 patent/US11429576B2/en active Active
- 2020-07-23 WO PCT/US2020/043235 patent/WO2021016440A1/en not_active Ceased
- 2020-07-23 EP EP20843191.6A patent/EP3994581A4/en active Pending
- 2020-07-23 CN CN202080066269.3A patent/CN114375444A/en active Pending
-
2022
- 2022-08-29 US US17/897,997 patent/US12271354B2/en active Active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5649185A (en) * | 1991-03-01 | 1997-07-15 | International Business Machines Corporation | Method and means for providing access to a library of digitized documents and images |
| US20170286476A1 (en) * | 2006-03-31 | 2017-10-05 | Amazon Technologies, Inc. | System and method for providing high availability data |
| US20140032513A1 (en) * | 2008-02-19 | 2014-01-30 | Adobe Systems Incorporated | Determination of differences between electronic documents |
| US20180165781A1 (en) * | 2015-02-13 | 2018-06-14 | Yoti Holding Limited | Digital Identity System |
| US20200327116A1 (en) * | 2017-10-03 | 2020-10-15 | Lyconos, Inc. | Systems and methods for document automation |
Non-Patent Citations (3)
| Title |
|---|
| Guy Harrison, "Yet Another Database Blog—Vector clocks", Oct. 12, 2015, 4 Pages. (Year: 2015). * |
| Priya Rajagopal, "Demystifying Conflict Resolution in Couchbase Mobile", May 25, 2017, 15 Pages. (Year: 2017). * |
| Ricky Ho, "Pragmatic Programming Techniques: NOSQL Patterns", Nov. 2009, 12 Pages. (Year: 2009). * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20230031418A1 (en) | 2023-02-02 |
| CN114375444A (en) | 2022-04-19 |
| WO2021016440A1 (en) | 2021-01-28 |
| EP3994581A1 (en) | 2022-05-11 |
| US20210064590A1 (en) | 2021-03-04 |
| EP3994581A4 (en) | 2023-07-05 |
| US11429576B2 (en) | 2022-08-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12271354B2 (en) | Methods and systems for garbage deletion in a document database | |
| US11874746B2 (en) | Transaction commit protocol with recoverable commit identifier | |
| Chandra | BASE analysis of NoSQL database | |
| EP3158469B1 (en) | Scalable eventual consistency system using logical document journaling | |
| CN104750720B (en) | The realization that high-performance data is handled under multi-thread concurrent access environment | |
| US12277140B2 (en) | Consensus protocol for asynchronous database transaction replication with fast, automatic failover, zero data loss, strong consistency, full SQL support and horizontal scalability | |
| CN119415481B (en) | Database-based file resource reuse library management method and device | |
| WO2022170979A1 (en) | Log execution method and apparatus, and computer device and storage medium | |
| US9390111B2 (en) | Database insert with deferred materialization | |
| CN119415143B (en) | Software configuration method and device | |
| US20250200070A1 (en) | Consensus Protocol For Asynchronous Database Transaction Replication With Fast, Automatic Failover, Zero Data Loss, Strong Consistency, Full SQL Support And Horizontal Scalability | |
| CN106959989A (en) | The synchronous method and device in master/slave data storehouse | |
| CN115774754A (en) | Metadata management method, device, equipment and medium based on distributed transaction | |
| US20250181423A1 (en) | Systems and methods for admission control for multi consensus-based replication | |
| US11392562B2 (en) | Hybrid client transaction mode for key value store | |
| US20250193127A1 (en) | Systems and methods for epoch last in first out (lifo) admission control | |
| Faria | High performance data processing | |
| Cilloni | Towards a unifying modeling framework for data-intensive tools | |
| WO2024081140A1 (en) | Configuration and management of replication units for asynchronous database transaction replication | |
| Frey et al. | D. 1.1–Survey on Weak Consistency Approaches for Large-Scale Systems | |
| Birman | Transactional Systems | |
| Lopes | Eventually Consistent Database Replication based on Conflict-Free Replicated Data Types |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: SMAL); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| AS | Assignment |
Owner name: FIRST-CITIZENS BANK & TRUST COMPANY, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:MACROMETA CORPORATION;REEL/FRAME:069699/0182 Effective date: 20241226 |
|
| AS | Assignment |
Owner name: MACROMETA CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:VENKATESH, CHETAN;GOKINA, DURGA;SIGNING DATES FROM 20210306 TO 20210329;REEL/FRAME:070415/0305 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| AS | Assignment |
Owner name: MACROMETA CORPORATION, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:COSYNE AI CORPORATION;REEL/FRAME:072340/0946 Effective date: 20250922 |
|
| AS | Assignment |
Owner name: FIRST-CITIZENS BANK & TRUST COMPANY, CALIFORNIA Free format text: PATENT ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITYAGREEMENT;ASSIGNOR:MACROMETA CORPORATION;REEL/FRAME:072939/0038 Effective date: 20250922 |