8

I am looking for some details about a Patent Application #20120222005 submitted by Terracotta Inc. around Off-Heap (Direct Memory) data stores. Here are some of its claims:

7. A method of managing memory of a computer system including at least one processor, a non-transitory computer readable storage medium tangibly storing data, and a software application executable by the at least one processor and programmed to make use of the data, the method comprising:

  • dynamically allocating and directly managing an off-heap direct memory data storage area, using a memory manager, such that the off-heap direct memory data storage area is perceivable by the software application as being a part of local application tier memory and manageable, after initial allocation, independent of any memory managers of the computer system and any memory managers of an operating system running on the computer system, wherein the off-heap direct memory data storage area is scalable up to a size of the computer system's memory, upon direction from the memory manager, to accommodate terabytes-worth of data so that that data stored in the off-heap direct memory data storage area is transparently providable to the software application from the off-heap memory within microseconds and without having to repeatedly access that data from the non-transitory computer readable storage medium.

8. The method of claim 7, wherein the method operates in connection with a Java-based environment, and further comprises:

  • (a) attempting to allocate Java byte buffers in chunks of a preconfigured maximum size in response to a request for off-heap direct memory data storage at a predetermined maximum size;
  • (b) repeating said attempts to allocate byte buffers until the off-heap direct memory data storage area is created at the predetermined size, or until an attempt fails, whichever comes first;
  • (c) when an attempt to allocate byte buffers fails, reducing the preconfigured maximum size and repeating (a)-(b);
  • (d) receiving a request for a region of the off-heap direct memory data storage area, the region having an associated size;
  • (e) finding, via a page source, an unused slice of the off-heap direct memory data storage area;
  • (f) returning a page indicative of the unused slice, the page being a wrapped byte buffer that includes a reference to the slice where data is to be stored and a reference to an allocator object that created the slice;
  • (g) continuing to return pages until the off-heap direct memory data storage area is exhausted;
  • (h) managing the returned pages from the off-heap direct memory data storage area as a single coherent logical address space storing data keys and values, with a single page in the off-heap direct memory data storage area storing a hash table with metadata information linking data keys to values; and
  • (i) expanding and contracting the hash table in response to further entries being added thereto and removed therefrom, respectively, by rehashing into a new page.

In the Big Data movement, the off-heap memory management solutions for Java platforms are going to become an increasing interest. I would like to find out more about the impact of such a patent in a zone that seems to have an expanding, but not competitive enough market yet.

More precisely, I would like to know if anyone can shed some light on the following questions:

  1. To what extent is this patent consistent with the USTPO's requirements of "non-abstract ideas" and if it's possible for this concept to become a patent? The idea of managing off-heap data stores seems to me way too generic and I believe anyone could admit that the purpose of the JVM's off-heap capabilities are to be used as data stores.
  2. Assuming this patent will be issued (is still in an application form), what is the impact on commercial products built on similar technologies and on the customers purchasing these products?
  3. What would be the impact/relevance of such a patent be in the open source community? Considering that the idea is based largely on public/free components available in the Java platform, anyone can implement similar capabilities with very little obvious relation to the patent and with their own design.
2
  • The question about patentability is relevant on this site, as would a question about prior art (did similar techniques exist in the wild before 2012-01-30?). The part about impact on the industry might reach a more appropriate audience of specialists on Software Engineering. Sep 22, 2012 at 23:54
  • Claims often get canceled and amended along the way and, in any case, are interpreted in light of the specification. This a very long but very readable spec. I am usually all about the claims but in this case I recommend reading or skimming the specification to try to understand what they think they invented. It might be new and valuable in a way that is not easy to clean from claim wording.
    – George White
    Mar 21, 2013 at 2:08

7 Answers 7

6

C++ has long supported overriding allocation and deallocation by overriding the 'new' and 'delete' operators -- since 1997 at least (ANSI/ISO C++ 1997/8). To quote from the linked article:

