IP Library Granted Patent US 10,055,808
Granted Patent B1
US 10,055,808 · App. 15/878,327 · Granted Aug 21, 2018

Distributed and parallelized visualization framework

Inventors: Amit Vij (San Francisco, CA); Nima Negahban (Woodbine, MD); Eli Glaser (Silver Spring, MD); Byungil Jeong (San Ramon, CA)
Assignee: Kinetica DB, Inc.
G06T1/20G06F7/08G06F7/14G06F17/30327G06F17/30339G06F17/30572G06T1/60G06T2210/12G06T2210/36H04L67/12
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 10,055,808
App. No.
15/878,327
Granted
Aug 21, 2018
Kind
B1
Abstract

A technique for rendering database data in visualized form using a distributed computer system including a plurality of networked worker nodes each including a graphics processing unit (GPU) is disclosed. The technique includes receiving, at a head node, a user request to render data, forwarding the request to the worker nodes, processing, in parallel, by the worker nodes, chunks of respective shards of data to be rendered. The technique also includes merging, in parallel, by each of the worker nodes, initial images formed by the processing within respective shards, to form a plurality of integrated images, merging, in parallel, respective integrated images to form worker node images, and transmitting respective worker node images to the sink node. The technique also includes merging the worker node images to form a final image, converting the final image to an output image, and providing the output image to the user.

Claims (81)

1. A method of rendering database data in visualized form using a distributed computer system comprising a plurality of networked worker nodes each comprising a graphics processing unit (GPU), a sink node, and a head node, the method comprising:

receiving, at the head node, a user initiated request to render data in visualized form, the request comprising an identification of at least one database table comprising a plurality of records comprising data to be rendered and a rendering type;

validating the request;

forwarding, by the head node, the request to each of the plurality of worker nodes, wherein each of the plurality of worker nodes comprises at least one respective shard of the data to be rendered;

processing, in parallel, by at least one GPU of each of the plurality of worker nodes, and based on the request, chunks of respective shards of data to be rendered, wherein the processing comprises:

allocating memory in each of the plurality of worker nodes; and

rendering the data to be rendered in allocated memory of each of the plurality of worker nodes to form initial images;

merging, in parallel, by each of the plurality of worker nodes and for each of a plurality of shards, initial images formed by the processing within respective shards, to form a plurality of integrated images;

merging, in parallel, by each of the plurality of worker nodes, respective integrated images to form a plurality of worker node images;

transmitting, by each of the plurality of worker nodes, respective worker node images to the sink node;

merging, by the sink node, the worker node images to form a final image;

converting the final image to an output image; and

providing the output image to the user.

2. The method of claim 1 , wherein the rendering type comprises a classbreak rendering type;

wherein the processing further comprises matching at least a portion of the data to be rendered to classbreak information;

wherein the rendering comprises rendering based on the matching.

3. The method of claim 1 ,

wherein the rendering type comprises a heat map rendering type;

wherein the processing further comprises:

projecting the data to be rendered into a geographic projection space;

applying a bounding box specified by the request to the data to be rendered; and

maintaining a count of records per image location; and

wherein the rendering comprises rendering based on the count of records per image location.

4. The method of claim 1 ,

wherein the rendering type comprises a contour rendering type; and

wherein the processing further comprises:

projecting the data to be rendered into a geographic projection space; and

applying a bounding box specified by the request to the data to be rendered;

the method further comprising rendering contours on the final image.

5. The method of claim 1 ,

wherein the rendering type comprises a scatter plot rendering type; and

wherein the method further comprises:

aggregating the plurality of records into a plurality of groups according to values of a selected coordinate; and

sorting records within each of the plurality of groups.

6. The method of claim 1 , wherein the rendering type comprises an internet protocol (IP) rendering type;

the method further comprising storing representations of communications between the same IP addresses in the same shard;

wherein the processing further comprises applying a bounding box specified by the request to the data to be rendered.

7. The method of claim 1 , wherein the rendering type comprises a track rendering type;

the method further comprising storing representations of portions of the same track datum in the same shard;

wherein the processing further comprises applying a bounding box specified by the request to the data to be rendered.

8. The method of claim 1 , wherein the rendering type comprises a feature rendering type, wherein the feature rendering type comprises at least one of point feature rendering type, line feature rendering type, polygon feature rendering type, label feature rendering type, or arrow rendering type;

wherein the processing further comprises:

projecting the data to be rendered into a geographic projection space; and

applying a bounding box specified by the request to the data to be rendered; and

wherein the rendering comprises rendering a selected feature type.

9. The method of claim 8 , wherein the feature rendering type comprises a label rendering type; and wherein the rendering comprises rendering both geometric objects and text.

