IP Library Granted Patent US 11,614,970
Granted Patent B2
US 11,614,970 · App. 16/705,630 · Granted Mar 28, 2023

High-throughput parallel data transmission

Inventors: Ying Huang (Zhejiang Province, CN); Jun Xu (Hangzhou, CN); Ruidan Zhu (Hangzhou, CN)
Assignee: MicroStrategy Incorporated
G06F9/5027G06F16/148G06F16/182H04L67/06H04L67/10
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 11,614,970
App. No.
16/705,630
Filed
Dec 6, 2019
Granted
Mar 28, 2023
Kind
B2
Art Unit
2444
USPC
718/104
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer-storage media, for high-throughput parallel data transmission. In some implementations, a data connector module is configured to provide an application server with access to a data set of unstructured data. One or more computers receive a first request associated with a first application or service, and data identifying a second application or service different from the first application or service. A plurality of second requests are generated and distributed to processing nodes to generate results for the second requests. Result data derived from the results for the second requests to the second application or service.

Claims (52)

1. A method performed by one or more computers, the method comprising:

providing, by the one or more computers, a data connector module configured to provide, to an application server, access to a data set of unstructured data;

receiving, by the one or more computers and using the data connector module, a first request from the application server, wherein the first request is initiated by or provided by a first application or service, and wherein the first request specifies a second application or service to receive results generated in response to the first request, wherein the second application or service is different from the first application or service;

in response to receiving the first request using the data connector module:

generating, by the one or more computers, a plurality of second requests at a management node of the data connector module; and

distributing, by the one or more computers, the second requests from the management node to processing nodes of the data connector module such that the processing nodes generate results for the second requests; and

providing, by the one or more computers, the results for the second requests from the processing nodes to the second application or service specified in the first request, wherein the processing nodes separately provide their respective results in parallel to the second application or service specified in the first request.

2. The method of claim 1 , comprising:

providing, by the one or more computers, multiple instances of a distributed file system, each of the instances providing access to a same data set of unstructured data;

allocating, by the one or more computers, multiple processing nodes to perform a data processing task, wherein at least some of the multiple processing nodes are assigned to use different instances of the distributed file system;

identifying, by the one or more computers, portions of the data set involved in different operations of the data processing task; and

assigning, by the one or more computers, operations of the data processing task to be performed by different nodes of the multiple processing nodes based on (i) the assignment of the processing nodes to the respective instances of the distributed file system and (ii) identified portions of the data set used in previous operations performed by the respective processing nodes.

3. The method of claim 2 , wherein assigning the operations of the data processing task comprises assigning the operations among the multiple processing nodes to process operations that involve shared portions of the data set with processing nodes assigned to the same instance of the distributed file system.

4. The method of claim 2 , wherein assigning the operations comprises:

identifying groups of the operations that involve a same portion of the data set; and

assigning the groups of operations to be processed by (i) the same node or to (ii) multiple nodes that each use a same instance of the distributed file system.

5. The method of claim 2 , comprising generating tracking data indicating which instances of the distributed file system are used to provide portions of the data set used by the processing nodes as the processing nodes perform first operations of the data processing task;

wherein assigning the operations comprises, assigning each of one or more second operations involving a particular portion of the data set to be performed by a processing node, from among the multiple processing nodes, that is selected based on the tracking data indicating that the processing node is assigned to a same instance of the distributed file system that was previously used to provide the particular portion of the data set for completing the first operations.

6. The method of claim 2 , wherein the multiple instances of the distributed file system comprises at least three independent instances of the distributed file system.

7. The method of claim 2 , wherein the distributed file system is a Hadoop Distributed File System or a Bigtable.

8. The method of claim 2 , wherein the each of the processing nodes has a local cache;

wherein the method includes:

identifying portions of the data set used in the respective operations of the different operations of the data processing task; and

determining which of the identified portions of the data set are included in the respective local caches of the processing nodes; and

wherein assigning the operations comprises assigning, for each operation of at least some of the different operations of the data processing task, the operation to be performed by one of the processing nodes that has a local cache determined to currently store one of the identified portions of the data set used in the operation.

9. The method of claim 1 , wherein the first application or service is provided by the application server and the second application or service is provided by a second server that is different from the application server, and

wherein the first request is provided to the data connector module by the application server and the first request designates the second application or service provided by the second server as a destination to receive results of the first request.