overriding new and delete is a very powerful feature: it gives you tighter control over the language's memory management policy and enables you to extend its functionality in various ways.

See also link to an 1996 C++ ANSI draft document, specifically to the section 5.3.4 (and bullets therein) describing 'new' statement semantics.

Personally, between the years 2008 and 2010 I've been involved with a project that had to manage large amounts of domain objects encoded in specialized data structures on the heap, and kept running into 32-bit limitations.

Though we couldn't implement it at the time due to unrelated business constraints, it was easy for us to come up on paper with a scheme similar to that described in claim #7: since the encoded domain objects were accessible via domain interfaces, it was possible to store the objects off-heap and still access them transparently via interfaces with slight modifications. At the time I used to equate that concept with overriding 'malloc()' in C -- a common practice.

Claim #8 describes one way of doing dynamic memory allocation. It's only claim to fame here is in conjunction with claim #7, and by the use of NIO buffers.

Granted, Java makes it exceedingly difficult to override memory allocation mechanisms for objects. Terracotta's product (BigMemory) was innovative in circumventing those difficulties. However, the underlying concepts here have prior art outside Java.

5

Claim 7 seems like a shockingly straightforward description of a pool allocator.

Claim 8: So you allocate Java NIO buffers with a pool allocator. SURELY this is obvious, given that the purpose of NIO buffers is to wrap chunks of memory that are suitable for DMA transfer from network adapters.

2

I will try to answer the third question, actually there is an example related to a patent for MapReduce owned by Google and the patent license offered to open source Apache Hadoop project. Here is the link -

http://www.theregister.co.uk/2010/04/27/google_licenses_mapreduce_patent_to_hadoop/

This, I see as a very good sign for good innovation from collaborative synergy.

