Database management system and method for databases having large objects
First Claim
Patent Images
1. A computer-implemented method for managing binary large objects in a database management system, comprising:
- constructing a database table having a plurality of rows of data, each row including one or more fixed-length data elements and one or more object identifiers referencing and associated with respective binary large objects;
maintaining each binary large object in a section of contiguous storage reference by the associated identifier;
storing an information header before each section of contiguous storage;
storing file addresses of binary large objects as part of the object identifiers;
constructing an allocation control table having a plurality of entries, each entry referencing an associated portion of storage; and
locking the allocation control table entry prior to allocating storage for a binary large object from the portion of storage associated with the table entry, thereby limiting allocation of storage within an associated portion of storage to one transaction at a time and controlling multi-transaction access to the storage area of the binary large objects.
12 Assignments
0 Petitions
Accused Products
Abstract
A system and method for managing binary large objects in a database are described in various embodiments. A database management system manages a database table having a plurality of rows of data. Each row includes one or more fixed-length data elements and one or more object identifiers that reference and are associated with respective binary large objects. An object handler coupled to the database management system, the object handler configured and arranged to store each binary large object in a section of contiguous storage referenced by the associated identifier, manages binary large objects.
158 Citations
35 Claims
-
1. A computer-implemented method for managing binary large objects in a database management system, comprising:
-
constructing a database table having a plurality of rows of data, each row including one or more fixed-length data elements and one or more object identifiers referencing and associated with respective binary large objects;
maintaining each binary large object in a section of contiguous storage reference by the associated identifier;
storing an information header before each section of contiguous storage;
storing file addresses of binary large objects as part of the object identifiers;
constructing an allocation control table having a plurality of entries, each entry referencing an associated portion of storage; and
locking the allocation control table entry prior to allocating storage for a binary large object from the portion of storage associated with the table entry, thereby limiting allocation of storage within an associated portion of storage to one transaction at a time and controlling multi-transaction access to the storage area of the binary large objects. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
reading one or more rows of data from the database table in response to a request from a transaction;
returning the data elements from the one or more rows of data to the transaction;
obtaining one or more object identifiers from the one or more rows of data; and
transferring the one or more binary large objects referenced by the one or more object identifiers from one or more sections of contiguous storage to memory locations in the request.
-
-
3. The method of claim 2, wherein the one or more binary large objects are directly transferred from the one or more sections of contiguous storage to memory locations without staging the binary large object data through the database management system.
-
4. The method of claim 1, further comprising:
-
allocating one or more sections of contiguous storage for the one or more binary large objects in response to a request from a transaction to insert a row of data in the database table; and
transferring one or more large binary objects from memory locations referenced in the request to the one or more sections of contiguous storage.
-
-
5. The method of claim 4, wherein one or more large binary objects are directly transferred from the one or more sections of contiguous storage to memory locations without staging the binary large object data through the database management system.
-
6. The method of claim 1, further comprising:
-
reading one or more rows of data from the database table in response to a request from a transaction;
returning to the transaction and data elements from the one or more rows of data and Uniform Resourse Locations reflecting the one or more binary objects; and
in response to the Uniform Resource Locators received from the transaction transferring the one or more binary large objects from storage to the transaction.
-
-
7. The method of claim 1, further comprising:
-
tracking sections of contiguous storage that are available for storage of additional binary large objects;
maintaining information headers associated with the available sections of contiguous storage;
storing creation timestamps in the information headers associated with sections of contiguous storage having stored binary large objects, wherein the creation timestamp references a time at which an associated binary large object was stored; and
storing deletion timestamps in information headers associated with available sections of contiguous storage, wherein the deletion timestamp references a time at which an associated binary large object was deleted; and
detecting corruption of an available section of contiguous storage where the associated information header has a creation timestamp greater than its deletion timestamp.
-
-
8. The method of claim 1, further comprising:
-
tracking sections of contiguous storage that are available for storage of additional binary large objects;
maintaining information headers associated with the available sections of contiguous storage;
storing transaction-control identifiers in information headers associated with available sections of contiguous storage, wherein a transaction-control identifier references a transaction that deleted an associated binary large object;
if a transaction submits a delete request followed by an insert request selecting an available section of contiguous storage for the insert request other than an available section of contiguous storage having the transaction-control identifier of the transaction stored in the information header.
-
-
9. The method of claim 1, further comprising:
-
generating a first cyclic redundancy check code from a binary large object when the binary large object is inserted;
storing the first cyclic redundancy check code in the associated information header;
generating a second cyclic redundancy check code from a binary large object when the binary large object is read; and
detecting corruption of the binary large object where the first and second cyclic redundancy check codes are unequal.
-
-
10. The method of claim 1, further comprising:
-
randomly selecting one of the entries in the allocation control table to add a row to a table under control of an insert transaction;
attempting to lock the one of the entries for the insert transaction; and
attempting to lock successive ones of the allocation control table entries until a lock is granted if the lock on the one of the entries is denied to the insert transaction.
-
-
11. The method of claim 10, further comprising queuing to lock the one of the entries if locks where denied to the insert transaction on the previous ones of the entries.
-
12. The method of claim 1, further comprising:
-
testing whether there is sufficient storage available for a binary large object referenced by the row in the locked allocation control table entry;
storing the binary large object in the storage associated with the one of the entries if there is sufficient storage available; and
if there is insufficient storage available in the one of the entries, testing for available storage associated with successive entries of the allocation control table until sufficient storage is found.
-
-
13. The method of claim 1, further comprising, establishing separate files for binary large objects of different data types, wherein the binary objects are stored in files according to data type.
-
14. An apparatus for managing binary large objects in a database management system, comprising:
-
means for constructing a database table having a plurality of rows of data, each row including one or more fixed-length data elements and one or more object identifiers referencing and associated with respective binary large objects;
means for maintaining each binary large object in a section of contiguous storage referenced by the associated identifier;
means for storing an information header before each section of contiguous storage;
means for storing file addresses of binary large objects as part of the object identifiers;
means for constructing an allocation control table having a plurality of entries, each entry referencing an associated portion of storage; and
means for locking the allocation control table entry prior to allocating storage for a binary large object from the portion of storage associated with the table entry, thereby limiting allocation of storage within an associated portion of storage to one transaction at a time and controlling multi-transaction access to the storage area of the binary large objects. - View Dependent Claims (15)
means for reading one or more rows of data from the database table in response to a request from a transaction;
means for returning the data elements from the one or more rows of data to the transaction;
means for obtaining one or more object identifiers from the one or more rows of data; and
means for transferring the one or more binary large objects referenced by the one or more object identifiers from one or more sections of contiguous storage to memory locations referenced in the request.
-
-
16. A system for managing binary large objects, comprising:
-
a database management system configured and arranged to manage a database table having a plurality of rows of data, each row including one or more fixed-length data elements and one or more object identifiers including file addresses of respective binary large objects; and
an object handler coupled to the database management system, the object handler configured and arranged to maintain each binary large object in a section of contiguous storage referenced by the associated identifier, store an information header before each section of contiguous storage, construct an allocation control table having a plurality of entries, each entry referencing an associated portion of storage and lock the allocation control table entry prior to allocating storage for a binary large object from the portion of storage associated with the table entry, thereby limiting allocation of storage within an associated portion of storage to one transaction at a time and controlling multi-transaction access to the storage area of the binary large objects. - View Dependent Claims (17)
the database management system is further configured and arranged to read one or more rows of data from the database table in response to a request from a transaction and return the data elements from the one or more rows of data to the transaction; - and
the object handler is further configured and arranged to transfer one or more binary large objects referenced by the one or more object identifiers from one or more sections of contiguous storage to memory locations referenced in the request.
-
-
18. A computer-implemented method for managing binary large objects in a database management system comprising:
-
maintaining a database table having a plurality of row of data, each row including one or more fixed-length data elements and one or more object identifiers referencing and associated with respective binary large objects;
storing each binary large object in a respective section of contiguous storage;
preserving contiguous storage of each binary large object for as long as the binary large object is referenced by the database table;
constructing an allocation control table having a plurality of entries, each entry referencing an associated portion of storage; and
locking the allocation control table entry prior to allocating storage for a binary large object from the portion of storage associated with the table entry, thereby limiting allocation of storage within an associated portion of storage to one transaction at a time and controlling multi-transaction access to the storage area of the binary large objects. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
reading one or more rows of data from the database table in response to a request from a transaction;
returning the data elements from the one or more rows of data to the transaction;
obtaining one or more object identifiers from the one or more rows of data; and
transferring the one or more binary large objects referenced by the one or more object identifiers from one or more sections of contiguous storage to memory locations referenced in the request.
-
-
20. The method of claim 19, wherein the one or more binary large objects are directly transferred from the one or more sections of contiguous storage to memory locations without staging the binary large object data through the database management system.
-
21. The method of claim 18, further comprising:
-
allocating one or more sections of contiguous storage for the one or more binary large objects in response to a request from a transaction to insert a row of data in the database table; and
transferring the one or more binary large objects from memory locations referenced in the request to the one or more sections of contiguous storage.
-
-
22. The method of claim 21, wherein the one or more binary large objects are directly transferred from the one or more sections of contiguous storage to memory locations without staging the binary large object data through the database management system.
-
23. The method of claim 18, further comprising:
-
reading one or more rows of data from the database table in response to a request from a transaction;
returning to the transaction the data elements from the one or more rows of data and Uniform Resource Locators referencing the one or more binary large objects; and
in response to the Uniform Resource Locators received from the transaction, transferring the one or more binary large objects from storage to the transaction.
-
-
24. The method of claim 18, further comprising:
-
storing an information header before each section of contiguous storage; and
storing file addresses of binary large objects as part of the object identifiers.
-
-
25. The method of claim 24, further comprising:
-
tracking sections of contiguous storage that are available foe storage of additional binary large objects;
maintaining information headers associated with the available sections of contiguous storage;
storage creation timestamps in the information headers associated with sections of contiguous storage having stored binary large objects, wherein the creation timestamp references a time at which an associated binary large object was stored; and
storing deletion timestamps in information headers associated with available sections of contiguous storage, wherein the deletion timestamp references a time at which an associated binary large object was deleted; and
detecting corruption of an available section of contiguous storage where the associated information header has a creation timestamp greater than its deletion timestamp.
-
-
26. The method of claim 24, further comprising:
-
tracking sections of contiguous storage that are available for storage of additional binary large objects;
maintaining information headers associated with the available sections of contiguous storage;
storing transaction-control identifiers in information headers associated with available sections of contiguous storage, wherein a transfer-control identifier references a transaction that deleted an associated binary large object;
if a transaction submits a delete request followed by an insert request, selecting an available section of contiguous storage for the insert request other than an available section of contiguous storage having the transaction-control identifier of the transaction stored in the information header.
-
-
27. The method of claim 24, further comprising:
-
generating a first cyclic redundancy check code from a binary large object when the binary large object is inserted;
storing the first cyclic redundancy check code in the associated information header;
generating a second cyclic redundancy check code from a binary large object when the binary large object is read; and
detecting corruption of the binary large object where the first and second cyclic redundancy check codes are unequal.
-
-
28. The method of claim 18, further comprising controlling multi-transaction access to the storage area of the binary large objects.
-
29. The method of claim 28, further comprising:
-
constructing an allocation control table having a plurality of entries, each entry referencing an associated portion of storage;
locking the allocation control table entry prior to allocating storage for a binary large object from the portion of storage associated with the table entry, thereby limiting allocation of storage within an associated portion of storage to one transaction at a time.
-
-
30. The method of claim 29, further comprising:
-
randomly selecting one of the entries in the allocation control table to add a row to a table under control of an insert transaction;
attempting to lock the one of the entries for the insert transaction; and
attempting to lock successive ones of the allocation control table entries until a lock is granted if the lock on the one of the entries is denied to the insert transaction.
-
-
31. The method of claim 30, further comprising queuing to lock the one of the entries if locks were denied to the insert transaction on the previous ones of the entries.
-
32. The method of claim 29, further comprising:
-
testing whether there is sufficient storage available for a binary large object referenced by the row in the locked allocation control entry;
storing the binary large object in the storage associated with the one of the entries if there is sufficient storage available; and
if there is insufficient storage available in the one of the entries, testing for available storage associated with successive entries of the allocation control table until sufficient storage is found.
-
-
33. The method of claim 18, further comprising, establishing separate files for binary large objects of data types, wherein the binary objects are stored in files according to data type.
-
34. An apparatus for managing binary large objects in a database management system, comprising:
-
means for maintaining a database table having a plurality of rows of data, each row including one or more fixed-length data elements and one or more object identifiers referencing and associated with respective binary large objects;
means for storing each binary large object in a respective section of contiguous storage;
means for preserving contiguous storage of each binary large object for as long as the binary large object is referenced by the database table;
means for constructing an allocation control table having a plurality of entries, each entry referencing an associated portion of storage; and
means for locking the allocation control table entry prior to allocating storage for a binary large object from the portion of storage associated with the table entry, thereby limiting allocation of storage within an associated portion of storage to one transaction at a time and controlling multi-transaction access to the storage area of the binary large objects.
-
-
35. A system for managing binary large objects, comprising:
-
a database management system configured and arranged to maintain a database table having a plurality of rows of data, each row including one or more fixed-length data elements and one or more object identifiers referencing and associated with respective binary large objects; and
an object handler coupled to the database management system, the object handler configured and arranged to store each binary large object in a respective section of contiguous storage and preserve contiguous storage of each binary large object for as long as the binary large object is referenced by the database table, construct an allocation control table having a plurality of entries, each entry referencing an associated portion of storage, and lock the allocation control table entry prior to allocating storage for a binary large object from the portion of storage associated with the table entry, thereby limiting allocation of storage within an associated portion of storage to one transaction at a time and controlling multi-transaction access to the storage area of the binary large objects.
-
Specification