[go: up one dir, main page]

GB2347528A - Object database with caching support - Google Patents

Object database with caching support Download PDF

Info

Publication number
GB2347528A
GB2347528A GB9904831A GB9904831A GB2347528A GB 2347528 A GB2347528 A GB 2347528A GB 9904831 A GB9904831 A GB 9904831A GB 9904831 A GB9904831 A GB 9904831A GB 2347528 A GB2347528 A GB 2347528A
Authority
GB
United Kingdom
Prior art keywords
session access
interface
class
interfaces
access interface
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.)
Withdrawn
Application number
GB9904831A
Other versions
GB9904831D0 (en
Inventor
David Hostettler Wain
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NAXT Ltd
Original Assignee
NAXT Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NAXT Ltd filed Critical NAXT Ltd
Priority to GB9904831A priority Critical patent/GB2347528A/en
Publication of GB9904831D0 publication Critical patent/GB9904831D0/en
Publication of GB2347528A publication Critical patent/GB2347528A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (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)

Abstract

An object database with caching support that provides a framework that can be used to improve access speeds to data objects over low bandwidth, insecure connections. The interface is consistent with a recursive or layered design, allowing functionality to be delegated to a suitable layer. Normal database operations are provided, together with operations for retrieving ObjectSets or VersionSets, and local caching is supported. Classes can receive asynchronous updates to objects, ensuring the cache can be updated in the background. Security of objects can be ensured, and the enforcement implementations can be separated from the bulk of the code.

Description

Object Database with Caching Support Technical Field This invention relates to an object database with caching support.
Background Databases are well known systems that allow the storage and retrieval of data. There are several databases currently that support the versioning of files. There are also several databases that support the storage and retrieval of objects. Most of the details of these databases are too lengthy to be described here.
The usuai arrangement in a cilvent Zerver computer system is to have the database (s) residing on the server. One of more clients can then connect to the server in order to update or read the information within the database. Unfortunately, this means that in a traditional system, when reading data, the information is resent from the server to the client every time it is requested. This is acceptable with high bandwidth, low response time communications lines, but is too inefficient for low bandwidth ones.
The response in the field of Web browsers has been to cache the data whenever read from the server. That is, files (data) are retrieved only once, the first time they are requested. Subsequent requests for the same file will usually be served from the local cache, not from the server.
Other, more advanced caching systems exist for Web pages. These programs download all of the Web pages in a Web site, or those referred to in the current document. The first case is so that a user may download a site completely and may then browse offline. The second case is to attempt to predict the next page requested by the user.
Of course, the above cases refer to Web pages. Most of the innovations in caching over low bandwidth lines have centred on Web access. But Web pages are just one kind of object.
The object database described herein solves the problem of accessing databases over low bandwidth communications lines by caching local data locally, such that the amount of data transmitted may be minimised.
Essential Technical Features According to the present invention there is provided a versioning object database with local caching support comprising the following: 1) A session access interface defining functions or methods to access one or more databases, consistent with the efficient layering of database access functionality.
2) A cached session access interface with support for object caching and asynchronous object refresh.
3) An untrusted session access implementation introducing an abstracted security enforcer interface.
4) A security enforcement interface consistent with the layering of functionality.
5) A remote session access implementation introducing an open connection class for the actual transmission and reception of database requests and results 6) An open connection class for connecting two processes running on different machines, capable of supporting sub-connections recursively.
7) Supporting classes and interfaces.
All of the above are illustrated in Appendix A, with code listings in the Java language, although the underlying principles apply to Object Oriented techniques generally.
The database is designed primarily for the publishing of data objects. Most publishing systems require an approval mechanism to control the process of publishing. The database supports this process by allowing more than one version of each object to be stored at a given time. Also, each version has an associated visibility, which determines to which users it is readable. Thus it is envisaged that although some users will be able to update an object (by creating a new version), that new version will not be globally visible until a suitably privileged user approves it. This is done merely by creating a new version with the object's maximum visibility. This is possible as a privileged user is allowed to control the visibility of a version.
Each Object is uniquely defined by its ObjectReference. Also, each Object has its own permissions, defined by the ObjectPermissions class. It is envisaged that these permissions will define the users that can update or read the object.
Each Version is uniquely defined by its VersionReference. Also, each Version shall have its own permissions, defined by the VersionPermissions class. It is envisaged that these permissions will define the users that can read the version.
VersionPermissions may be integrated with respect to time. The maximum visibility of a version is defined by the visibility of the object. If the visibility of a version is masked by later versions, then it is known as a defunct version, and may be deleted permanently during garbage collection. A generic VisibilityMask is defined for the purpose of integration.
The database query mechanism provides interfaces for the generation of ObjectSets and VersionSets. These sets are collections of ObjectReferences or VersionReferences that reference each other. That is they are self-referential subsets of data. Filters such as a TimeFilter may be applied to the set generated in support of local object caching.
These sets are designed to be used by a client that wishes to construct a"to-do"list of objects or versions that need to be downloaded in order to update a local cache.
The database supports the layering of functionality. This means that the enforcement of security may be performed at any layer, allowing critical security enforcement to be performed on the servers. Hence users on client machines do not have access to security upholding code and are therefore not able to subvert the security model. Hence, it allows only machines with the correct level of trust to uphold security.
The layering of functionality also means that any implementation can be designed to minimise bandwidth requirements, consistent with the aim of reducing database access times.
The connection mechanism introduced by the remote sesson access class is designed to support security integrity. It allows the connections to create sub-connections in either direction, allowing any design to be firewall friendly. This means that firewalls may be configured in simple and secure fashion, reducing the potential for illegal access to secure machines.
The caching mechanism is asynchronous. ObjectObservers register their interest in various objects using the interfaces presented in the CachedSessionAccess interface.
Whenever new versions become available, or existing information is confirmed as out-ofdate or up-to-date, the observer is informed or the value or state change via the interfaces defined in ObjectObserver. Objects thus can have three states, namely, potentially-out-of-date (before the to-do"information has been received), definitely-outof-date (when there are new, visible versions on the server) and definitely-up-to-date (when all visible versions have been cached).
Client-Server Example A specific embodiment of the invention will now be described by way of example with reference to the accompanying code listings in which : Appendix C, class CacheTestClient shows an implementation of a caching client.
Appendix C, class UpdateTestClient shows an implementation of an updating client.
AppendixC, class ClientSessionAccess shows an implementation of a client's CacheSessionAccess.
Appendix C, class ClientSessionAccessProvider shows an implemtation of a client's SessionAccessProvider.
Appendix C, class ClientSecurityEnforcer shows an implementation of a client's SecurityEnforcer.
Appendix C, class CacheDefinition shows an implementation of a cache definition Appendix C, class CacheState shows an implementation of a cache state.
Appendix D, class CatalogServer shows an implementation of a server.
Appendix D, class CatalogServerRequestListener shows an implementation of a server's RequestListener supporting reversed sub-connection support for networks containing firewalls.
Appendix D, class CatalogServerSessionAccessProvider shows an implementation of a server's SessionAccessProvider giving access to the local database through a UntrustedSessionAccess object.
Appendix D, class CatalogServerSecurityEnforcer shows an implementation of a server's SecurityEnforcer.
Appendix D, class CatalogServerSessionRequestListener shows an implementation of a server sub-connection (or session) RequestListener.
Referring to the listings the two client examples comprise a main method which acts as a test script for the checking of the ClientSessionAccess class.
The CacheTestClient is designed to test the ability of a client object cache to correctly identify the minimum amount of downloading required to bring it up to date and to inform object observers of those changes asynchronously. The key functionality takes place in the ClientSessionAccess class.
The ClientSessionAccess class is designed to be able to access a CD-ROM cache, a Hard Drive cache and the remote server when required.
If there is a hard disk cache, the ClientSessionAccess runs a thread in background which, on connection to the server, requests a"to-do"list of versions in the form of a VersionSet. This VersionSet is filtered using a TimeFilter based on the time recorded within the CacheDefinition object reTating to the cache of the hard disk (or permanent mass storage device). This means that only those versions that have been created after the last time the"to-do"list wa updated are to be returned, even though the entire selfreferential set of versions is to be traversed. The VersionSet returned therefore contains those versions"under"the top objects that were created after the"to-do"list was updated.
Once the new"to-do"list has been obtained, it is merged with the existing"to-do"list, as the existing list may not have been completed. The combined list is then saved as the existing"to-do"list to ensure that if the client closes or exits unexpectedly, the information is retained on the hard drive. All of the object observers are then informed as to whether the objects in which they have registered an interest are up-to-date or out-ofdate.
The background thread then sequentially goes through the"to-do"list, getting the new versions specified. As each version is downloaded, the"to-do"list is"checked off'and resaved in case of a crash. Thus the versions are gradually downloaded into the local cache. Of course, as later visible versions of observed objects are downloaded, their observers are duely informed of the change.
When an ObjectObserver registers an interest in a database object, both the hard disk cache and the CD-ROM cache are first checked to see whether a version of an object is present. If there is a local copy present, the ObjectObserver is informed of the latest visible version and, if the object is not covered by the background cache thread, a background ReadObjectRequest is sent to the server requesting the object. When the ReadObjectResult returns, the observers are informed if the version retrieved from the cache has been superceded by one from the server.
The UpdateTestClient is designed to test the update functions of the database. It creates and updates several objects by logging on to the server with system privileges so that updates are allowed. The detail of the updates are not important except that they generate new versions on the database within the self-referential sets that are cached, and hence this client is used to change the database as a prelude to the cache test.
Referring to the listings the CatalogServer comprises a main method or entry point which creates a CatalogServerRequestListener which listeners for ConnectionRequests. It then logs into the RouterServer, and spawns sub-connections in response the user sessions being requested. Those sessions contain session data that changes in response to the session protocol between the RouterServer and the CatalogServer. The session state reflects the user's information required to enforce security. The session state is used by the CatalogServerSecurityEnforcer to determine the ability of users to change or create objects. The CatalogServerSessionRequestListener listens for session database requests applying the security rules using the security enforcer.
The example contains two clients and one server. They do not constitute a complete working system. At least one other server is required, referred to above as the RouterServer. The inclusion of this server in this example is not required for the illustration of the Invention.

Claims (22)

  1. Claims 1. A session access interface comprising methods or interfaces for database session access.
  2. 2. A session access interface as claimed in Claim 1, wherein interfaces are provided that allow for a recursive or layered design allowing efficient and secure delegation of functionality in low bandwidtfi ana insecure environments.
  3. 3. A session access interface as claimed in Claim 1, wherein interfaces are provided for the control of user sessions within a generic security framework.
  4. 4. A session access interface as claimed in Claim 1, wherein interfaces are provided for the update of database objects.
  5. 5. A session access interface as claimed in Claim 1, wherein interfaces are provided for the reading of objects and their versions.
  6. 6. A session access interface as claimed in Claim 1, wherein interfaces are provided for the querying of the database in support of caching operations.
  7. 7. A session access interface substantially as described herein with reference to the source code listing of interface SessionAccess in the accompanying Appendix A.
  8. 8. A cache session access interface comprising methods in addition to those methods inherited from the session access interface.
  9. 9. A cache session access interface as claimed in Claim 8, wherein object observers are permitted to register their interest in objects and can receive updates to them asynchronously.
  10. 10. A cached session access interface substantially as described herein with reference to the source code listing of interface CachedSessionAccess in the accompanying Appendix A.
  11. 11. An untrusted session access class comprising an implementation of a session access interface as claimed in Claim 1.
  12. 12. An untrusted session access class as claimed in Claim 11, wherein the security enforcement portion of functionality is abstracted into a security enforcer interface.
  13. 13. An untrusted session access class as claimed in Claim 11, wherein the functionality is consistent with the layering of functionality as suggested by the session access interface as claimed in Claim 1.
  14. 14. An untrusted session access class substantially as described herein with reference to the source code listing of class UntrustedSessionAccess in the accompanying Appendix A.
  15. 15. A security enforcement interface comprising methods or interfaces for security enforcement.
  16. 16. A security enforcement interface as claimed in Claim 15, wherein interfaces are provided for the enforcement of security consistent with the layering of functionality as suggested by the session access interface as claimed in Claim 1.
  17. 17. A security enforcement interface substantially as described herein with reference to the source code listing of interface SecurityEnforcer in the accompanying Appendix A.
  18. 18. A session access provider interface comprising methods or interfaces for the request of session access objects that are instances of implementations of the session access interface as claimed in Claim 1 consistent with the layering of functionality.
  19. 19. A session access provider interface substantially as described herein with reference to the source code listing of interface SessionAccessProvider in the accompanying Appendix A.
  20. 20. A remote session access class comprising an implementation of a session access interface as claimed in Claim 1.
  21. 21. A remote session access class as claimed in Claim 20, wherein methods calls are converted into request objects suitable for remote transfer.
  22. 22. A remote session access class interface substantially as described herein with reference to the source code listing of class RemoteSessionAccess in the accompanying Appendix A.
GB9904831A 1999-03-04 1999-03-04 Object database with caching support Withdrawn GB2347528A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GB9904831A GB2347528A (en) 1999-03-04 1999-03-04 Object database with caching support

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB9904831A GB2347528A (en) 1999-03-04 1999-03-04 Object database with caching support

Publications (2)

Publication Number Publication Date
GB9904831D0 GB9904831D0 (en) 1999-04-28
GB2347528A true GB2347528A (en) 2000-09-06

Family

ID=10848833

Family Applications (1)

Application Number Title Priority Date Filing Date
GB9904831A Withdrawn GB2347528A (en) 1999-03-04 1999-03-04 Object database with caching support

Country Status (1)

Country Link
GB (1) GB2347528A (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997006485A1 (en) * 1995-08-08 1997-02-20 Apple Computer, Inc. System for dynamically caching and constructing software resource tables
WO1998020426A1 (en) * 1996-11-05 1998-05-14 Microage Computer Centers, Inc. External cache for on-line resources
WO1998038587A1 (en) * 1997-02-26 1998-09-03 Siebel Systems, Inc. Method of using a cache to determine the visibility to a remote database client of a plurality of database transactions
WO1999005619A1 (en) * 1997-07-28 1999-02-04 Icon Cmt Corp. Dynamically generated document cache system
GB2328535A (en) * 1997-08-01 1999-02-24 Ibm Determining how changes to underlying data affect cached objects
GB2330433A (en) * 1997-10-20 1999-04-21 Fujitsu Ltd Data caching in a client/server database system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997006485A1 (en) * 1995-08-08 1997-02-20 Apple Computer, Inc. System for dynamically caching and constructing software resource tables
WO1998020426A1 (en) * 1996-11-05 1998-05-14 Microage Computer Centers, Inc. External cache for on-line resources
WO1998038587A1 (en) * 1997-02-26 1998-09-03 Siebel Systems, Inc. Method of using a cache to determine the visibility to a remote database client of a plurality of database transactions
WO1999005619A1 (en) * 1997-07-28 1999-02-04 Icon Cmt Corp. Dynamically generated document cache system
GB2328535A (en) * 1997-08-01 1999-02-24 Ibm Determining how changes to underlying data affect cached objects
GB2330433A (en) * 1997-10-20 1999-04-21 Fujitsu Ltd Data caching in a client/server database system

Also Published As

Publication number Publication date
GB9904831D0 (en) 1999-04-28

Similar Documents

Publication Publication Date Title
US6832222B1 (en) Technique for ensuring authorized access to the content of dynamic web pages stored in a system cache
US11126605B2 (en) System and method for clustering distributed hash table entries
US6006018A (en) Distributed file system translator with extended attribute support
US7343412B1 (en) Method for maintaining and managing dynamic web pages stored in a system cache and referenced objects cached in other data stores
US10528537B2 (en) System and method for fetching the latest versions of stored data objects
EP1546924B1 (en) Method, system, and program for maintaining data in distributed caches
US7024452B1 (en) Method and system for file-system based caching
US10061852B1 (en) Transparent proxy tunnel caching for database access
US6105028A (en) Method and apparatus for accessing copies of documents using a web browser request interceptor
US6192398B1 (en) Remote/shared browser cache
EP0827607B1 (en) Method for managing globally distributed software components
US7827280B2 (en) System and method for domain name filtering through the domain name system
AU2005316812B2 (en) Infrastructure for performing file operations by a database server
US7548918B2 (en) Techniques for maintaining consistency for different requestors of files in a database management system
CA2241438A1 (en) A method and system for maintaining a global name space
WO2006065269A1 (en) Techniques for providing locks for file operations in a database management system
US20030140100A1 (en) System and method for URL response caching and filtering in servlets and application servers
US20010037302A1 (en) Data web object host discovery system
US6236661B1 (en) Accelerating access to wide area network information
Krzyzanowski Distributed file systems design
US7716260B2 (en) Techniques for transaction semantics for a database server performing file operations
GB2347528A (en) Object database with caching support
US7596564B1 (en) Method and system for cache management of a cache including dynamically-generated content
US9219706B2 (en) Just-in-time wrapper synchronization
WO1998020426A9 (en) External cache for on-line resources

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)