IP Library Granted Patent US 12688152
Granted Patent B2
US 12688152 · App. 18/885,394 · Granted Jul 21, 2026

Hyper-scale, elastic, smart, shared, database aware storage

Inventors: Nilesh Choudhury (Redwood City, CA); Juan R. Loaiza (Woodside, CA); Kothanda Umamageswaran (Sunnyvale, CA); Jia Shi (Campbell, CA); Vijay Sridharan (Santa Clara, CA); Alexander Tsukerman (Foster City, CA); Siddharth Choudhary (Belmont, CA)
Assignee: Oracle International Corporation
G06F16/13
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12688152
App. No.
18/885,394
Granted
Jul 21, 2026
Kind
B2
Abstract

Herein is an accelerated interface between a database server and a storage area network (SAN). Persistent storage being managed for a database is spread across a number of storage buckets. Global distributed storage metadata is used only for tracking the location of storage buckets on different storage servers. With this approach, a very small amount of memory is needed at a global distributed level to maintain the map. Each storage bucket can have any number of mirrored replicas for further increasing speed and reliability. A database server contains a storage bucket map in memory, and uses the map to do database online transaction processing (OLTP) I/O and smart (i.e. offloaded) database operations on storage. This allows for direct I/O between database server and storage server with lower latency and without using slow and remote middleware such as a logical unit number (LUN) metadata server on a separate network element.

Claims (65)

1 . A method comprising:

receiving through a communication network, from a database server that operates a database, a request to access a database extent in a database file of the database, wherein the database is one of a relational database, a graph database, a geographic database, or a document database;

obtaining, based on the request, a bucket number of a storage bucket that can aggregate the database extent in the database file;

selecting a storage drive, in a storage server, that is associated with the bucket number of the storage bucket in a storage bucket map in the storage server;

accessing, in the storage drive, the database extent in the database file; and

sending, to the database server, a response that is based on said accessing;

wherein the method is performed by the storage server.

2 . The method of claim 1 wherein:

said selecting comprises using the bucket number of the storage bucket as a lookup key to retrieve the storage bucket;

the storage bucket contains an identifier of the storage drive and an identifier of the storage server.

3 . The method of claim 2 wherein:

the request contains a location version number;

the storage bucket contains a location version number;

the method further comprises detecting that the location version number in the request is not less than the location version number in the storage bucket;

said selecting is responsive to said detecting.

4 . The method of claim 3 wherein:

said storage drive is a first storage drive;

the method further comprises:

moving the storage bucket from said first storage drive to a second storage drive;

increasing, in response to said moving, the location version number in the storage bucket.

5 . The method of claim 3 wherein:

said request is a first request;

the method further comprises after said sending:

receiving a second request that contains the location version number of the first request, and

rejecting, based on the location version number in the second request, the second request.

6 . The method of claim 1 wherein said receiving from the database server comprises receiving a remote direct memory access (RDMA) request.

7 . The method of claim 1 wherein the request contains none of: a logical unit number (LUN) and an identifier of the storage drive.

8 . A method comprising:

obtaining a bucket number of a storage bucket that can aggregate a database extent in a database file;

sending, based on the bucket number of the storage bucket, a first request to access the database extent in the database file, wherein the first request contains a location version number that is associated with the bucket number of the storage bucket in a storage bucket map in a database server;

detecting that the first request failed because the location version number of the storage bucket is stale; and

in response to said detecting:

retrieving a latest location version number of the storage bucket, and

sending a second request that represents the first request except that the second request contains said latest location version number of the storage bucket;

wherein:

the method is performed, by the database server, in a single database transaction for a database that includes the database file, and

the database is one of a graph database, a geographic database, or a document database.

9 . The method of claim 8 wherein:

said sending the first request comprises sending to a first storage server;

said sending the second request comprises sending to a second storage server.

10 . The method of claim 9 further comprising the database server generating the first request including storing, in the first request, an identifier of the database server or an identifier of the first storage server.

11 . One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors in a storage server, cause:

receiving through a communication network, from a database server that operates a database, a request to access a database extent in a database file of the database, wherein the database is one of a relational database, a graph database, a geographic database, or a document database;

obtaining, based on the request, a bucket number of a storage bucket that can aggregate the database extent in the database file;

selecting a storage drive, in the storage server, that is associated with the bucket number of the storage bucket in a storage bucket map in the storage server;

accessing, in the storage drive, the database extent in the database file; and

sending, to the database server, a response that is based on said accessing.

12 . The one or more non-transitory computer-readable media of claim 11 wherein said selecting comprises using the bucket number of the storage bucket as a lookup key to retrieve the storage bucket.

13 . The one or more non-transitory computer-readable media of claim 12 wherein:

the request contains a location version number;

the storage bucket contains a location version number;

the instructions further cause detecting that the location version number in the request is not less than the location version number in the storage bucket;

said selecting is responsive to said detecting.

14 . One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors in a database server, cause in a single database transaction for a database that includes a database file:

obtaining a bucket number of a storage bucket that can aggregate a database extent in the database file;

sending, based on the bucket number of the storage bucket, a first request to access the database extent in the database file, wherein the first request contains a location version number that is associated with the bucket number of the storage bucket in a storage bucket map in the database server;

detecting that the first request failed because the location version number of the storage bucket is stale; and

in response to said detecting:

retrieving a latest location version number of the storage bucket, and

sending a second request that represents the first request except that the second request contains said latest location version number of the storage bucket;

wherein the database is one of a graph database, a geographic database, or a document database.

15 . The one or more non-transitory computer-readable media of claim 14 wherein:

said sending the first request comprises sending to a first storage server;

said sending the second request comprises sending to a second storage server.

16 . The one or more non-transitory computer-readable media of claim 15 wherein the instructions further cause the database server generating the first request including storing, in the first request, an identifier of the database server or an identifier of the first storage server.