Functional Programming Primitives for Distributed Key-Value Data

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Distributed computing systems face complexity in handling large data sets that exceed the memory footprint of a single device, making it difficult for programmers to manage computations across multiple processors or nodes, especially when dealing with distributed key-value pairs and global variables.

Innovation Solution

A distributed computing system that utilizes functional programming style to execute programs on sets of distributed key-value pairs and global variables, providing programming primitives to handle interconnections, communications, and aggregation, allowing for easier management of complex distributed computations by partitioning and storing data across a cluster of nodes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If distributed computing is used to handle large data sets that exceed single device memory, then the system can process larger data volumes, but the programming complexity increases significantly

Engineering Contradiction:
Improvedata volumeVSAvoidprogramming complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent introduces a distributed computing system with programming primitives that act as an intermediary layer between the programmer and the complex distributed execution environment. These primitives handle the complexity of data distribution, node coordination, and result aggregation automatically, allowing programmers to write simple functional code while the system manages the distributed complexity behind the scenes.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent replaces traditional imperative programming mechanics with functional programming primitives. Instead of manually managing distributed state and control flow across multiple nodes, the system uses immutable data structures and pure functions that automatically compose across the distributed system, eliminating the need for complex distributed synchronization and state management code.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Quantity of substance

If data is partitioned and stored across multiple computing nodes, then the system can handle larger data sets, but managing interconnections and communications between nodes becomes more complex

Engineering Contradiction:
Improvedata capacityVSAvoidsystem complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent segments the distributed data set into key-value pairs that are partitioned across multiple computing nodes. Each node stores and processes a subset of the data independently, allowing the system to scale horizontally. The segmentation is managed through primitives that automatically handle data distribution and retrieval without requiring programmers to manage the underlying partitioning complexity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent creates universal programming primitives that work consistently across all computing nodes regardless of how data is partitioned. These primitives provide a unified interface for operations like map, filter, and reduce that automatically adapt to the distributed architecture, eliminating the need for node-specific communication and coordination code.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Ease of operation

If functional programming primitives are provided to handle distributed key-value pairs and global variables, then programming becomes easier, but the system requires sophisticated aggregation mechanisms

Engineering Contradiction:
Improveprogramming easeVSAvoidaggregation complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent implements self-service aggregation where the distributed computing system automatically collects, combines, and returns results from all computing nodes without requiring explicit aggregation logic from the programmer. The programming primitives handle the coordination and aggregation of results from distributed executions automatically, allowing programmers to focus on defining the computation logic rather than managing result collection.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9338234B2Functional programming in distributed computing
Publication Date: 2016.05.10 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9338234B2 patent drawing
  • US9338234B2 patent drawing
  • US9338234B2 patent drawing

AI summary

Disclosed herein are systems and methods for executing programs written in functional style. A distributed computing system receives a program that expresses computation upon one or more sets of distributed key-value pairs (DKVs) and one or more global variables (GVs). The system distributes an assembly that includes at least a compiled binary of the program to the nodes of a computing cluster, with different portions of the DKVs being stored across the plurality of nodes of the computing cluster. The system causes execution of the assembly by each of the plurality of nodes of the computing cluster, the ones of the plurality of nodes executing the assembly using the different portions of the one or more DKVs stored thereon.