1
  • Thank you, yes, that is sort of what I was thinking. However, even if preferable, there is no guarantee whatsoever that any company will actually do this with their software patent. (Not to mention that I still can't find the logic in patenting map-reduce as a computational technique) Sep 21, 2012 at 9:38
2

As far as I can tell, claim 7 describes precisely what every virtual memory system in the world does. They then qualify it by saying it must be "independent of any memory managers of the computer system," which leads me to interpret this claim as basically saying, "A virtual memory system that runs independently of the operating system's virtual memory system." But that also is completely standard. To give a trivial example, I can boot Linux inside VMware on my Macintosh. Linux, running inside the VM, has its own virtual memory manager independent of the one run by the host operating system (Mac OS X).

It also is completely standard for virtual machines to have their own memory managers built into them, and has been for decades. An example that springs to mind is the Z-machine developed by Infocom back in 1979 to run their adventure games. See this description, particularly the section on storage management that describes how virtual memory management is built into the VM.

2

This is ridiculous. I've done this since 2001 in commercial products (before NIO is used large byte arrays, as actually the GC is hurt by the number of objects, not the size so much)

3
  • 2
    Can you point to libraries, documentation, blog articles, … anything that would describe this technique? Dec 14, 2012 at 21:08
  • 3
    The difficulty in invalidating patents is that every element of the claim must be present in a prior implementation or description for it to be invalid. (Alternatively, one could try to invalidate the patent for obviousness, but it's a bit more complicated and difficult). So even if this general concept has been done since 2001, if it hasn't been done in precisely the way the claim describes, it might be valid.
    – m3lvn
    Dec 15, 2012 at 15:42
  • The flip side of that is to infringe a patent one needs to do All of the things in a claim. So a patent granted on a very specific way of doing something old will only keep people in the future from doing it that specific way. Whatever was old is still old. So in the case of claim 8 above if you didn't have "as a single coherent logical address space storing data keys and values, with a single page in the off-heap direct memory data storage area storing a hash table with metadata information linking data keys to values;" you would have steered clear of it
    – George White
    Mar 21, 2013 at 3:40
2

This answer addresses the first question about patenting abstract ideas. Between the Supreme Court, the various judges on Federal Circuit and the appeals board at the USPTO this area is a vague and somewhat abstract mess. Generally speaking it comes down to exactly how it is claimed. Claim wording is dissected and argued over minutely. (But to illustrate the indefiniteness of the law, there is also a doctrine of form over substance. And another principle that says it ok to ignore claim limitations that are "mere after-solution actions")

Skipping over mountains of complexities and angels dancing on pins, if a computer is required as part of the claimed system or if a computer is required to perform the steps of the method then it can be seen as not an abstract idea. If it could be performed completely in your head it is an abstract idea. At one time there was a bright line "machine-or-transformation" test. At another time there was a "tangible and useful result" test. Not that these were bright lines but they were better than the Supreme Court's essentially "I know it when I see it" test.

So yes, this can have claims that can be patentable subject matter if written correctly.

2

This was being done, in Java, across networked machines - Solr 3.5 (which existed prior to their claims) configured to use MMapFSDirectory and shards...those two features are specifically there to increase performance on very large indexes. And what is Solr really but a general purpose data store/base? What are Terracotta products in general? Their claim would not meet novelty or non-obviousness tests for those awake.


I came across this question whilst doing research on open source BigData/BigMemory efforts. My statements are made from personal experience as a former legal researcher and having many a conversation with a USPTO lawyer and drinking buddy (we'll just call him Joe). Not to get too political, but collectively we need to realize that the current patent system is seriously flawed. We, the creative, are asking lawyers to examine, understand, and rule on the novelty, eligibility, non-obviousness, and usefulness of an idea or collection of ideas. Tell me, how do we know he/she has the strength of abstract thought to deal with the abstract principles in disciplines which are foreign to those who aren't deliberately SMEs? How many lines of code has that examiner written? How many hours has he/she spent crawling through the compiler/JVM/API source code or a thermodynamic equation to intimately understand how it all works?

In my experience, patents on chemical processes, rubber baby bottle nipple design, etc. are wrought with enough problems, because just as Joe would tell you, they simply don't have enough lawyers who are also SMEs. If you need a refresher on what they do focus on as a matter of procedure, see http://www.uspto.gov/web/offices/pac/mpep/index.html See if you can find what's missing from the procedure. If you say that there is no guaranteed subject matter oversight by experts on the government's part, you would be right.

But software presents it's own problems, for one, very little is actually new in software - there simply are lots of minor variations on a few themes. We rely on a non-technical person to intercede so that a whole segment of an industry isn't stifled from some unscrupulous applicant getting a patent on the obvious variants of Knuth's sort algorithms or a slickly re-worded spin on a rediscovered century-old recipe for anhydrous ammonia. I maintain that the danger of software patents is that the better financed organizations will effect a "Cloward-Piven" strategy to overwhelm the system. Through this shotgun approach, poorly adjudicated claims receive patents and provide fertile legal ground for frivolous law suits - look at Apple vs. Samsung. We all know what a UI is, but it seems the patent is now received on the UX (seriously, this is like patenting what font you use in a document - meaning things are viewed stylistically rather than as a matter of process). Maybe the inventor of the first digital tuner for radios should sue the first person who created the carousel UI component on infringement grounds? Can you see how insidious and ridiculous this gets? The patent/copyright protections were not envisioned for minutia, rather, they were designed to protect big and/or progressive ideas for a fixed length of time. Most importantly, they were designed to promote competition in intellectual problem solving pursuits. And just like individual liberties, once good mechanisms will be corrupted, subjugated, and stolen if not jealously guarded.

Terracotta's claims in this particular matter is just another shameful business practice akin to domain name parking - they've done nothing novel or "non-obvious", we all know this. They, like scores of others, are betting on getting away with it through the naivety of an overburdened "system". This won't change until there is some real awakening and fierce activism.

btw - not slamming Terracotta's products - I applaud them for taking the Lego(tm) set of Java components and providing useful tools to solve people's business problems...

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .