IP Library Granted Patent US 8,819,089
Granted Patent B2
US 8,819,089 · App. 12/205,562 · Granted Aug 26, 2014

Memory efficient representation of relational data with constant time random access to the data itself

Inventors: Arvind Goyal (Sudbury, MA); Gennady Agranov (Framingham, MA)
Assignee: Antenna Vaultus Inc.
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,819,089
App. No.
12/205,562
Granted
Aug 26, 2014
Kind
B2
Abstract

An efficient method for storing relational data in a memory space uses B tree and B+ tree structures to store data for a database where non-identical values are stored in a string buffer and pointers to the string buffer are stored in a table buffer, and where identical data is stored only once, and each instance of that value in the database is referenced by a pointer to such identical data corresponding to the locations in the database where that identical value exists, thereby preserving physical memory and increasing the storage capacity of a fixed memory space.

Claims (22)

1. A method for organizing and storing related items of data in a memory space comprising the steps of:

(a) dividing a memory space into at least a string buffer and a table buffer, said table buffer containing at least one record where each of said at least one record comprises an equal number of equal size fields each of which being configured to contain pointers that reference related items of data stored in the string buffer;

(b) determining a resulting database structure capable of holding at least one field and at least two records where each of said at least two records contains a pointer that refer to data stored in the database structure;

(c) accepting input of discrete items of related data, said discrete items comprising field values within one or more records;

(d) storing a first field value in said string buffer at a first location within said string buffer;

(e) returning a first string pointer to an offset in said string buffer where said first field value is stored;

(f) storing said first string pointer in a first location within said table buffer where said first location and each of all other locations in said table buffer have a fixed size equal to the size of the fixed size pointer;

(g) repeating steps (a)-(f) for all field values comprising a first record;

(h) if additional data has been accepted, determining a next field value for a next record;

(i) searching said string buffer to determine whether said next field value exists within said string buffer;

(j) if said next field value exists within said string buffer, returning a next string pointer to said stored field value in said string buffer and storing said next string pointer in a fixed size next location within said table buffer;

(k) if said next field value does not exist within said string buffer, storing said next field value in said string buffer at a next location within said string buffer, returning a next string pointer to said next location in said string buffer, and storing said next string pointer in a next location within said table buffer;

(l) repeating steps (h)-(k) for all field values for said next record; and

(m) repeating step (1) for all records until all records have been stored.

2. The method of claim 1 , further comprising the steps of dividing said memory space to include at least one index buffer; storing in said buffer a plurality of table pointers; each said table pointers referencing the location in said table buffer of a first field in a record in said string buffer; said plurality of table pointers being sorted and stored consecutively in said index buffer in accordance with predetermined sorting criteria related to said records stored in said string buffer.

3. The method of claim 1 wherein each said buffer comprises one or more contiguous memory locations within said memory space.

4. The method of claim 3 wherein addresses referencing non-contiguous memory locations within said memory space are translated by an operating system to appear as contiguous memory locations.

5. The method of claim 2 further comprising compressing the data in said string buffer and compressing the data in said table buffer.

6. The method of claim 2 further comprising storing data in said string buffer within a searchable B tree data structure.

7. The method of claim 2 further comprising storing data in said string buffer within a searchable B+ tree data structure.

8. The method of claim 2 further comprising storing data in said table buffer within a searchable B tree data structure.

9. The method of claim 2 further comprising storing data in said table buffer within a searchable B+ tree data structure.

Assignments (4)
SECURITY INTEREST Recorded Nov 14, 2019
From: PEGASYSTEMS INC.
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 051016/0631 →
RELEASE OF SECURITY INTEREST Recorded Oct 25, 2013
From: COMERICA BANK
To: ANTENNA VAULTS, INC.
Reel/Frame 031477/0831 →
SECURITY AGREEMENT Recorded May 31, 2013
From: ANTENNA VAULTUS, INC.
To: COMERICA BANK
Reel/Frame 030522/0171 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 16, 2010
From: GOYAL, ARVIND; AGRANOV, GENNADY
To: VAULTUS MOBILE TECHNOLOGIES, INC.
Reel/Frame 024085/0904 →
Continuity (2)
Provisional Application 60970164 · Sep 5, 2007
Related Publication 20090063523A1 · Mar 5, 2009