10. The method of claim 1 ,

wherein the processing nodes are worker nodes configured to perform data retrieval and/or analysis operations indicated by the respective second requests.

11. The method of claim 1 , wherein providing the results providing, by the processing nodes, the results for the respective second requests in parallel to the second application or service, wherein the results are provided to the second application or service without aggregation of the results from the respective processing nodes before the results reach the second application or service.

12. The method of claim 1 , wherein the first request is a query, wherein the results for the second requests comprise results obtained by the respective processing nodes based on different partitions of a distributed file system.

13. The method of claim 1 , wherein the data connector module is configured to operate on the unstructured data set without first importing the data into a data warehouse and without converting the unstructured data set into a structured format.

14. The method of claim 1 , wherein providing the results comprises providing the results in multiple concurrent data streams of result data from the processing nodes to the second application or service.

15. A system comprising:

one or more computers; and

one or more computer-readable media storing instructions that, when executed by the one or more computers, cause the one or more computers to perform operations comprising:

providing, by the one or more computers, a data connector module configured to provide, to an application server, access to a data set of unstructured data;

receiving, by the one or more computers and using the data connector module, a first request from the application server, wherein the first request is initiated by or provided by a first application or service, and wherein the first request specifies a second application or service to receive results generated in response to the first request, wherein the second application or service is different from the first application or service;

in response to receiving the first request using the data connector module:

generating, by the one or more computers, a plurality of second requests at a management node of the data connector module; and

distributing, by the one or more computers, the second requests from the management node to processing nodes of the data connector module such that the processing nodes generate results for the second requests; and

providing, by the one or more computers, the results for the second requests from the processing nodes to the second application or service specified in the first request, wherein the processing nodes separately provide their respective results in parallel to the second application or service specified in the first request.

16. The system of claim 15 , wherein the first application or service is provided by the application server and the second application or service is provided by a second server that is different from the application server; and wherein the first request is provided to the data connector module by the application server and the first request designates the second application or service provided by the second server as a destination to receive results of the first request.

17. The system of claim 15 ,

wherein the processing nodes are worker nodes configured to perform data retrieval and/or analysis operations indicated by the respective second requests.

18. One or more non-transitory computer-readable media storing instructions that, when executed by the one or more computers, cause the one or more computers to perform operations comprising:

providing, by the one or more computers, a data connector module configured to provide, to an application server, access to a data set of unstructured data;

receiving, by the one or more computers and using the data connector module, a first request from the application server, wherein the first request is initiated by or provided by a first application or service, and wherein the first request specifies a second application or service to receive results generated in response to the first request, wherein the second application or service is different from the first application or service;

in response to receiving the first request using the data connector module:

generating, by the one or more computers, a plurality of second requests at a management node of the data connector module; and

distributing, by the one or more computers, the second requests from the management node to processing nodes of the data connector module such that the processing nodes generate results for the second requests; and

providing, by the one or more computers, the results for the second requests from the processing nodes to the second application or service specified in the first request, wherein the processing nodes separately provide their respective results in parallel to the second application or service specified in the first request.

Assignments (4)
CHANGE OF NAME Recorded Sep 19, 2025
From: MICROSTRATEGY INCORPORATED
To: STRATEGY INC
Reel/Frame 072974/0529 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT REEL/FRAME: 056647/0687, REEL/FRAME: 057435/0023, REEL/FRAME: 059256/0247, REEL/FRAME: 062794/0255 AND REEL/FRAME: 066663/0713 Recorded Sep 26, 2024
From: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS SUCCESSOR IN INTEREST TO U.S. BANK NATIONAL ASSOCIATION, IN ITS CAPACITY AS COLLATERAL AGENT FOR THE SECURED PARTIES
To: MICROSTRATEGY INCORPORATED; MICROSTRATEGY SERVICES CORPORATION
Reel/Frame 069065/0539 →
SECURITY INTEREST Recorded Jun 22, 2021
From: MICROSTRATEGY INCORPORATED
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 056647/0687 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2020
From: HUANG, YING; XU, JUN; ZHU, RUIDAN
To: MICROSTRATEGY INCORPORATED
Reel/Frame 051770/0320 →
Cited By (7)
US 12,307,129 US 12,346,599 US 12,455,900 US 12,517,682 US 12,608,158 US 12,615,298 US 12,670,120