10. The method of claim 1 , further comprising:

pre-generating level-of-detail representations of geo-spatial shape data for the data to be rendered; and

storing the level-of-detail representations in an electronically-stored quad tree.

11. A distributed computer system for rendering database data in visualized form, the distributed computer system comprising:

a head node comprising an electronic server computer, the head node communicatively coupled to a computer network and configured to receive and validate a user initiated request to render data in visualized form, the request comprising an identification of at least one database table comprising a plurality of records comprising data to be rendered and a rendering type;

a plurality of networked worker nodes each comprising a graphics processing unit (GPU), communicatively coupled to the computer network, and configured to receive the request from the head node, wherein each of the plurality of worker nodes comprises at least one respective shard of the data to be rendered, and wherein each of the worker nodes is further configured to process, in parallel, by at least one GPU of each of the plurality of worker nodes, and based on the request, chunks of respective shards of data to be rendered, wherein the processing comprises allocating memory in each of the plurality of worker nodes and rendering the data to be rendered in allocated memory of each of the plurality of worker nodes to form initial images, wherein the plurality of networked worker nodes are further configured to merge, in parallel, for each of a plurality of shards, initial images formed by the processing within respective shards, to form a plurality of integrated images, and to merge, in parallel, respective integrated images to form a plurality of worker node images; and

a sink node communicatively coupled to the plurality of networked worker nodes and configured to receive worker node images from the plurality of networked worker nodes, merge the worker node images to form a final image, convert the final image to an output image, and provide the output image to the user.

12. The system of claim 11 , wherein the rendering type comprises a classbreak rendering type;

wherein each of the worker nodes is further configured to match at least a portion of the data to be rendered to classbreak information;

wherein the rendering comprises rendering based on a result of matching.

13. The system of claim 11 ,

wherein the rendering type comprises a heat map rendering type;

wherein the processing further comprises:

projecting the data to be rendered into a geographic projection space;

applying a bounding box specified by the request to the data to be rendered; and

maintaining a count of records per image location; and

wherein the rendering comprises rendering based on the count of records per image location.

14. The system of claim 11 ,

wherein the rendering type comprises a contour rendering type;

wherein the processing further comprises projecting the data to be rendered into a geographic projection space, and applying a bounding box specified by the request to the data to be rendered; and

wherein the sink node is further configured to render contours on the final image.

15. The system of claim 11 ,

wherein the rendering type comprises a scatter plot rendering type; and

wherein the head node is further configured to aggregate the plurality of records into a plurality of groups according to values of a selected coordinate and sort records within each of the plurality of groups.

16. The system of claim 11 , wherein the rendering type comprises an internet protocol (IP) rendering type;

wherein the plurality of networked worker nodes are further configured to store representations of communications between the same IP addresses in the same shard; and

wherein the processing further comprises applying a bounding box specified by the request to the data to be rendered.

17. The system of claim 11 , wherein the rendering type comprises a track rendering type;

wherein the plurality of networked worker nodes are further configured to store representations of portions of the same track datum in the same shard;

wherein the processing further comprises applying a bounding box specified by the request to the data to be rendered.

18. The system of claim 11 , wherein the rendering type comprises a feature rendering type, wherein the feature rendering type comprises at least one of point feature rendering type, line feature rendering type, polygon feature rendering type, label feature rendering type, or arrow rendering type;

wherein the processing further comprises projecting the data to be rendered into a geographic projection space and applying a bounding box specified by the request to the data to be rendered; and

wherein the rendering comprises rendering a selected feature type.

19. The system of claim 18 , wherein the feature rendering type comprises a label rendering type; and wherein the rendering comprises rendering both geometric objects and text.

20. The system of claim 11 , further configured to pre-generate level-of-detail representations of geo-spatial shape data for the data to be rendered and store the level-of-detail representations in an electronically-stored quad tree.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Dec 3, 2025
From: FIRST-CITIZENS BANK & TRUST COMPANY (SUCCESSOR BY PURCHASE TO THE FDIC AS SUCCESSOR TO SVB)
To: KINETICA DB, INC.
Reel/Frame 073105/0613 →
SECURITY INTEREST Recorded Jun 27, 2022
From: KINETICA DB, INC.
To: SILICON VALLEY BANK
Reel/Frame 060326/0869 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2018
From: VIJ, AMIT; NEGAHBAN, NIMA; GLASER, ELI; JEONG, BYUNGIL
To: KINETICA DB, INC.
Reel/Frame 046346/0456 →
Continuity (1)
Provisional Application 62449513 · Jan 23, 2017