US20020002557A1 - Inherited information propagator for objects - Google Patents
Inherited information propagator for objects Download PDFInfo
- Publication number
- US20020002557A1 US20020002557A1 US09/157,728 US15772898A US2002002557A1 US 20020002557 A1 US20020002557 A1 US 20020002557A1 US 15772898 A US15772898 A US 15772898A US 2002002557 A1 US2002002557 A1 US 2002002557A1
- Authority
- US
- United States
- Prior art keywords
- objects
- modifications
- modified
- received
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Definitions
- This invention relates generally to the field of information processing, and in particular to the efficient propagation of updated inherited information for objects.
- a directory service is a program that performs that function. It keeps a database of information relating to each object which is stored in a domain.
- the domain can be thought of as all the storage space available for objects on one computer or multiple networked computers.
- the domain comprises multiple computers, there may be copies of the directory service database on each of the computers.
- a replicator function is used to initiate the change in the object's database information. The replicator also sends a message to other computers in the network to make the same change to the directory database.
- the directory database contains information which is intrinsic, or actually within an object as well as information which is inherited from other objects, referred to as parent objects.
- the actual inherited information is duplicated in the database. It may be passed on to children of the objects and grandchildren, and so on.
- a change to information, which may be inherited is made, one way to update the information would be to replicate the change in each object to which it applied by sending messages to other systems on an object by object basis.
- a change in a high level object may cause many such messages to be sent as the change propagates down to lower level objects. This may result in a large amount of network traffic, which could degrade the overall system performance.
- Inherited information changes are propagated in a directory associated with objects independent of replication of such changes to other copies of the directory. By propagating such changes in each directory without generating a replication message for each object so changed, network traffic is greatly reduced.
- the inherited information comprises security descriptors in one instance of the invention.
- the security descriptors are represented in a directory database and comprise permissions for accessing and modifying objects.
- the inherited information comprises parent lists that identify parents of each object in another instance of this invention. Each object in a hierarchy of objects is represented by a row in the database. Alternatively, a text file with one line per object, or files in a file system are used to represent objects.
- the directory service makes the change and a replicator sends a message to other copies of the directory database, which in one embodiment is represented in tree structure. Also, the directory service sends an event notification to a security descriptor propagator.
- the propagator traverses the directory tree in a breadth first manner, and modifies the security descriptors of all related objects. While breadth first provides some efficiencies, other traversal methods, such as depth first may also be used. Only when all the changes are committed, will the propagator complete the updating operation.
- a gate is used to control some types of access to the directory so that only one type of operation may proceed at any given time.
- a thread must enter the gate before starting a database transaction that will add a new object, and before entering a transaction that modifies inherited information on behalf of the propagator. Threads leave the gate after closing the database transaction.
- the gate ensures accuracy of the database in a dynamic changing environment.
- FIG. 1 is a block diagram of a hardware and operating environment of the present invention.
- FIG. 2 is a block diagram of a database object directory tree structure.
- FIG. 3 is a block diagram showing functions which allow modification and updating of the directory tree of FIG. 2.
- FIG. 4 is a table showing a portion of the directory tree relating to parent lists.
- FIG. 5 is a block diagram of a gate used to exclude certain threads from operating on the directory tree while other types of threads are accessing the directory.
- FIG. 1 provides a brief, general description of a suitable computing environment in which the invention may be implemented.
- the invention will hereinafter be described in the general context of computer-executable program modules containing instructions executed by a personal computer (PC).
- Program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- Those skilled in the art will appreciate that the invention may be practiced with other computer-system configurations, including hand-held devices, multiprocessor systems, microprocessor-based programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like which have multimedia capabilities.
- the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices linked through a communications network.
- program modules may be located in both local and remote memory storage devices.
- FIG. 1 employs a general-purpose computing device in the form of a conventional personal computer 20 , which includes processing unit 21 , system memory 22 , and system bus 23 that couples the system memory and other system components to processing unit 21 .
- System bus 23 may be any of several types, including a memory bus or memory controller, a peripheral bus, and a local bus, and may use any of a variety of bus structures.
- System memory 22 includes read-only memory (ROM) 24 and random-access memory (RAM) 25 .
- ROM read-only memory
- RAM random-access memory
- a basic input/output system (BIOS) 26 stored in ROM 24 , contains the basic routines that transfer information between components of personal computer 20 . BIOS 24 also contains start-up routines for the system.
- Personal computer 20 further includes hard disk drive 27 for reading from and writing to a hard disk (not shown), magnetic disk drive 28 for reading from and writing to a removable magnetic disk 29 , and optical disk drive 30 for reading from and writing to a removable optical disk 31 such as a CD-ROM or other optical medium.
- Hard disk drive 27 , magnetic disk drive 28 , and optical disk drive 30 are connected to system bus 23 by a hard-disk drive interface 32 , a magnetic-disk drive interface 33 , and an optical-drive interface 34 , respectively.
- the drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for personal computer 20 .
- exemplary environment described herein employs a hard disk, a removable magnetic disk 29 and a removable optical disk 31
- exemplary computer-readable media which can store data accessible by a computer may also be used in the exemplary operating environment.
- Such media may include magnetic cassettes, flash-memory cards, digital versatile disks, Bernoulli cartridges, RAMs, ROMs, and the like.
- Program modules may be stored on the hard disk, magnetic disk 29 , optical disk 31 , ROM 24 and RAM 25 .
- Program modules may include operating system 35 , one or more application programs 36 , other program modules 37 , and program data 38 .
- a user may enter commands and information into personal computer 20 through input devices such as a keyboard 40 and a pointing device 42 .
- Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
- serial-port interface 46 coupled to system bus 23 ; but they may be connected through other interfaces not shown in FIG. 1, such as a parallel port, a game port, or a universal serial bus (USB).
- a monitor 47 or other display device also connects to system bus 23 via an interface such as a video adapter 48 .
- a video camera or other video source is represented at 60 as being coupled to video adapter 48 for providing video images for video conferencing and other applications, which may be processed and further transmitted by personal computer 20 .
- a separate video card may be provided for accepting signals from multiple devices 60 , including satellite broadcast encoded images.
- personal computers typically include other peripheral output devices (not shown) such as speakers and printers.
- Personal computer 20 may operate in a networked environment using logical connections to one or more remote computers such as remote computer 49 .
- Remote computer 49 may be another personal computer, a server, a router, a network PC, a peer device, or other common network node. It typically includes many or all of the components described above in connection with personal computer 20 ; however, only a storage device 50 is illustrated in FIG. 1.
- the logical connections depicted in FIG. 1 include local-area network (LAN) 51 and a wide-area network (WAN) 52 .
- LAN local-area network
- WAN wide-area network
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
- PC 20 When placed in a LAN networking environment, PC 20 connects to local network 51 through a network interface or adapter 53 .
- PC 20 When used in a WAN networking environment such as the Internet, PC 20 typically includes modem 54 or other means for establishing communications over network 52 .
- Modem 54 may be internal or external to PC 20 , and connects to system bus 23 via serial-port interface 46 .
- program modules such as those comprising Microsoft® Word which are depicted as residing within 20 or portions thereof may be stored in remote storage device 50 .
- the network connections shown are illustrative, and other means of establishing a communications link between the computers may be substituted.
- Software may be designed using many different methods, including object oriented programming methods.
- C++ and Java are two examples of common object oriented computer programming languages that provide functionality associated with object oriented programming.
- Object oriented programming methods provide a means to encapsulate data members (variables) and member functions (methods) that operate on that data into a single entity called a class.
- Object oriented programming methods also provide a means to create new classes based on existing classes. These new classes may be referred to as children of the classes from which they are created, parent classes, and they may inherit the methods of their parents.
- An object is an instance of a class.
- the data members of an object are attributes that are stored inside the computer memory, and the methods are executable computer code that act upon this data, along with potentially providing other services.
- the notion of an object is exploited in the present invention in that certain aspects of the invention are implemented as objects in one embodiment.
- An interface is a group of related functions that are organized into a named unit. Each interface may be uniquely identified by some identifier. Interfaces have no instantiation, that is, an interface is a definition only without the executable code needed to implement the methods which are specified by the interface.
- An object may support an interface by providing executable code for the methods specified by the interface. The executable code supplied by the object must comply with the definitions specified by the interface. The object may also provide additional methods. Those skilled in the art will recognize that interfaces are not limited to use in or by an object oriented programming environment.
- a directory tree is a visual representation of the relationships between multiple objects on a storage domain.
- the storage domain represents storage on a single computer system, or multiple computer systems having some form of shared storage. While a tree is described, other structures may also be used as the relationships between objects can take many different forms, such as an arbitrary acyclic graph.
- Tree 210 has representations of nine objects which are abstract collections of data.
- a top level object 212 is represented by a “1” in a circle. The other eight objects are similarly represented by corresponding integers.
- a second object 214 is a child of the first object, as is a third object 216 .
- the third object 216 has three children, 218 , 220 and 222 .
- Object 222 also has three child objects 224 , 226 , and 228 .
- the objects stored in a directory follow a class hierarchy.
- an object of type User may have the data Given Name, but an object of type Computer does not.
- an object of type Special User where Special User is a subclass of User, inherits the ability to store the data Given Name, and also has the new ability to store the data Special Data.
- Inherited data also includes information describing who can access the object, and what level of access permission they are given. Such permissions include the ability to only read the object, or to both read and write or modify the object among many other possible permissions.
- the permissions, and other inherited information such as parent lists and other information relating and identifying objects are actually stored in a transactioned database 310 as seen in FIG. 3, and a portion of which is shown at 410 in FIG. 4.
- Other storage mechanisms such as a text file with one line per object, or files in a file system are used to represent objects are used in alternative embodiments.
- Database 310 contains a row of information for each object which describes the inherited characteristics of the object as well as other maintenance information about the object such as ownership and an identifier.
- a directory service agent 312 interfaces to the database and performs operations on the data, including allowing modifications and updates as well as performing searches on the data in the database 310 .
- a set of application programming interfaces (APIs) 314 provide an interface into the services provided by the directory service agent 312 to allow users, both human and other programs, to generate requests to use the data in the database 310 .
- One common request is to modify the permissions to access an object as represented by an access control list stored as a security descriptor in the database.
- Such requests and the manner in which changes to a security descriptor is performed is well known in the art.
- One common example would be to add a printer object at some point in a network, or to give permission to a new employee or group of users to access the object.
- a replication of that request is made by a replicator 316 in a known manner.
- the replication is packaged up into a communication 318 and sent to other systems which have a copy of the database 310 which must also be updated.
- this process of sending the message or replicating the change to other copies of the database is all that is needed.
- a change to inheritable information in an object may also mean that children of the changed object need to be changed.
- the directory service agent then writes an indication of which object has been changed (basically a database row number or id) into a propagation queue or list, which is read by a propagator module 322 which is referred to as a daemon that hangs off the side of the directory database.
- the propagator 322 reads the queue, and then finds all the children affected by the change and modifies their inherited information by reading each affected object and its parent to determine how to change the inherited information.
- a first column 412 contains an object identifier, shown for simplicity as an integer corresponding to the integers in circles representing objects in FIG. 2.
- An object identifier shown for simplicity as an integer corresponding to the integers in circles representing objects in FIG. 2.
- Nine rows are shown, each row also having a parent column 413 identifying the parent, a parent list column 414 identifying the full line of parents or heritage of each object, and a security descriptor column 416 showing a simplified representation of a security descriptor.
- the first object has only itself in its parent list column 414 because it is a top level object.
- the second and third objects both have the first object as a parent (inherited from their parent's parent list) as well as themselves.
- the fourth, fifth and sixth objects have both the first and third objects as parents (inherited from their parent's parent list) as well as themselves.
- the seventh, eighth and ninth objects have the first, third and sixth objects as parents (inherited from their parent's parent list) as well as themselves.
- the first object has a security descriptor simply referred to as V 2 for this embodiment. Each of the other objects in the table ultimately derives from object 1 , and inherits its security descriptor.
- the directory service agent 312 When a request is issued through an API 314 to change the security descriptor of the first object from V 2 to V 3 , the directory service agent 312 writes the change of the security descriptor from V 2 to V 3 and verifies that the user requesting the change is authorized to make the change, and that the change is a valid change.
- the id of the object, “1” in this case is then written to the propagator queue 320 , which is a FIFO queue, with some pruning to avoid duplication of effort as will be discussed below.
- Each change to a dynamically inheritable attribute of an object results in the id of the object changed being written to the queue 320 .
- the change to the security descriptor is committed to the database and written to non-volatile storage such as disk.
- the propagator 322 is notified via an event such as a win 32 event or other form of communication that a change to a dynamically inheritable attribute has been written and put in the queue. While a queue is used in this embodiment, it will be recognized that other forms of notification may be used, such as the use of a direct work request indicating the object that has been changed.
- the replicator 316 is told of the change, which results in a message being created which is representative of the change to be made. The message is then sent to other systems having copies of the database which must be synchronized with the current copy.
- the queue of propagations to be done is refreshed from saved information.
- a single propagation thread is started. Note, that in one embodiment, propagations are serialized such that one propagation will complete before the next is done to simplify understanding of propagation interrelations and also to avoid spawning many propagation threads.
- the thread waits on the propagation queue, and upon receiving the event, propagator 322 in each system having a copy of the database needed changing, wakes up and reads the first entry in the queue 320 . It then enters a gate 510 as shown in FIG. 5. Gate 510 is used to ensure that other accesses to the database are not being made that might interfere with, or be incorrectly processed as a result of the modifications to be made.
- Gates are well known exclusion constructs and this one will not be described in great detail other than to say that threads generated by the propagator to update dynamically inherited information are deemed to be “writers”, and all others adding objects “readers”. Threads not doing these operations don't need to enter the gate. Only one type of thread (“reader” or “writer”) is allowed in the gate at any one time, although many threads of one type may be inside the gate at once. The number of such threads in the gate is indicated at 512 , and the type of thread, whether a reader or a writer is indicated at 514 . If at least one of either type is in the gate, the other type must wait until all are done and out of the gate before entering.
- the propagator finds the identity of the first object from the queue. Then, the propagator thread enters the gate. It reads the security descriptor from the object and from its parent and calculates the new security descriptor, and then writes it to the object. The write is done in such a manner that it does not trigger a directory replication event. This transaction is then committed, and the propagator thread then leaves the gate. At this point, only the security descriptor for the first object has been changed. However, since the first object may be the parent of many other objects, their security descriptors must also be changed. To do this, the propagator generates a list of children of the first object using a breadth first traversal of the tree.
- the propagator will look for “1s” in the database parent column, and identify the second and third objects as children of the first object and add them to the list of children yet to be processed.
- the propagator does not need to enter the gate to generate this list.
- the use of the gate by add threads guarantees that every child will either be found by the propagator, or that new children not noticed by the propagator will be added AFTER the data on the parent has been fixed by the propagator and will therefore have correct inherited information.
- the propagator will then reenter the gate and recalculate the security descriptor of the second object by reading the second object and its parent, the first object. It will write the new security descriptor and exit the gate. It will then look for children of the second object.
- Finding none if will remove the second object from the list of children and move on to the third object It makes the change by reentering the gate, reading the third object and its parent to recalculate the security descriptor and then leaving the gate. This time, it does find children of the third object, namely the fourth, fifth and sixth objects and adds them to the list of children. Proceeding with the search and change and addition and removal of objects to the list of children, it finally changes the ninth object, ensures it is stored to disk, and then removes the id of the first object from the queue once the list of children is empty.
- Each database on each system is so updated by its own propagator.
- the queue may have update indications placed on it in at least two ways. The first is as described above, via an API call from a user such as a person or another program. Another way for the change to be queued arises from the receipt of a message such as message 318 indicative of a change to be applied to the database.
- the directory service agent receives such messages and updates the queue with the id of the object to which the change should be applied.
- the propagator operates independent of the replicator portion of the directory service agent, and makes changes to all affected objects without the generation of further network traffic.
- the propagator There are a few optimizations performed by the propagator to enhance performance of the propagation of a change or changes to the database. The first involves comparing the previous security descriptor of a child with the new calculated security descriptor. If there is no change, there is no need to find the children of such child; since the data was already correct on the child object, then the objects which inherit from this child object will also have correct data. Eliminating the search and attempted updates can save significant time. If this is the first traversal after a power up, and the propagation queue was not empty after power up, the propagator must continue to identify children and add them to the list, even if no changes are detected. This is because a propagation is being restarted that was probably interrupted by a power cycle.
- the top of the tree may have already been done, but the bottom of the tree may not have been done. If the traversal is stopped too early, the change would not be properly propagated to the lowest level children. Similarly, the security descriptor of direct children of the start object is always verified. This is because the security descriptor of the start object has already been modified by the directory service or the replicator, and so the newly calculated security descriptor would not be different unless there had been a rename or reparent operation, or if another propagation had been queued for the start object's parent.
- Another optimization is the use of the breadth first traversal. Any tree traversal could be used, but if a breadth first traversal is used, then all children of an object are processed as a group. Thus the parent object need be read only once, and its security descriptor may be held in memory while its children are processed, at which time it is no longer needed. Then, the security descriptor of the parent of the next group of peers is read.
- a further example of changes to dynamically inherited information comprises a move or reparenting operation.
- Parent lists will then need to be modified to properly reflect heritage, and also security descriptors may need to be modified if a new parent has different security permissions.
- the parenting information 414 would no longer be correct. Instead of “6,3,1,” it should be “6,5,3,1”.
- the seventh, eighth and ninth objects would also have changed parent lists. The same process is followed to propagate the change by queueing the id of the object that changed in the propagator queue 320 . The propagator again performs the traversal of the directory tree, changing parent lists as it goes.
- a table is used to implement the queue 320 in one embodiment.
- a unique incrementing number is used in one column to enable the table to function as a queue.
- the queue also holds the id of the node or object on which to start the propagation.
- a flag is used to describe whether the item in the queue may be trimmed from the queue if another propagation subsumes it. The Null value is used if the item may not be trimmed, otherwise it is non-null.
- the directory service agent causes the propagation itself, it is marked as trimmable. If it is caused by an action taken on behalf of a client, then it is not marked as trimmable.
- a client id is also associated with a client that made the change that caused the propagation. Two indicies are also used. The first is an order index that is used to find the next element in the queue.
- a trim index is a compound index over begin-node and the trimmable flag and is used to track all trimmable nodes.
- the trim index of the propagation table is read. If the current node is in that index, it is removed from the table, as the propagation is being done, and there are no clients interested in progress information. This allows trimming of most if not all the propagation events caused by an initial replication of large portions of a tree.
- the propagation thread keeps track of several items, such as the number of objects touched during the propagation and a unique ID for the propagation. This information may be used to give clients details about the state of the security descriptor propagation underway.
- Dynamically inherited information in a database is performed by the use of a propagator which finds related objects and recalculates the appropriate information to update.
- a propagator which finds related objects and recalculates the appropriate information to update.
- the propagator is described as using a breadth first tree traversal. This type of search works well because the process to update the inherited information needs to read the parent of the child as well as the child.
- the breadth first tree search ensures that needed data is more likely to be in memory and immediately available to make the update. Other searches may work better on different directory structures.
- a propagation queue is described as one form of list for keeping track of propagations to perform.
- a stack may also be used instead of a queue.
- LIFO methods of adding and removing data from the list would work as well as FIFO. In either case, when the list of pending propagations is completely emptied, the resulting trees hold the same information.
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
Description
- This invention relates generally to the field of information processing, and in particular to the efficient propagation of updated inherited information for objects.
- A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawing hereto: Copyright© 1998, Microsoft Corporation, All Rights Reserved.
- Computer operating systems need a way to keep track of information which is stored in or describes objects. A directory service is a program that performs that function. It keeps a database of information relating to each object which is stored in a domain. The domain can be thought of as all the storage space available for objects on one computer or multiple networked computers. When the domain comprises multiple computers, there may be copies of the directory service database on each of the computers. When an object is changed, and the information in the database needs to change to reflect that change in the object, a replicator function is used to initiate the change in the object's database information. The replicator also sends a message to other computers in the network to make the same change to the directory database.
- In WindowsNT®, the directory database contains information which is intrinsic, or actually within an object as well as information which is inherited from other objects, referred to as parent objects. The actual inherited information is duplicated in the database. It may be passed on to children of the objects and grandchildren, and so on. When a change to information, which may be inherited, is made, one way to update the information would be to replicate the change in each object to which it applied by sending messages to other systems on an object by object basis. For large object hierarchies, a change in a high level object may cause many such messages to be sent as the change propagates down to lower level objects. This may result in a large amount of network traffic, which could degrade the overall system performance.
- There is a need to efficiently and reliably change directory information without generating a large amount of network traffic. There is a need to ensure that such changes are made correctly even when other objects are attempted to be modified during the changes.
- Inherited information changes are propagated in a directory associated with objects independent of replication of such changes to other copies of the directory. By propagating such changes in each directory without generating a replication message for each object so changed, network traffic is greatly reduced.
- The inherited information comprises security descriptors in one instance of the invention. The security descriptors are represented in a directory database and comprise permissions for accessing and modifying objects. The inherited information comprises parent lists that identify parents of each object in another instance of this invention. Each object in a hierarchy of objects is represented by a row in the database. Alternatively, a text file with one line per object, or files in a file system are used to represent objects. When a security descriptor is modified by a user, the directory service makes the change and a replicator sends a message to other copies of the directory database, which in one embodiment is represented in tree structure. Also, the directory service sends an event notification to a security descriptor propagator. The propagator traverses the directory tree in a breadth first manner, and modifies the security descriptors of all related objects. While breadth first provides some efficiencies, other traversal methods, such as depth first may also be used. Only when all the changes are committed, will the propagator complete the updating operation.
- A gate is used to control some types of access to the directory so that only one type of operation may proceed at any given time. A thread must enter the gate before starting a database transaction that will add a new object, and before entering a transaction that modifies inherited information on behalf of the propagator. Threads leave the gate after closing the database transaction. The gate ensures accuracy of the database in a dynamic changing environment.
- The propagation of changes is moved into the core of the directory service, relieving calling applications from having to replicate changes themselves, and avoiding large amounts of network traffic which would result from such replication.
- FIG. 1 is a block diagram of a hardware and operating environment of the present invention.
- FIG. 2 is a block diagram of a database object directory tree structure.
- FIG. 3 is a block diagram showing functions which allow modification and updating of the directory tree of FIG. 2.
- FIG. 4 is a table showing a portion of the directory tree relating to parent lists.
- FIG. 5 is a block diagram of a gate used to exclude certain threads from operating on the directory tree while other types of threads are accessing the directory.
- In the following detailed description of exemplary embodiments of the invention, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration specific exemplary embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical, electrical and other changes may be made without departing from the spirit or scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.
- The detailed description is divided into multiple sections. In the first section, the hardware and the operating environment in conjunction with which embodiments of the invention may be practiced are described. In the second section, a directory, and services that modify and maintain the directory by propagation of changes within the directory are shown and described. Next, a gate is described which controls which threads may operate on the directory at any given time, followed by a conclusion which summarizes the invention and points out some of the potential benefits and describes further alternative embodiments.
- FIG. 1 provides a brief, general description of a suitable computing environment in which the invention may be implemented. The invention will hereinafter be described in the general context of computer-executable program modules containing instructions executed by a personal computer (PC). Program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Those skilled in the art will appreciate that the invention may be practiced with other computer-system configurations, including hand-held devices, multiprocessor systems, microprocessor-based programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like which have multimedia capabilities. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
- FIG. 1 employs a general-purpose computing device in the form of a conventional
personal computer 20, which includesprocessing unit 21,system memory 22, andsystem bus 23 that couples the system memory and other system components to processingunit 21.System bus 23 may be any of several types, including a memory bus or memory controller, a peripheral bus, and a local bus, and may use any of a variety of bus structures.System memory 22 includes read-only memory (ROM) 24 and random-access memory (RAM) 25. A basic input/output system (BIOS) 26, stored in ROM 24, contains the basic routines that transfer information between components ofpersonal computer 20. BIOS 24 also contains start-up routines for the system.Personal computer 20 further includeshard disk drive 27 for reading from and writing to a hard disk (not shown),magnetic disk drive 28 for reading from and writing to a removablemagnetic disk 29, andoptical disk drive 30 for reading from and writing to a removableoptical disk 31 such as a CD-ROM or other optical medium.Hard disk drive 27,magnetic disk drive 28, andoptical disk drive 30 are connected tosystem bus 23 by a hard-disk drive interface 32, a magnetic-disk drive interface 33, and an optical-drive interface 34, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data forpersonal computer 20. Although the exemplary environment described herein employs a hard disk, a removablemagnetic disk 29 and a removableoptical disk 31, those skilled in the art will appreciate that other types of computer-readable media which can store data accessible by a computer may also be used in the exemplary operating environment. Such media may include magnetic cassettes, flash-memory cards, digital versatile disks, Bernoulli cartridges, RAMs, ROMs, and the like. - Program modules may be stored on the hard disk,
magnetic disk 29,optical disk 31, ROM 24 andRAM 25. Program modules may includeoperating system 35, one ormore application programs 36,other program modules 37, andprogram data 38. A user may enter commands and information intopersonal computer 20 through input devices such as akeyboard 40 and apointing device 42. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to theprocessing unit 21 through a serial-port interface 46 coupled tosystem bus 23; but they may be connected through other interfaces not shown in FIG. 1, such as a parallel port, a game port, or a universal serial bus (USB). Amonitor 47 or other display device also connects tosystem bus 23 via an interface such as avideo adapter 48. A video camera or other video source is represented at 60 as being coupled tovideo adapter 48 for providing video images for video conferencing and other applications, which may be processed and further transmitted bypersonal computer 20. In further embodiments, a separate video card may be provided for accepting signals from multiple devices 60, including satellite broadcast encoded images. In addition to the monitor, personal computers typically include other peripheral output devices (not shown) such as speakers and printers. -
Personal computer 20 may operate in a networked environment using logical connections to one or more remote computers such asremote computer 49.Remote computer 49 may be another personal computer, a server, a router, a network PC, a peer device, or other common network node. It typically includes many or all of the components described above in connection withpersonal computer 20; however, only astorage device 50 is illustrated in FIG. 1. The logical connections depicted in FIG. 1 include local-area network (LAN) 51 and a wide-area network (WAN) 52. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet. - When placed in a LAN networking environment,
PC 20 connects tolocal network 51 through a network interface oradapter 53. When used in a WAN networking environment such as the Internet,PC 20 typically includesmodem 54 or other means for establishing communications overnetwork 52.Modem 54 may be internal or external toPC 20, and connects tosystem bus 23 via serial-port interface 46. In a networked environment, program modules, such as those comprising Microsoft® Word which are depicted as residing within 20 or portions thereof may be stored inremote storage device 50. Of course, the network connections shown are illustrative, and other means of establishing a communications link between the computers may be substituted. - Software may be designed using many different methods, including object oriented programming methods. C++ and Java are two examples of common object oriented computer programming languages that provide functionality associated with object oriented programming. Object oriented programming methods provide a means to encapsulate data members (variables) and member functions (methods) that operate on that data into a single entity called a class. Object oriented programming methods also provide a means to create new classes based on existing classes. These new classes may be referred to as children of the classes from which they are created, parent classes, and they may inherit the methods of their parents.
- An object is an instance of a class. The data members of an object are attributes that are stored inside the computer memory, and the methods are executable computer code that act upon this data, along with potentially providing other services. The notion of an object is exploited in the present invention in that certain aspects of the invention are implemented as objects in one embodiment.
- An interface is a group of related functions that are organized into a named unit. Each interface may be uniquely identified by some identifier. Interfaces have no instantiation, that is, an interface is a definition only without the executable code needed to implement the methods which are specified by the interface. An object may support an interface by providing executable code for the methods specified by the interface. The executable code supplied by the object must comply with the definitions specified by the interface. The object may also provide additional methods. Those skilled in the art will recognize that interfaces are not limited to use in or by an object oriented programming environment.
- In FIG. 2, a block representation of a replicated tree structured database is shown generally at210. A directory tree is a visual representation of the relationships between multiple objects on a storage domain. The storage domain represents storage on a single computer system, or multiple computer systems having some form of shared storage. While a tree is described, other structures may also be used as the relationships between objects can take many different forms, such as an arbitrary acyclic graph. Tree 210 has representations of nine objects which are abstract collections of data. A
top level object 212 is represented by a “1” in a circle. The other eight objects are similarly represented by corresponding integers. Asecond object 214 is a child of the first object, as is athird object 216. Thethird object 216 has three children, 218, 220 and 222. Object 222 also has threechild objects - The permissions, and other inherited information such as parent lists and other information relating and identifying objects are actually stored in a transactioned database310 as seen in FIG. 3, and a portion of which is shown at 410 in FIG. 4. Other storage mechanisms, such as a text file with one line per object, or files in a file system are used to represent objects are used in alternative embodiments. Database 310 contains a row of information for each object which describes the inherited characteristics of the object as well as other maintenance information about the object such as ownership and an identifier. A directory service agent 312 interfaces to the database and performs operations on the data, including allowing modifications and updates as well as performing searches on the data in the database 310. A set of application programming interfaces (APIs) 314 provide an interface into the services provided by the directory service agent 312 to allow users, both human and other programs, to generate requests to use the data in the database 310. One common request is to modify the permissions to access an object as represented by an access control list stored as a security descriptor in the database. Such requests and the manner in which changes to a security descriptor is performed is well known in the art. One common example would be to add a printer object at some point in a network, or to give permission to a new employee or group of users to access the object.
- Once such a request to modify the security descriptor, or other inherited information such as a parent list, is performed by the directory service agent312, a replication of that request is made by a
replicator 316 in a known manner. The replication is packaged up into acommunication 318 and sent to other systems which have a copy of the database 310 which must also be updated. For information that is intrinsic to the object and not inherited, this process of sending the message or replicating the change to other copies of the database is all that is needed. However, a change to inheritable information in an object may also mean that children of the changed object need to be changed. The directory service agent then writes an indication of which object has been changed (basically a database row number or id) into a propagation queue or list, which is read by apropagator module 322 which is referred to as a daemon that hangs off the side of the directory database. Thepropagator 322 reads the queue, and then finds all the children affected by the change and modifies their inherited information by reading each affected object and its parent to determine how to change the inherited information. This method of propagating changes as opposed to replicating each change to each object via a message can significantly cut down on network traffic depending on the complexity of the object tree and amount of changes to inherited information which must be dynamically propagated. - Two types of inherited information are reflected in a portion of the database310 shown at 410 in FIG. 4. A
first column 412 contains an object identifier, shown for simplicity as an integer corresponding to the integers in circles representing objects in FIG. 2. Nine rows are shown, each row also having aparent column 413 identifying the parent, aparent list column 414 identifying the full line of parents or heritage of each object, and asecurity descriptor column 416 showing a simplified representation of a security descriptor. The first object has only itself in itsparent list column 414 because it is a top level object. The second and third objects both have the first object as a parent (inherited from their parent's parent list) as well as themselves. The fourth, fifth and sixth objects have both the first and third objects as parents (inherited from their parent's parent list) as well as themselves. The seventh, eighth and ninth objects have the first, third and sixth objects as parents (inherited from their parent's parent list) as well as themselves. The first object has a security descriptor simply referred to as V2 for this embodiment. Each of the other objects in the table ultimately derives fromobject 1, and inherits its security descriptor. - When a request is issued through an
API 314 to change the security descriptor of the first object from V2 to V3, the directory service agent 312 writes the change of the security descriptor from V2 to V3 and verifies that the user requesting the change is authorized to make the change, and that the change is a valid change. The id of the object, “1” in this case is then written to thepropagator queue 320, which is a FIFO queue, with some pruning to avoid duplication of effort as will be discussed below. Each change to a dynamically inheritable attribute of an object results in the id of the object changed being written to thequeue 320. Once the change is written, and the queue updated by the directory service agent, the change to the security descriptor is committed to the database and written to non-volatile storage such as disk. Next, thepropagator 322 is notified via an event such as a win32 event or other form of communication that a change to a dynamically inheritable attribute has been written and put in the queue. While a queue is used in this embodiment, it will be recognized that other forms of notification may be used, such as the use of a direct work request indicating the object that has been changed. Next, thereplicator 316 is told of the change, which results in a message being created which is representative of the change to be made. The message is then sent to other systems having copies of the database which must be synchronized with the current copy. - At start up time, the queue of propagations to be done is refreshed from saved information. A single propagation thread is started. Note, that in one embodiment, propagations are serialized such that one propagation will complete before the next is done to simplify understanding of propagation interrelations and also to avoid spawning many propagation threads. The thread waits on the propagation queue, and upon receiving the event,
propagator 322 in each system having a copy of the database needed changing, wakes up and reads the first entry in thequeue 320. It then enters agate 510 as shown in FIG. 5.Gate 510 is used to ensure that other accesses to the database are not being made that might interfere with, or be incorrectly processed as a result of the modifications to be made. Gates are well known exclusion constructs and this one will not be described in great detail other than to say that threads generated by the propagator to update dynamically inherited information are deemed to be “writers”, and all others adding objects “readers”. Threads not doing these operations don't need to enter the gate. Only one type of thread (“reader” or “writer”) is allowed in the gate at any one time, although many threads of one type may be inside the gate at once. The number of such threads in the gate is indicated at 512, and the type of thread, whether a reader or a writer is indicated at 514. If at least one of either type is in the gate, the other type must wait until all are done and out of the gate before entering. - When the propagation is initiated, the propagator finds the identity of the first object from the queue. Then, the propagator thread enters the gate. It reads the security descriptor from the object and from its parent and calculates the new security descriptor, and then writes it to the object. The write is done in such a manner that it does not trigger a directory replication event. This transaction is then committed, and the propagator thread then leaves the gate. At this point, only the security descriptor for the first object has been changed. However, since the first object may be the parent of many other objects, their security descriptors must also be changed. To do this, the propagator generates a list of children of the first object using a breadth first traversal of the tree. In this case, it will look for “1s” in the database parent column, and identify the second and third objects as children of the first object and add them to the list of children yet to be processed. The propagator does not need to enter the gate to generate this list. The use of the gate by add threads guarantees that every child will either be found by the propagator, or that new children not noticed by the propagator will be added AFTER the data on the parent has been fixed by the propagator and will therefore have correct inherited information. The propagator will then reenter the gate and recalculate the security descriptor of the second object by reading the second object and its parent, the first object. It will write the new security descriptor and exit the gate. It will then look for children of the second object. Finding none if will remove the second object from the list of children and move on to the third object. It makes the change by reentering the gate, reading the third object and its parent to recalculate the security descriptor and then leaving the gate. This time, it does find children of the third object, namely the fourth, fifth and sixth objects and adds them to the list of children. Proceeding with the search and change and addition and removal of objects to the list of children, it finally changes the ninth object, ensures it is stored to disk, and then removes the id of the first object from the queue once the list of children is empty.
- Each database on each system is so updated by its own propagator. The queue may have update indications placed on it in at least two ways. The first is as described above, via an API call from a user such as a person or another program. Another way for the change to be queued arises from the receipt of a message such as
message 318 indicative of a change to be applied to the database. The directory service agent receives such messages and updates the queue with the id of the object to which the change should be applied. The propagator, as stated above, operates independent of the replicator portion of the directory service agent, and makes changes to all affected objects without the generation of further network traffic. - There are a few optimizations performed by the propagator to enhance performance of the propagation of a change or changes to the database. The first involves comparing the previous security descriptor of a child with the new calculated security descriptor. If there is no change, there is no need to find the children of such child; since the data was already correct on the child object, then the objects which inherit from this child object will also have correct data. Eliminating the search and attempted updates can save significant time. If this is the first traversal after a power up, and the propagation queue was not empty after power up, the propagator must continue to identify children and add them to the list, even if no changes are detected. This is because a propagation is being restarted that was probably interrupted by a power cycle. The top of the tree may have already been done, but the bottom of the tree may not have been done. If the traversal is stopped too early, the change would not be properly propagated to the lowest level children. Similarly, the security descriptor of direct children of the start object is always verified. This is because the security descriptor of the start object has already been modified by the directory service or the replicator, and so the newly calculated security descriptor would not be different unless there had been a rename or reparent operation, or if another propagation had been queued for the start object's parent.
- Another optimization is the use of the breadth first traversal. Any tree traversal could be used, but if a breadth first traversal is used, then all children of an object are processed as a group. Thus the parent object need be read only once, and its security descriptor may be held in memory while its children are processed, at which time it is no longer needed. Then, the security descriptor of the parent of the next group of peers is read.
- The propagation of changes has been described with respect to a tree directory structure. It shoud be noted that other representations of the relationships between objects such as arbitrary acyclic graphs may also have changes which need to be propagated. In some embodiments, the propagation may involve propagating changes where they need to go, depending on the relationships between the objects rather than a propagation down a tree structure.
- A further example of changes to dynamically inherited information comprises a move or reparenting operation. Parent lists will then need to be modified to properly reflect heritage, and also security descriptors may need to be modified if a new parent has different security permissions. In FIG. 2, if the
sixth object 222 were to be reparented through the use of anAPI 314 so that its parent became the fifth object, theparenting information 414 would no longer be correct. Instead of “6,3,1,” it should be “6,5,3,1”. Further, the seventh, eighth and ninth objects would also have changed parent lists. The same process is followed to propagate the change by queueing the id of the object that changed in thepropagator queue 320. The propagator again performs the traversal of the directory tree, changing parent lists as it goes. - A table is used to implement the
queue 320 in one embodiment. A unique incrementing number is used in one column to enable the table to function as a queue. As stated above, the queue also holds the id of the node or object on which to start the propagation. A flag is used to describe whether the item in the queue may be trimmed from the queue if another propagation subsumes it. The Null value is used if the item may not be trimmed, otherwise it is non-null. In general, if the directory service agent causes the propagation itself, it is marked as trimmable. If it is caused by an action taken on behalf of a client, then it is not marked as trimmable. A client id is also associated with a client that made the change that caused the propagation. Two indicies are also used. The first is an order index that is used to find the next element in the queue. A trim index is a compound index over begin-node and the trimmable flag and is used to track all trimmable nodes. - As an optimization, after each node in the tree has been modified, the trim index of the propagation table is read. If the current node is in that index, it is removed from the table, as the propagation is being done, and there are no clients interested in progress information. This allows trimming of most if not all the propagation events caused by an initial replication of large portions of a tree.
- The propagation thread keeps track of several items, such as the number of objects touched during the propagation and a unique ID for the propagation. This information may be used to give clients details about the state of the security descriptor propagation underway.
- Dynamically inherited information in a database is performed by the use of a propagator which finds related objects and recalculates the appropriate information to update. In a networked system where multiple copies of the database need to be updated, a change to such information in an object is communicated with respect to that one object regardless of the number of objects in each database which will need to be changed as a result of the change. The propagator is described as using a breadth first tree traversal. This type of search works well because the process to update the inherited information needs to read the parent of the child as well as the child. The breadth first tree search ensures that needed data is more likely to be in memory and immediately available to make the update. Other searches may work better on different directory structures. A propagation queue is described as one form of list for keeping track of propagations to perform. A stack may also be used instead of a queue. LIFO methods of adding and removing data from the list would work as well as FIFO. In either case, when the list of pending propagations is completely emptied, the resulting trees hold the same information. This application is intended to cover any adaptations or variations of the present invention. It is manifestly intended that this invention be limited only by the claims and equivalents thereof.
Claims (29)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/157,728 US6446077B2 (en) | 1998-09-21 | 1998-09-21 | Inherited information propagator for objects |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/157,728 US6446077B2 (en) | 1998-09-21 | 1998-09-21 | Inherited information propagator for objects |
Publications (2)
Publication Number | Publication Date |
---|---|
US20020002557A1 true US20020002557A1 (en) | 2002-01-03 |
US6446077B2 US6446077B2 (en) | 2002-09-03 |
Family
ID=22565014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/157,728 Expired - Lifetime US6446077B2 (en) | 1998-09-21 | 1998-09-21 | Inherited information propagator for objects |
Country Status (1)
Country | Link |
---|---|
US (1) | US6446077B2 (en) |
Cited By (79)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020029375A1 (en) * | 2000-06-27 | 2002-03-07 | Alcatel | Method of managing information in Java |
US6411967B1 (en) * | 1999-06-18 | 2002-06-25 | Reliable Network Solutions | Distributed processing system with replicated management information base |
US20030046355A1 (en) * | 2001-08-31 | 2003-03-06 | Evolveworks, Inc. | Method and apparatus for object based information flow management |
US20060070010A1 (en) * | 2004-09-29 | 2006-03-30 | Retlich Kevin A | System status visualization method and system |
US20060230282A1 (en) * | 2005-04-06 | 2006-10-12 | Hausler Oliver M | Dynamically managing access permissions |
US20060265490A1 (en) * | 2001-03-26 | 2006-11-23 | Freewebs Corp. | Apparatus, method and system for improving application performance across a communications network |
US20070046994A1 (en) * | 2005-08-29 | 2007-03-01 | Xerox Corporation | Method and system for queue synchronization |
US20070198602A1 (en) * | 2005-12-19 | 2007-08-23 | David Ngo | Systems and methods for resynchronizing information |
US7412374B1 (en) | 2002-01-30 | 2008-08-12 | Novell, Inc. | Method to dynamically determine a user's language for a network |
US20090012828A1 (en) * | 2007-03-09 | 2009-01-08 | Commvault Systems, Inc. | Computer systems and methods for workflow automation |
US20090138523A1 (en) * | 2007-11-28 | 2009-05-28 | Wan-Chang Pi | Content engine asynchronous upgrade framework |
US20090172003A1 (en) * | 2007-12-27 | 2009-07-02 | Frank Jentsch | Secondary Persistencies in a Service-Oriented Business Framework |
US20090182963A1 (en) * | 2003-11-13 | 2009-07-16 | Anand Prahlad | System and method for performing a snapshot and for restoring data |
US7657548B2 (en) | 2002-09-20 | 2010-02-02 | Novell, Inc. | Method for dynamically distributing items for changes based on group membership |
US7660843B1 (en) | 2003-01-21 | 2010-02-09 | Novell, Inc. | Method and apparatus for dynamically delivering a gadget |
US20100050254A1 (en) * | 2008-08-25 | 2010-02-25 | International Business Machines Corporation | Associating operating system native authorizations with console roles |
US20100049753A1 (en) * | 2005-12-19 | 2010-02-25 | Commvault Systems, Inc. | Systems and methods for monitoring application data in a data replication system |
US20100122053A1 (en) * | 2005-12-19 | 2010-05-13 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US20100179941A1 (en) * | 2008-12-10 | 2010-07-15 | Commvault Systems, Inc. | Systems and methods for performing discrete data replication |
US7890639B1 (en) | 2002-01-30 | 2011-02-15 | Novell, Inc. | Method and apparatus for controlling access to portal content from outside the portal |
US7987421B1 (en) | 2002-01-30 | 2011-07-26 | Boyd H Timothy | Method and apparatus to dynamically provide web content resources in a portal |
US20110238621A1 (en) * | 2010-03-29 | 2011-09-29 | Commvault Systems, Inc. | Systems and methods for selective data replication |
US20110271248A1 (en) * | 2010-04-29 | 2011-11-03 | Microsoft Corporation | Converting controls into source code |
WO2011150391A1 (en) * | 2010-05-28 | 2011-12-01 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US8352422B2 (en) | 2010-03-30 | 2013-01-08 | Commvault Systems, Inc. | Data restore systems and methods in a replication environment |
US8463751B2 (en) | 2005-12-19 | 2013-06-11 | Commvault Systems, Inc. | Systems and methods for performing replication copy storage operations |
US8504515B2 (en) | 2010-03-30 | 2013-08-06 | Commvault Systems, Inc. | Stubbing systems and methods in a data replication environment |
US8656218B2 (en) | 2005-12-19 | 2014-02-18 | Commvault Systems, Inc. | Memory configuration for data replication system including identification of a subsequent log entry by a destination computer |
US8666942B2 (en) | 2008-12-10 | 2014-03-04 | Commvault Systems, Inc. | Systems and methods for managing snapshots of replicated databases |
US8725698B2 (en) | 2010-03-30 | 2014-05-13 | Commvault Systems, Inc. | Stub file prioritization in a data replication system |
US8726242B2 (en) | 2006-07-27 | 2014-05-13 | Commvault Systems, Inc. | Systems and methods for continuous data replication |
US20140278807A1 (en) * | 2013-03-15 | 2014-09-18 | Cloudamize, Inc. | Cloud service optimization for cost, performance and configuration |
US8909673B2 (en) * | 2011-01-27 | 2014-12-09 | Varonis Systems, Inc. | Access permissions management system and method |
US20150088584A1 (en) * | 2013-09-20 | 2015-03-26 | Apptio, Inc. | Allocating heritage information in data models |
US9020830B2 (en) | 2011-03-08 | 2015-04-28 | Apptio, Inc. | Hierarchy based dependent object relationships |
US9262435B2 (en) | 2013-01-11 | 2016-02-16 | Commvault Systems, Inc. | Location-based data synchronization management |
US9275050B2 (en) | 2011-10-24 | 2016-03-01 | Apptio, Inc. | Global dictionaries using universal primitives |
US9298715B2 (en) | 2012-03-07 | 2016-03-29 | Commvault Systems, Inc. | Data storage system utilizing proxy device for storage operations |
US20160125197A1 (en) * | 2014-11-05 | 2016-05-05 | Ab Initio Technology Llc | Database Security |
US9342537B2 (en) | 2012-04-23 | 2016-05-17 | Commvault Systems, Inc. | Integrated snapshot interface for a data storage system |
US9350561B1 (en) | 2015-05-27 | 2016-05-24 | Apptio, Inc. | Visualizing the flow of resources in an allocation model |
US9384511B1 (en) | 2015-12-16 | 2016-07-05 | Apptio, Inc. | Version control for resource allocation modeling |
US9448731B2 (en) | 2014-11-14 | 2016-09-20 | Commvault Systems, Inc. | Unified snapshot storage management |
US9471578B2 (en) | 2012-03-07 | 2016-10-18 | Commvault Systems, Inc. | Data storage system utilizing proxy device for storage operations |
US9495251B2 (en) | 2014-01-24 | 2016-11-15 | Commvault Systems, Inc. | Snapshot readiness checking and reporting |
US9529863B1 (en) | 2015-12-21 | 2016-12-27 | Apptio, Inc. | Normalizing ingested data sets based on fuzzy comparisons to known data sets |
US9632874B2 (en) | 2014-01-24 | 2017-04-25 | Commvault Systems, Inc. | Database application backup in single snapshot for multiple applications |
US9639426B2 (en) | 2014-01-24 | 2017-05-02 | Commvault Systems, Inc. | Single snapshot for multiple applications |
US9648105B2 (en) | 2014-11-14 | 2017-05-09 | Commvault Systems, Inc. | Unified snapshot storage management, using an enhanced storage manager and enhanced media agents |
US9753812B2 (en) | 2014-01-24 | 2017-09-05 | Commvault Systems, Inc. | Generating mapping information for single snapshot for multiple applications |
US9774672B2 (en) | 2014-09-03 | 2017-09-26 | Commvault Systems, Inc. | Consolidated processing of storage-array commands by a snapshot-control media agent |
US9886346B2 (en) | 2013-01-11 | 2018-02-06 | Commvault Systems, Inc. | Single snapshot for multiple agents |
US10042716B2 (en) | 2014-09-03 | 2018-08-07 | Commvault Systems, Inc. | Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent |
US10048681B2 (en) | 2004-09-29 | 2018-08-14 | Rockwell Automation Technologies, Inc. | System status visualization method and system |
US10102389B2 (en) | 2011-01-27 | 2018-10-16 | Varonis Systems, Inc. | Access permissions management system and method |
US10157356B2 (en) | 2016-12-14 | 2018-12-18 | Apptio, Inc. | Activity based resource allocation modeling |
US10268980B1 (en) | 2017-12-29 | 2019-04-23 | Apptio, Inc. | Report generation based on user responsibility |
US10268979B2 (en) | 2015-09-28 | 2019-04-23 | Apptio, Inc. | Intermediate resource allocation tracking in data models |
US10296596B2 (en) | 2010-05-27 | 2019-05-21 | Varonis Systems, Inc. | Data tagging |
US10320798B2 (en) | 2013-02-20 | 2019-06-11 | Varonis Systems, Inc. | Systems and methodologies for controlling access to a file system |
US10324951B1 (en) | 2017-12-29 | 2019-06-18 | Apptio, Inc. | Tracking and viewing model changes based on time |
US10387815B2 (en) | 2015-09-29 | 2019-08-20 | Apptio, Inc. | Continuously variable resolution of resource allocation |
US10417591B2 (en) | 2013-07-03 | 2019-09-17 | Apptio, Inc. | Recursive processing of object allocation rules |
US10474974B2 (en) | 2016-09-08 | 2019-11-12 | Apptio, Inc. | Reciprocal models for resource allocation |
US10482407B2 (en) | 2016-11-14 | 2019-11-19 | Apptio, Inc. | Identifying resource allocation discrepancies |
US10503753B2 (en) | 2016-03-10 | 2019-12-10 | Commvault Systems, Inc. | Snapshot replication operations based on incremental block change tracking |
US10726367B2 (en) | 2015-12-28 | 2020-07-28 | Apptio, Inc. | Resource allocation forecasting |
US10732885B2 (en) | 2018-02-14 | 2020-08-04 | Commvault Systems, Inc. | Block-level live browsing and private writable snapshots using an ISCSI server |
US10936978B2 (en) * | 2016-09-20 | 2021-03-02 | Apptio, Inc. | Models for visualizing resource allocation |
US10937036B2 (en) | 2012-11-13 | 2021-03-02 | Apptio, Inc. | Dynamic recommendations taken over time for reservations of information technology resources |
US11042318B2 (en) | 2019-07-29 | 2021-06-22 | Commvault Systems, Inc. | Block-level data replication |
US11151493B2 (en) | 2015-06-30 | 2021-10-19 | Apptio, Inc. | Infrastructure benchmarking based on dynamic cost modeling |
US11244364B2 (en) | 2014-02-13 | 2022-02-08 | Apptio, Inc. | Unified modeling of technology towers |
CN115033598A (en) * | 2022-07-07 | 2022-09-09 | 宁波和利时智能科技有限公司 | Variable attribute modification method of Internet of things model and related device |
US11496476B2 (en) | 2011-01-27 | 2022-11-08 | Varonis Systems, Inc. | Access permissions management system and method |
US11775552B2 (en) | 2017-12-29 | 2023-10-03 | Apptio, Inc. | Binding annotations to data objects |
US11809285B2 (en) | 2022-02-09 | 2023-11-07 | Commvault Systems, Inc. | Protecting a management database of a data storage management system to meet a recovery point objective (RPO) |
US12056018B2 (en) | 2022-06-17 | 2024-08-06 | Commvault Systems, Inc. | Systems and methods for enforcing a recovery point objective (RPO) for a production database without generating secondary copies of the production database |
US12056142B2 (en) | 2018-06-15 | 2024-08-06 | Dropbox, Inc. | Content capture across diverse sources |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6412017B1 (en) * | 1996-07-01 | 2002-06-25 | Microsoft Corporation | Urgent replication facility |
US6678826B1 (en) * | 1998-09-09 | 2004-01-13 | Communications Devices, Inc. | Management system for distributed out-of-band security databases |
US7146614B1 (en) * | 1999-12-22 | 2006-12-05 | Novell, Inc. | Computer directory system having an application integration driver infrastructure |
US6772393B1 (en) * | 2000-01-04 | 2004-08-03 | International Business Machines Corporation | System and method for room decoration and inheritance |
US7043488B1 (en) | 2000-01-21 | 2006-05-09 | International Business Machines Corporation | Method and system for storing hierarchical content objects in a data repository |
US7346844B1 (en) | 2000-01-21 | 2008-03-18 | International Business Machines, Corporation | Method and system for moving content in a content object stored in a data repository |
US8589777B1 (en) | 2000-01-21 | 2013-11-19 | International Business Machines Corporation | Method and system for calculating cost of a compilation of content |
US7089239B1 (en) * | 2000-01-21 | 2006-08-08 | International Business Machines Corporation | Method and system for preventing mutually exclusive content entities stored in a data repository to be included in the same compilation of content |
US7613993B1 (en) | 2000-01-21 | 2009-11-03 | International Business Machines Corporation | Prerequisite checking in a system for creating compilations of content |
US7340481B1 (en) | 2000-01-21 | 2008-03-04 | International Business Machines Corp. | Method and system for adding user-provided content to a content object stored in a data repository |
US7401097B1 (en) | 2000-01-21 | 2008-07-15 | International Business Machines Corporation | System and method for creating compilations of content |
US20040168174A1 (en) * | 2000-03-08 | 2004-08-26 | Baker Tyler Foley | System for object cloing and state synchronization across a network node tree |
US7162499B2 (en) * | 2000-06-21 | 2007-01-09 | Microsoft Corporation | Linked value replication |
US6874149B1 (en) * | 2000-06-28 | 2005-03-29 | Microsoft Corporation | Hooking of replacement and augmented API functions |
US6968536B2 (en) * | 2000-07-14 | 2005-11-22 | Borland Software Corporation | Frame component container |
US7107587B1 (en) * | 2000-09-18 | 2006-09-12 | Microsoft Corporation | Access redirector and entry reflector |
US7136881B2 (en) * | 2000-12-15 | 2006-11-14 | International Business Machines Corporation | Method and system for processing directory events |
US6879564B2 (en) * | 2001-02-28 | 2005-04-12 | Microsoft Corp. | Method for designating communication paths in a network |
GB2374951B (en) * | 2001-04-24 | 2005-06-15 | Discreet Logic Inc | Asynchronous database updates |
US7035922B2 (en) * | 2001-11-27 | 2006-04-25 | Microsoft Corporation | Non-invasive latency monitoring in a store-and-forward replication system |
US7185359B2 (en) * | 2001-12-21 | 2007-02-27 | Microsoft Corporation | Authentication and authorization across autonomous network systems |
US7899888B2 (en) * | 2002-06-28 | 2011-03-01 | Oracle America, Inc. | Runtime versioning of information processing systems |
US7853554B2 (en) * | 2002-11-12 | 2010-12-14 | Oracle International Corporation | Method and system for metadata reconciliation in a data warehouse |
US7272818B2 (en) * | 2003-04-10 | 2007-09-18 | Microsoft Corporation | Creation of an object within an object hierarchy structure |
CA2472887A1 (en) * | 2003-06-30 | 2004-12-30 | Gravic, Inc. | Methods for ensuring referential integrity in multithreaded replication engines |
US8238696B2 (en) | 2003-08-21 | 2012-08-07 | Microsoft Corporation | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
US7590643B2 (en) * | 2003-08-21 | 2009-09-15 | Microsoft Corporation | Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system |
US8166101B2 (en) | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US7401104B2 (en) | 2003-08-21 | 2008-07-15 | Microsoft Corporation | Systems and methods for synchronizing computer systems through an intermediary file system share or device |
US7539999B2 (en) | 2003-10-23 | 2009-05-26 | Microsoft Corporation | Kernel-level transactions |
US7591015B2 (en) * | 2003-10-23 | 2009-09-15 | Microsoft Corporation | Secure kernel transactions |
US7302708B2 (en) * | 2004-03-11 | 2007-11-27 | Harris Corporation | Enforcing computer security utilizing an adaptive lattice mechanism |
US20080177593A1 (en) * | 2004-06-14 | 2008-07-24 | Symphonyrpm, Inc. | Decision object for associating a plurality of business plans |
US7665062B1 (en) | 2004-07-02 | 2010-02-16 | Borland Software Corporation | System and methodology for design-time dynamic class type construction |
US8060937B2 (en) * | 2004-07-15 | 2011-11-15 | Lieberman Software Corporation | System for protecting domain system configurations from users with local privilege rights |
US9189756B2 (en) * | 2004-09-21 | 2015-11-17 | International Business Machines Corporation | Case management system and method for collaborative project teaming |
US8078707B1 (en) * | 2004-11-12 | 2011-12-13 | Juniper Networks, Inc. | Network management using hierarchical domains |
US7979405B2 (en) * | 2005-01-14 | 2011-07-12 | Microsoft Corporation | Method for automatically associating data with a document based on a prescribed type of the document |
US7653653B2 (en) * | 2005-02-14 | 2010-01-26 | Microsoft Corporation | Dynamically configurable lists for including multiple content types |
US7966286B2 (en) * | 2005-02-14 | 2011-06-21 | Microsoft Corporation | Hierarchical management of object schema and behavior |
US8856068B2 (en) * | 2005-04-12 | 2014-10-07 | International Business Machines Corporation | Replicating modifications of a directory |
US20060294058A1 (en) * | 2005-06-28 | 2006-12-28 | Microsoft Corporation | System and method for an asynchronous queue in a database management system |
US8677270B2 (en) | 2007-05-04 | 2014-03-18 | Microsoft Corporation | Live companion user interface |
US8954507B2 (en) * | 2007-06-22 | 2015-02-10 | Microsoft Corporation | Gathering and using awareness information |
US20090112870A1 (en) * | 2007-10-31 | 2009-04-30 | Microsoft Corporation | Management of distributed storage |
US20090193012A1 (en) * | 2008-01-29 | 2009-07-30 | James Charles Williams | Inheritance in a Search Index |
US9224010B2 (en) * | 2011-09-01 | 2015-12-29 | International Business Machines Corporation | Secure document creation from potentially unsecure source templates |
US11693827B2 (en) | 2016-12-29 | 2023-07-04 | Microsoft Technology Licensing, Llc | Syncing and propagation of metadata changes across multiple endpoints |
US10977361B2 (en) | 2017-05-16 | 2021-04-13 | Beyondtrust Software, Inc. | Systems and methods for controlling privileged operations |
US11528149B2 (en) | 2019-04-26 | 2022-12-13 | Beyondtrust Software, Inc. | Root-level application selective configuration |
US11922026B2 (en) | 2022-02-16 | 2024-03-05 | T-Mobile Usa, Inc. | Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH047640A (en) * | 1990-04-25 | 1992-01-13 | Hitachi Ltd | Class succession settling processing method |
US5491821A (en) * | 1993-02-24 | 1996-02-13 | International Business Machines Corporation | Method and system for incremental processing of computer objects |
US5652884A (en) * | 1994-11-14 | 1997-07-29 | Object Technology Licensing Corp. | Method and apparatus for dynamic update of an existing object in an object editor |
US5870742A (en) * | 1996-03-20 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for enabling persistent attributes in an object oriented environment |
US5913037A (en) * | 1996-07-03 | 1999-06-15 | Compaq Computer Corporation | Dynamic management information base manager |
US6002867A (en) * | 1996-10-24 | 1999-12-14 | Inprise Corporation | Development system with methods providing visual form inheritance |
US6058396A (en) * | 1997-02-06 | 2000-05-02 | Sterling Software, Inc. | Product interface method and system which allow class evolution |
US5907844A (en) * | 1997-03-20 | 1999-05-25 | Oracle Corporation | Dynamic external control of rule-based decision making through user rule inheritance for database performance optimization |
US6049807A (en) * | 1997-09-03 | 2000-04-11 | International Business Machines Corporation | Technique for maintaining object integrity during modification of a persistent store of objects |
US6083281A (en) * | 1997-11-14 | 2000-07-04 | Nortel Networks Corporation | Process and apparatus for tracing software entities in a distributed system |
US6092079A (en) * | 1998-01-29 | 2000-07-18 | International Business Machines Corporation | Apparatus and method for updating an object without affecting the unique identity of the object |
US6166732A (en) * | 1998-02-24 | 2000-12-26 | Microsoft Corporation | Distributed object oriented multi-user domain with multimedia presentations |
US6049805A (en) * | 1998-02-24 | 2000-04-11 | Microsoft Corporation | Dynamic event mechanism for objects with associational relationships |
US6085198A (en) * | 1998-06-05 | 2000-07-04 | Sun Microsystems, Inc. | Integrated three-tier application framework with automated class and table generation |
-
1998
- 1998-09-21 US US09/157,728 patent/US6446077B2/en not_active Expired - Lifetime
Cited By (162)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6411967B1 (en) * | 1999-06-18 | 2002-06-25 | Reliable Network Solutions | Distributed processing system with replicated management information base |
US20020029375A1 (en) * | 2000-06-27 | 2002-03-07 | Alcatel | Method of managing information in Java |
US7131109B2 (en) * | 2000-06-27 | 2006-10-31 | Alcatel | Method of managing information in Java |
US20060265490A1 (en) * | 2001-03-26 | 2006-11-23 | Freewebs Corp. | Apparatus, method and system for improving application performance across a communications network |
US8291110B2 (en) | 2001-03-26 | 2012-10-16 | Vistaprint Limited | Apparatus, method and system for improving application performance across a communication network |
US8782131B2 (en) | 2001-03-26 | 2014-07-15 | Vistaprint Schweiz Gmbh | Apparatus, method and system for improving application performance across a communications network by event routing |
US20100306169A1 (en) * | 2001-03-26 | 2010-12-02 | Webs.com | Apparatus, Method and System For Improving Application Performance Across a Communication Network |
US8904038B2 (en) | 2001-03-26 | 2014-12-02 | Vistaprint Schweiz Gmbh | Apparatus, method and system for improving application performance across a communications network by node replication |
US7711845B2 (en) * | 2001-03-26 | 2010-05-04 | Webs, Inc. | Apparatus, method and system for improving application performance across a communications network |
US20030046355A1 (en) * | 2001-08-31 | 2003-03-06 | Evolveworks, Inc. | Method and apparatus for object based information flow management |
US7987421B1 (en) | 2002-01-30 | 2011-07-26 | Boyd H Timothy | Method and apparatus to dynamically provide web content resources in a portal |
US7890639B1 (en) | 2002-01-30 | 2011-02-15 | Novell, Inc. | Method and apparatus for controlling access to portal content from outside the portal |
US7412374B1 (en) | 2002-01-30 | 2008-08-12 | Novell, Inc. | Method to dynamically determine a user's language for a network |
US7657548B2 (en) | 2002-09-20 | 2010-02-02 | Novell, Inc. | Method for dynamically distributing items for changes based on group membership |
US7660843B1 (en) | 2003-01-21 | 2010-02-09 | Novell, Inc. | Method and apparatus for dynamically delivering a gadget |
US9208160B2 (en) | 2003-11-13 | 2015-12-08 | Commvault Systems, Inc. | System and method for performing an image level snapshot and for restoring partial volume data |
US9405631B2 (en) | 2003-11-13 | 2016-08-02 | Commvault Systems, Inc. | System and method for performing an image level snapshot and for restoring partial volume data |
US8645320B2 (en) | 2003-11-13 | 2014-02-04 | Commvault Systems, Inc. | System and method for performing an image level snapshot and for restoring partial volume data |
US8886595B2 (en) | 2003-11-13 | 2014-11-11 | Commvault Systems, Inc. | System and method for performing an image level snapshot and for restoring partial volume data |
US8190565B2 (en) | 2003-11-13 | 2012-05-29 | Commvault Systems, Inc. | System and method for performing an image level snapshot and for restoring partial volume data |
US9619341B2 (en) | 2003-11-13 | 2017-04-11 | Commvault Systems, Inc. | System and method for performing an image level snapshot and for restoring partial volume data |
US20090182963A1 (en) * | 2003-11-13 | 2009-07-16 | Anand Prahlad | System and method for performing a snapshot and for restoring data |
US8195623B2 (en) | 2003-11-13 | 2012-06-05 | Commvault Systems, Inc. | System and method for performing a snapshot and for restoring data |
US10048681B2 (en) | 2004-09-29 | 2018-08-14 | Rockwell Automation Technologies, Inc. | System status visualization method and system |
US20060070010A1 (en) * | 2004-09-29 | 2006-03-30 | Retlich Kevin A | System status visualization method and system |
US8595652B2 (en) * | 2004-09-29 | 2013-11-26 | Rockwell Automation Technologies, Inc. | System status visualization method and system |
US20060230282A1 (en) * | 2005-04-06 | 2006-10-12 | Hausler Oliver M | Dynamically managing access permissions |
US8570585B2 (en) | 2005-08-29 | 2013-10-29 | Xerox Corporation | Method and system for queue synchronization |
US20070046994A1 (en) * | 2005-08-29 | 2007-03-01 | Xerox Corporation | Method and system for queue synchronization |
US8107115B2 (en) * | 2005-08-29 | 2012-01-31 | Xerox Corporation | Method and system for queue synchronization |
US8725694B2 (en) | 2005-12-19 | 2014-05-13 | Commvault Systems, Inc. | Systems and methods for performing replication copy storage operations |
US8935210B2 (en) | 2005-12-19 | 2015-01-13 | Commvault Systems, Inc. | Systems and methods for performing replication copy storage operations |
US9208210B2 (en) | 2005-12-19 | 2015-12-08 | Commvault Systems, Inc. | Rolling cache configuration for a data replication system |
US8121983B2 (en) | 2005-12-19 | 2012-02-21 | Commvault Systems, Inc. | Systems and methods for monitoring application data in a data replication system |
US20070198602A1 (en) * | 2005-12-19 | 2007-08-23 | David Ngo | Systems and methods for resynchronizing information |
US9020898B2 (en) | 2005-12-19 | 2015-04-28 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US8463751B2 (en) | 2005-12-19 | 2013-06-11 | Commvault Systems, Inc. | Systems and methods for performing replication copy storage operations |
US9971657B2 (en) | 2005-12-19 | 2018-05-15 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US9002799B2 (en) | 2005-12-19 | 2015-04-07 | Commvault Systems, Inc. | Systems and methods for resynchronizing information |
US8285684B2 (en) | 2005-12-19 | 2012-10-09 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US8793221B2 (en) | 2005-12-19 | 2014-07-29 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US9639294B2 (en) | 2005-12-19 | 2017-05-02 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US9298382B2 (en) | 2005-12-19 | 2016-03-29 | Commvault Systems, Inc. | Systems and methods for performing replication copy storage operations |
US20100122053A1 (en) * | 2005-12-19 | 2010-05-13 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US20100049753A1 (en) * | 2005-12-19 | 2010-02-25 | Commvault Systems, Inc. | Systems and methods for monitoring application data in a data replication system |
US8656218B2 (en) | 2005-12-19 | 2014-02-18 | Commvault Systems, Inc. | Memory configuration for data replication system including identification of a subsequent log entry by a destination computer |
US8655850B2 (en) | 2005-12-19 | 2014-02-18 | Commvault Systems, Inc. | Systems and methods for resynchronizing information |
US8726242B2 (en) | 2006-07-27 | 2014-05-13 | Commvault Systems, Inc. | Systems and methods for continuous data replication |
US9003374B2 (en) | 2006-07-27 | 2015-04-07 | Commvault Systems, Inc. | Systems and methods for continuous data replication |
US8290808B2 (en) | 2007-03-09 | 2012-10-16 | Commvault Systems, Inc. | System and method for automating customer-validated statement of work for a data storage environment |
US20090012828A1 (en) * | 2007-03-09 | 2009-01-08 | Commvault Systems, Inc. | Computer systems and methods for workflow automation |
US8799051B2 (en) | 2007-03-09 | 2014-08-05 | Commvault Systems, Inc. | System and method for automating customer-validated statement of work for a data storage environment |
US8428995B2 (en) | 2007-03-09 | 2013-04-23 | Commvault Systems, Inc. | System and method for automating customer-validated statement of work for a data storage environment |
US11347771B2 (en) * | 2007-11-28 | 2022-05-31 | International Business Machines Corporation | Content engine asynchronous upgrade framework |
US20090138523A1 (en) * | 2007-11-28 | 2009-05-28 | Wan-Chang Pi | Content engine asynchronous upgrade framework |
US20090172003A1 (en) * | 2007-12-27 | 2009-07-02 | Frank Jentsch | Secondary Persistencies in a Service-Oriented Business Framework |
US20100050254A1 (en) * | 2008-08-25 | 2010-02-25 | International Business Machines Corporation | Associating operating system native authorizations with console roles |
US8850561B2 (en) | 2008-08-25 | 2014-09-30 | International Business Machines Corporation | Associating operating system native authorizations with console roles |
US9495382B2 (en) | 2008-12-10 | 2016-11-15 | Commvault Systems, Inc. | Systems and methods for performing discrete data replication |
US9047357B2 (en) | 2008-12-10 | 2015-06-02 | Commvault Systems, Inc. | Systems and methods for managing replicated database data in dirty and clean shutdown states |
US8666942B2 (en) | 2008-12-10 | 2014-03-04 | Commvault Systems, Inc. | Systems and methods for managing snapshots of replicated databases |
US20100179941A1 (en) * | 2008-12-10 | 2010-07-15 | Commvault Systems, Inc. | Systems and methods for performing discrete data replication |
US9396244B2 (en) | 2008-12-10 | 2016-07-19 | Commvault Systems, Inc. | Systems and methods for managing replicated database data |
US20110238621A1 (en) * | 2010-03-29 | 2011-09-29 | Commvault Systems, Inc. | Systems and methods for selective data replication |
US8504517B2 (en) | 2010-03-29 | 2013-08-06 | Commvault Systems, Inc. | Systems and methods for selective data replication |
US8868494B2 (en) | 2010-03-29 | 2014-10-21 | Commvault Systems, Inc. | Systems and methods for selective data replication |
US8504515B2 (en) | 2010-03-30 | 2013-08-06 | Commvault Systems, Inc. | Stubbing systems and methods in a data replication environment |
US9002785B2 (en) | 2010-03-30 | 2015-04-07 | Commvault Systems, Inc. | Stubbing systems and methods in a data replication environment |
US9483511B2 (en) | 2010-03-30 | 2016-11-01 | Commvault Systems, Inc. | Stubbing systems and methods in a data replication environment |
US8352422B2 (en) | 2010-03-30 | 2013-01-08 | Commvault Systems, Inc. | Data restore systems and methods in a replication environment |
US8725698B2 (en) | 2010-03-30 | 2014-05-13 | Commvault Systems, Inc. | Stub file prioritization in a data replication system |
US20110271248A1 (en) * | 2010-04-29 | 2011-11-03 | Microsoft Corporation | Converting controls into source code |
US11138153B2 (en) | 2010-05-27 | 2021-10-05 | Varonis Systems, Inc. | Data tagging |
US10296596B2 (en) | 2010-05-27 | 2019-05-21 | Varonis Systems, Inc. | Data tagging |
US8489656B2 (en) | 2010-05-28 | 2013-07-16 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US8589347B2 (en) | 2010-05-28 | 2013-11-19 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US8745105B2 (en) | 2010-05-28 | 2014-06-03 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US8572038B2 (en) | 2010-05-28 | 2013-10-29 | Commvault Systems, Inc. | Systems and methods for performing data replication |
WO2011150391A1 (en) * | 2010-05-28 | 2011-12-01 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US8909673B2 (en) * | 2011-01-27 | 2014-12-09 | Varonis Systems, Inc. | Access permissions management system and method |
US11496476B2 (en) | 2011-01-27 | 2022-11-08 | Varonis Systems, Inc. | Access permissions management system and method |
US9679148B2 (en) | 2011-01-27 | 2017-06-13 | Varonis Systems, Inc. | Access permissions management system and method |
US10476878B2 (en) | 2011-01-27 | 2019-11-12 | Varonis Systems, Inc. | Access permissions management system and method |
US10102389B2 (en) | 2011-01-27 | 2018-10-16 | Varonis Systems, Inc. | Access permissions management system and method |
US9020830B2 (en) | 2011-03-08 | 2015-04-28 | Apptio, Inc. | Hierarchy based dependent object relationships |
US9305275B2 (en) | 2011-03-08 | 2016-04-05 | Apptio, Inc. | Platform for rapid development of applications |
US10721234B2 (en) | 2011-04-21 | 2020-07-21 | Varonis Systems, Inc. | Access permissions management system and method |
US9275050B2 (en) | 2011-10-24 | 2016-03-01 | Apptio, Inc. | Global dictionaries using universal primitives |
US9298715B2 (en) | 2012-03-07 | 2016-03-29 | Commvault Systems, Inc. | Data storage system utilizing proxy device for storage operations |
US9471578B2 (en) | 2012-03-07 | 2016-10-18 | Commvault Systems, Inc. | Data storage system utilizing proxy device for storage operations |
US9898371B2 (en) | 2012-03-07 | 2018-02-20 | Commvault Systems, Inc. | Data storage system utilizing proxy device for storage operations |
US9928146B2 (en) | 2012-03-07 | 2018-03-27 | Commvault Systems, Inc. | Data storage system utilizing proxy device for storage operations |
US9342537B2 (en) | 2012-04-23 | 2016-05-17 | Commvault Systems, Inc. | Integrated snapshot interface for a data storage system |
US10698632B2 (en) | 2012-04-23 | 2020-06-30 | Commvault Systems, Inc. | Integrated snapshot interface for a data storage system |
US11269543B2 (en) | 2012-04-23 | 2022-03-08 | Commvault Systems, Inc. | Integrated snapshot interface for a data storage system |
US9928002B2 (en) | 2012-04-23 | 2018-03-27 | Commvault Systems, Inc. | Integrated snapshot interface for a data storage system |
US10937036B2 (en) | 2012-11-13 | 2021-03-02 | Apptio, Inc. | Dynamic recommendations taken over time for reservations of information technology resources |
US9886346B2 (en) | 2013-01-11 | 2018-02-06 | Commvault Systems, Inc. | Single snapshot for multiple agents |
US9262435B2 (en) | 2013-01-11 | 2016-02-16 | Commvault Systems, Inc. | Location-based data synchronization management |
US9336226B2 (en) | 2013-01-11 | 2016-05-10 | Commvault Systems, Inc. | Criteria-based data synchronization management |
US9430491B2 (en) | 2013-01-11 | 2016-08-30 | Commvault Systems, Inc. | Request-based data synchronization management |
US11847026B2 (en) | 2013-01-11 | 2023-12-19 | Commvault Systems, Inc. | Single snapshot for multiple agents |
US10853176B2 (en) | 2013-01-11 | 2020-12-01 | Commvault Systems, Inc. | Single snapshot for multiple agents |
US10320798B2 (en) | 2013-02-20 | 2019-06-11 | Varonis Systems, Inc. | Systems and methodologies for controlling access to a file system |
US20140278807A1 (en) * | 2013-03-15 | 2014-09-18 | Cloudamize, Inc. | Cloud service optimization for cost, performance and configuration |
US10417591B2 (en) | 2013-07-03 | 2019-09-17 | Apptio, Inc. | Recursive processing of object allocation rules |
US20150088584A1 (en) * | 2013-09-20 | 2015-03-26 | Apptio, Inc. | Allocating heritage information in data models |
US10325232B2 (en) * | 2013-09-20 | 2019-06-18 | Apptio, Inc. | Allocating heritage information in data models |
US9632874B2 (en) | 2014-01-24 | 2017-04-25 | Commvault Systems, Inc. | Database application backup in single snapshot for multiple applications |
US9639426B2 (en) | 2014-01-24 | 2017-05-02 | Commvault Systems, Inc. | Single snapshot for multiple applications |
US12056014B2 (en) | 2014-01-24 | 2024-08-06 | Commvault Systems, Inc. | Single snapshot for multiple applications |
US10223365B2 (en) | 2014-01-24 | 2019-03-05 | Commvault Systems, Inc. | Snapshot readiness checking and reporting |
US9495251B2 (en) | 2014-01-24 | 2016-11-15 | Commvault Systems, Inc. | Snapshot readiness checking and reporting |
US10671484B2 (en) | 2014-01-24 | 2020-06-02 | Commvault Systems, Inc. | Single snapshot for multiple applications |
US9892123B2 (en) | 2014-01-24 | 2018-02-13 | Commvault Systems, Inc. | Snapshot readiness checking and reporting |
US10942894B2 (en) | 2014-01-24 | 2021-03-09 | Commvault Systems, Inc | Operation readiness checking and reporting |
US9753812B2 (en) | 2014-01-24 | 2017-09-05 | Commvault Systems, Inc. | Generating mapping information for single snapshot for multiple applications |
US10572444B2 (en) | 2014-01-24 | 2020-02-25 | Commvault Systems, Inc. | Operation readiness checking and reporting |
US11244364B2 (en) | 2014-02-13 | 2022-02-08 | Apptio, Inc. | Unified modeling of technology towers |
US10044803B2 (en) | 2014-09-03 | 2018-08-07 | Commvault Systems, Inc. | Consolidated processing of storage-array commands by a snapshot-control media agent |
US10419536B2 (en) | 2014-09-03 | 2019-09-17 | Commvault Systems, Inc. | Consolidated processing of storage-array commands by a snapshot-control media agent |
US10042716B2 (en) | 2014-09-03 | 2018-08-07 | Commvault Systems, Inc. | Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent |
US10798166B2 (en) | 2014-09-03 | 2020-10-06 | Commvault Systems, Inc. | Consolidated processing of storage-array commands by a snapshot-control media agent |
US9774672B2 (en) | 2014-09-03 | 2017-09-26 | Commvault Systems, Inc. | Consolidated processing of storage-array commands by a snapshot-control media agent |
US11245759B2 (en) | 2014-09-03 | 2022-02-08 | Commvault Systems, Inc. | Consolidated processing of storage-array commands by a snapshot-control media agent |
US10891197B2 (en) | 2014-09-03 | 2021-01-12 | Commvault Systems, Inc. | Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent |
US20160125197A1 (en) * | 2014-11-05 | 2016-05-05 | Ab Initio Technology Llc | Database Security |
US11531775B2 (en) * | 2014-11-05 | 2022-12-20 | Ab Initio Technology Llc | Database security |
US9448731B2 (en) | 2014-11-14 | 2016-09-20 | Commvault Systems, Inc. | Unified snapshot storage management |
US10628266B2 (en) | 2014-11-14 | 2020-04-21 | Commvault System, Inc. | Unified snapshot storage management |
US9921920B2 (en) | 2014-11-14 | 2018-03-20 | Commvault Systems, Inc. | Unified snapshot storage management, using an enhanced storage manager and enhanced media agents |
US10521308B2 (en) | 2014-11-14 | 2019-12-31 | Commvault Systems, Inc. | Unified snapshot storage management, using an enhanced storage manager and enhanced media agents |
US9648105B2 (en) | 2014-11-14 | 2017-05-09 | Commvault Systems, Inc. | Unified snapshot storage management, using an enhanced storage manager and enhanced media agents |
US9996428B2 (en) | 2014-11-14 | 2018-06-12 | Commvault Systems, Inc. | Unified snapshot storage management |
US11507470B2 (en) | 2014-11-14 | 2022-11-22 | Commvault Systems, Inc. | Unified snapshot storage management |
US9350561B1 (en) | 2015-05-27 | 2016-05-24 | Apptio, Inc. | Visualizing the flow of resources in an allocation model |
US11151493B2 (en) | 2015-06-30 | 2021-10-19 | Apptio, Inc. | Infrastructure benchmarking based on dynamic cost modeling |
US10268979B2 (en) | 2015-09-28 | 2019-04-23 | Apptio, Inc. | Intermediate resource allocation tracking in data models |
US10387815B2 (en) | 2015-09-29 | 2019-08-20 | Apptio, Inc. | Continuously variable resolution of resource allocation |
US9384511B1 (en) | 2015-12-16 | 2016-07-05 | Apptio, Inc. | Version control for resource allocation modeling |
US9529863B1 (en) | 2015-12-21 | 2016-12-27 | Apptio, Inc. | Normalizing ingested data sets based on fuzzy comparisons to known data sets |
US10726367B2 (en) | 2015-12-28 | 2020-07-28 | Apptio, Inc. | Resource allocation forecasting |
US11836156B2 (en) | 2016-03-10 | 2023-12-05 | Commvault Systems, Inc. | Snapshot replication operations based on incremental block change tracking |
US11238064B2 (en) | 2016-03-10 | 2022-02-01 | Commvault Systems, Inc. | Snapshot replication operations based on incremental block change tracking |
US10503753B2 (en) | 2016-03-10 | 2019-12-10 | Commvault Systems, Inc. | Snapshot replication operations based on incremental block change tracking |
US10474974B2 (en) | 2016-09-08 | 2019-11-12 | Apptio, Inc. | Reciprocal models for resource allocation |
US10936978B2 (en) * | 2016-09-20 | 2021-03-02 | Apptio, Inc. | Models for visualizing resource allocation |
US10482407B2 (en) | 2016-11-14 | 2019-11-19 | Apptio, Inc. | Identifying resource allocation discrepancies |
US10157356B2 (en) | 2016-12-14 | 2018-12-18 | Apptio, Inc. | Activity based resource allocation modeling |
US10324951B1 (en) | 2017-12-29 | 2019-06-18 | Apptio, Inc. | Tracking and viewing model changes based on time |
US11775552B2 (en) | 2017-12-29 | 2023-10-03 | Apptio, Inc. | Binding annotations to data objects |
US10268980B1 (en) | 2017-12-29 | 2019-04-23 | Apptio, Inc. | Report generation based on user responsibility |
US11422732B2 (en) | 2018-02-14 | 2022-08-23 | Commvault Systems, Inc. | Live browsing and private writable environments based on snapshots and/or backup copies provided by an ISCSI server |
US10732885B2 (en) | 2018-02-14 | 2020-08-04 | Commvault Systems, Inc. | Block-level live browsing and private writable snapshots using an ISCSI server |
US10740022B2 (en) | 2018-02-14 | 2020-08-11 | Commvault Systems, Inc. | Block-level live browsing and private writable backup copies using an ISCSI server |
US12056142B2 (en) | 2018-06-15 | 2024-08-06 | Dropbox, Inc. | Content capture across diverse sources |
US11709615B2 (en) | 2019-07-29 | 2023-07-25 | Commvault Systems, Inc. | Block-level data replication |
US11042318B2 (en) | 2019-07-29 | 2021-06-22 | Commvault Systems, Inc. | Block-level data replication |
US11809285B2 (en) | 2022-02-09 | 2023-11-07 | Commvault Systems, Inc. | Protecting a management database of a data storage management system to meet a recovery point objective (RPO) |
US12045145B2 (en) | 2022-02-09 | 2024-07-23 | Commvault Systems, Inc. | Protecting a management database of a data storage management system to meet a recovery point objective (RPO) |
US12056018B2 (en) | 2022-06-17 | 2024-08-06 | Commvault Systems, Inc. | Systems and methods for enforcing a recovery point objective (RPO) for a production database without generating secondary copies of the production database |
CN115033598A (en) * | 2022-07-07 | 2022-09-09 | 宁波和利时智能科技有限公司 | Variable attribute modification method of Internet of things model and related device |
Also Published As
Publication number | Publication date |
---|---|
US6446077B2 (en) | 2002-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6446077B2 (en) | Inherited information propagator for objects | |
Gray | Notes on data base operating systems | |
US6772350B1 (en) | System and method for controlling access to resources in a distributed environment | |
EP1624386B1 (en) | Searching for data objects | |
US5857182A (en) | Database management system, method and program for supporting the mutation of a composite object without read/write and write/write conflicts | |
US7765215B2 (en) | System and method for providing a trustworthy inverted index to enable searching of records | |
US6772155B1 (en) | Looking data in a database system | |
US6182121B1 (en) | Method and apparatus for a physical storage architecture having an improved information storage and retrieval system for a shared file environment | |
RU2413984C2 (en) | Systems and methods of manipulating data in data storage system | |
EP0662228B1 (en) | Apparatus for data storage and retrieval | |
US7730475B2 (en) | Dynamic metabase store | |
JP4406609B2 (en) | Techniques for managing multiple hierarchies of data from a single interface | |
US6598060B2 (en) | Method and system for creating and maintaining version-specific properties in a distributed environment | |
US20040267747A1 (en) | Transaction processing system supporting concurrent accesses to hierarchical data by transactions | |
US6647391B1 (en) | System, method and article of manufacture for fast mapping from a propertied document management system to a relational database | |
US20070043686A1 (en) | Xml sub-document versioning method in xml databases using record storages | |
CA2722320C (en) | Paging hierarchical data | |
JPH11161535A (en) | Method for solving data confliction in common data environment | |
MXPA05005535A (en) | Anti virus for an item store. | |
TWI724570B (en) | Method, device, electronic equipment and storage medium for reading and updating data structure | |
US7822767B2 (en) | Modeling and implementing complex data access operations based on lower level traditional operations | |
US20030200193A1 (en) | Fast retrieval of data stored in metadata | |
Flynn et al. | Lecture notes in computer science | |
US9009731B2 (en) | Conversion of lightweight object to a heavyweight object | |
US20140059080A1 (en) | System for lightweight objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:STRAUBE, DAVE;WILLIAMS, TIM;REEL/FRAME:009632/0336 Effective date: 19981029 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034541/0001 Effective date: 20141014 |