IP Library Granted Patent US 8,621,155
Granted Patent B2
US 8,621,155 · App. 12/983,754 · Granted Dec 31, 2013

Efficient flash memory-based object store

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 8,621,155
App. No.
12/983,754
Granted
Dec 31, 2013
Kind
B2
Abstract

Approaches for an object store implemented, at least in part, on one or more solid state devices. The object store may store objects on a plurality of solid state devices. The object store may include a transaction model means for ensuring that the object store performs transactions in compliance with atomicity, concurrency, isolation, and durability (ACID) properties. The object store may include means for providing parallel flushing in a write cache maintained on each of the solid state devices. The object store may include means for maintaining one or more double-write buffers, for the object store, at a location other than the solid state devices. The object store may optionally comprise means for maintaining one or more circular transaction logs, for the object store, at a location other than the solid state devices. The object store may operate to minimize write operations performed on the solid state devices.

Claims (45)

1. A distributed object store, comprising:

a plurality of solid state devices, wherein the distributed object store stores objects on the plurality of solid state devices;

a transaction model means for ensuring the distributed object store performing transactions in compliance with atomicity, concurrency, isolation, and durability (ACID) properties;

means for providing parallel flushing in a write cache maintained on each of the plurality of solid state devices; and

means for maintaining one or more double-write buffers, for the distributed object store, at a location other than the plurality of solid state devices.

2. The distributed object store of claim 1 , further comprising:

means for maintaining one or more circular transaction logs, for the distributed object store, at a location other than the plurality of solid state devices.

3. The distributed object store of claim 1 , further comprising:

means for reducing a block size for the distributed object store for purposes of minimizing wear on each of the plurality of solid state devices.

4. The distributed object store of claim 1 , wherein the means for providing parallel flushing in a write cache comprises means for identifying, in parallel, dirty data blocks stored within the write cache, to be replaced.

5. The distributed object store of claim 1 , wherein the distributed object store is a MySQL database management system.

6. The distributed object store of claim 1 , wherein the distributed object store is a memcached caching system or a non-relational data store.

7. A method for durably storing data blocks maintained in a volatile cache on a solid state device, comprising:

instantiating a plurality of threads that are each configured to perform work according to one of a plurality of stages,

wherein the plurality of stages include:

a first stage in which a thread identifies, in the volatile cache of a server that issues write requests to an object store maintained on one or more solid state devices, a first set of data blocks to write to a double-write buffer cache in non-volatile dynamic random access memory (DRAM),

a second stage in which a thread writes a second set of data blocks from the volatile cache to the double-write buffer,

a third stage in which a thread writes data from the double-write buffer to the one or more solid state devices, and

wherein the plurality of threads include at least two threads that are both operating in different stages of the plurality of stages.

8. The method of claim 7 , wherein the plurality of threads includes at least three threads that are each operating in a different stage of the plurality of stages.

9. The method of claim 7 , wherein the plurality of threads include two or more threads that are operating in the same stage of the plurality of stages.

10. The method of claim 7 , wherein the non-volatile dynamic random access memory (DRAM) is maintained in a controller of a hard-disk drive (HDD).

11. A distributed object store, comprising:

one or more processors on one or more machines; and

a machine readable medium storing one or more sequences of instructions, which when executed by the one or more processors, cause:

maintaining the distributed object store on the plurality of solid state devices, wherein the distributed object store stores objects using a transaction model that ensures compliance with atomicity, concurrency, isolation, and durability (ACID) properties;

the distributed object store providing parallel flushing in a write cache maintained on each of the plurality of solid state devices; and

the distributed object store maintaining one or more double-write buffers, for the distributed object store, at a location other than the plurality of solid state devices.

12. The distributed object store of claim 11 , wherein execution of the one or more sequences of instructions by the one or more processors further cause:

the distributed object store maintaining one or more circular transaction logs, for the distributed object store, at a location other than the plurality of solid state devices.

13. The distributed object store of claim 11 , wherein execution of the one or more sequences of instructions by the one or more processors further cause:

the distributed object store supporting an interface which allows an administrator to reduce a block size for the distributed object store for purposes of minimizing wear on each of the plurality of solid state devices.

14. The distributed object store of claim 11 , wherein the distributed object store providing parallel flushing comprises identifying, in parallel, dirty data blocks stored within the write cache, to be replaced.

15. The distributed object store of claim 11 , wherein the distributed object store is a MySQL database management system.

16. The distributed object store of claim 11 , wherein the distributed object store is a memcached caching system or a non-relational data store.

17. A machine readable storage medium storing one or more sequences of instructions for durably storing data blocks maintained in a volatile cache on a solid state device, wherein execution of the one or more sequences of instruction cause:

instantiating a plurality of threads that are each configured to perform work according to one of a plurality of stages,

wherein the plurality of stages include:

a first stage in which a thread identifies, in the volatile cache of a server that issues write requests to an object store maintained on one or more solid state devices, a first set of data blocks to write to a double-write buffer cache in non-volatile dynamic random access memory (DRAM),

a second stage in which a thread writes a second set of data blocks from the volatile cache to the double-write buffer,

a third stage in which a thread writes data from the double-write buffer to the one or more solid state devices, and

wherein the plurality of threads include at least two threads that are both operating in different stages of the plurality of stages.

18. The machine readable storage medium of claim 17 , wherein the plurality of threads includes at least three threads that are each operating in a different stage of the plurality of stages.

19. The machine readable storage medium of claim 17 , wherein the plurality of threads include two or more threads that are operating in the same stage of the plurality of stages.

20. The machine readable storage medium of claim 17 , wherein the non-volatile dynamic random access memory (DRAM) is maintained in a controller of a hard-disk drive (HDD).

Assignments (7)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2016
From: SANDISK ENTERPRISE IP LLC
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038295/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2012
From: SCHOONER INFORMATION TECHNOLOGY, INC.
To: SANDISK ENTERPRISE IP, LLC
Reel/Frame 028710/0950 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2011
From: BUSCH, JOHN; DINKER, DARPAN; OUYE, DARRYL
To: SCHOONER INFORMATION TECHNOLOGY, INC.
Reel/Frame 025687/0341 →