IP Library › Granted Patent US 8,863,082
Granted Patent B2
US 8,863,082 · App. 13/226,679 · Granted Oct 14, 2014

Transformational context-aware data source management

Inventors: Anson An-Chun Tsao (Redmond, WA); Yang Cao (Shanghai, CN); Pusheng Zhang (Redmond, WA)
Assignee: Microsoft Corporation
G06F9/44G06F8/71G06F9/44505
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,863,082
App. No.
13/226,679
Granted
Oct 14, 2014
Kind
B2
Abstract

Porting between local, cluster, and cloud execution is aided by using the same source code for multiple data sources. A data source identifier recited in source code maps to data sources at different execution targets. Executable codes tailored to successive targets are produced using a resolution API without changing the developer's source code. An editable data source mapping is per-project, maintained in a file or project property, and placed in a distributable software package with executable code. Burdens on developers to determine execution targets in their source code and explicitly handle different execution locations in the source code are reduced. Source code can be freed of absolute path data source identifiers or code for detecting execution location. Source-to-source translation injects calls to create a folder, file, or cloud container. Data source resolution can be based on a relative path rooted at the data source identifier.

Claims (33)

1. A process for cooperatively managing a source code and multiple alternative computational data sources, the process comprising the steps of:

obtaining a data source mapping in which a particular data source identifier is mapped to a plurality of data sources at respective execution targets;

receiving a developer source code which recites the data source identifier as a data source;

identifying a first execution target;

automatically producing from the developer source code a first executable code which upon execution in the first execution target will operate with the first execution target's mapped data source as the data source identified by the data source identifier;

identifying a second execution target having a different data source than the first execution target; and

automatically producing from the same source code a second executable code which upon execution in the second execution target will operate with the second execution target's mapped data source as the identified data source instead of the first execution target's data source.

2. The process of claim 1 , wherein the step of obtaining a data source mapping comprises at least one of the following: reading a textual configuration file, reading a nontextual project property.

3. The process of claim 1 , wherein the receiving step receives developer source code which is free of absolute path data source identifiers.

4. The process of claim 1 , wherein the execution target identifying steps identify at least two of the following: a local execution target, a cluster execution target, a cloud execution target.

5. The process of claim 1 , wherein the step of automatically producing from the same developer source code a second executable code comprises performing a source-to-source translation which injects at least one of the following: a folder creation call, a cloud container creation call, a file creation call.

6. The process of claim 1 , further comprising placing the data source mapping in a distributable software package.

7. A computer-readable storage medium configured with data and with instructions that when executed by at least one processor causes the processor(s) to perform a process for use by a developer, the process comprising the steps of:

obtaining a data source mapping in which a particular data source identifier is mapped to a plurality of data sources at respective execution targets; and

automatically generating from the data source mapping and a source code at least two different data source resolutions for respective different execution targets, without requiring any change to the source code by the developer.

8. The configured medium of claim 7 , wherein one of the data sources mapped to the data source identifier contains less than ten gigabytes of data and another of the data sources mapped to the data source identifier contains at least one hundred gigabytes of data.

9. The configured medium of claim 7 , wherein the generating step generates at least one data source resolution containing a Universal Resource Identifier.

10. The configured medium of claim 7 , wherein the generating step generates at least one data source resolution based on a relative path rooted at the data source identifier.

11. The configured medium of claim 7 , wherein the generating step encompasses more than mere substitution of physical storage location identifier strings.

12. The configured medium of claim 7 , wherein the process further comprises accepting a modification of the data source mapping from the developer.

13. The configured medium of claim 7 , wherein the process further comprises accepting a specification of the execution targets from the developer, and at least one of the execution targets includes a plurality of computing devices, and a mapped data source for that execution target contains at least one terabyte of data.

14. A computer system comprising:

a logical processor;

a memory in operable communication with the logical processor;

a data source mapping residing in the memory and having a particular data source identifier which is mapped to a plurality of different data sources at respective different execution targets;

a developer source code residing in the memory and having the data source identifier recited as a data source within the developer source code; and

an executable code producer residing in the memory and having instructions which upon execution automatically produce at different times from the same developer source code a plurality of different executable codes, each executable code making reference to a different one of the data sources.

15. The system of claim 14 , wherein the developer source code is free of code for detecting execution location.

16. The system of claim 14 , wherein the developer source code is free of absolute path data source identifiers.

17. The system of claim 14 , further comprising an executable code produced by the executable code producer, the executable code containing at least one of the following not present in the developer source code: a folder creation call, a cloud container creation call, a file creation call.

18. The system of claim 14 , wherein the executable code producer comprises a resolution API, the resolution API including instructions which upon execution by the processor will resolve a relative path and an execution target into a data source resolution containing a physical path.

19. The system of claim 14 , wherein the executable code producer comprises a source-to-source translator.

20. The system of claim 14 , wherein the data source mapping resides in at least one of the following: a textual configuration file, a nontextual project property, a project-specific structure, a user-specific structure.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2011
From: TSAO, ANSON AN-CHUN; CAO, YANG; ZHANG, PUSHENG
To: MICROSOFT CORPORATION
Reel/Frame 026953/0715 →
Continuity (1)
Related Publication 20130061208A1 · Mar 7, 2013