Datatype-generic data migrations
|
|
|
- Caroline Copeland
- 10 years ago
- Views:
Transcription
1 Datatype-generic data migrations IFIP WG 21 meeting #73, Lökeberg, Sweden Andres Löh August 31, 2015 The Haskell Consultants
2 Motivation Datatypes evolve
3 Motivation Datatypes evolve Example: data Person = Person { name :: String, address :: String }
4 Motivation Datatypes evolve Example: data Person = Person { name :: String}
5 Motivation Datatypes evolve Example: data Person = Person { lastname :: String, firstname :: String }
6 Motivation Datatypes evolve Example: data Person = Person { lastname :: String, firstname :: String, years :: Int }
7 Why is it a problem? Within the program itself, it usually is not But programs communicate, and produce external representations of data: binary encodings, JSON, database entries,
8 Different versions External representations change First version: { "name" : "Aura Löh", "address" : "Regensburg" }
9 Different versions External representations change First version: { "name" : "Aura Löh", "address" : "Regensburg" } Current version: { "lastname" : "Löh", "firstname" : "Aura", "years" : 2 }
10 Different versions External representations change First version: { "name" : "Aura Löh", "address" : "Regensburg" } Current version: { "lastname" : "Löh", "firstname" : "Aura", "years" : 2 } Program should be able to cope with both inputs
11 Available Haskell options safecopy Define all versions as separate Haskell datatypes Define migration functions between the versions Instantiate a class to get a versioned binary decoding
12 Available Haskell options safecopy Define all versions as separate Haskell datatypes Define migration functions between the versions Instantiate a class to get a versioned binary decoding api-tools Use a DSL to describe the changes between versions Use Template Haskell to derive versioned decoders
13 Example: api-tools changes version "04" changed record Person field added years :: Int version "03" migration record Person SplitName version "02" changed record Person field removed address // initial version version "01"
14 Use datatype-genericity
15 Seems to make sense Migrations apply to different datatypes Serialization and deserialization to various formats are classic examples of datatype-generic programming Different versions of a datatype are usually closely related
16 Representing types data Person = Person { name :: String, address :: String }
17 Representing types data Person = Person { name :: String, address :: String } type instance Code Person = [ [String, String]] Rep (Code Person) = SOP I (Code Person) Person
18 Representing types data Person = Person { name :: String, address :: String } type instance Code Person = [ [String, String]] Rep (Code Person) = SOP I (Code Person) Person type family Code (a :: *) :: [[*]] class Generic a where from :: a -> Rep (Code a) to :: Rep (Code a) -> a
19 What is Rep? data Person = Person { name :: String, address :: String } type instance Code Person = [ [String, String]] Value of type Person : Person "Aura Löh" "Regensburg" Value of type Rep (Code Person) (modulo syntactic clutter): C 0 ["Aura Löh", "Regensburg"]
20 Sums of products SOP I xss NS (NP I) xss data NS (f :: k -> *) (xs :: [k]) where Z :: NS f (x : xs) S :: NS f xs -> NS f (x : xs) data NP (f :: k -> *) (xs :: [k]) where Nil :: NP f [] (:*) :: f x -> NP f xs -> NP f (x : xs)
21 Generic functions class Encode a where encode :: a -> [Bit] decoder :: Decoder a
22 Generic functions class Encode a where encode :: a -> [Bit] decoder :: Decoder a Defined via induction on the representation: gencode :: (Generic a, All2 Encode (Code a)) => a -> [Bit] gencode = gdecoder :: (Generic a, All2 Encode (Code a)) => Decoder a gdecoder = Yields defaults for the Encode class methods
23 History of a datatype Person 1 Person 2 Person 3 Person 4
24 History of a datatype Person 1 Code Person 1 Person 2 Code Person 2 Person 3 Code Person 3 Person 4 Code Person 4
25 History of a datatype Person 1 Code Person 1 Migration (Code (Person 1 )) (Code (Person 2 )) Person 2 Code Person 2 Migration (Code (Person 2 )) (Code (Person 3 )) Person 3 Code Person 3 Migration (Code (Person 3 )) (Code (Person 4 )) Person 4 Code Person 4 data Migration :: [[*]] -> [[*]] -> * where Migration :: (Rep a -> Rep b) -> Migration a b
26 History of a datatype Code Person 1 Migration (Code (Person 1 )) (Code (Person 2 )) Code Person 2 Migration (Code (Person 2 )) (Code (Person 3 )) Code Person 3 Migration (Code (Person 3 )) (Code (Person 4 )) Person Code Person data Migration :: [[*]] -> [[*]] -> * where Migration :: (Rep a -> Rep b) -> Migration a b
27 History of a datatype Code Person 1 Migration (Code (Person 1 )) (Code (Person 2 )) Code Person 2 Migration (Code (Person 2 )) (Code (Person 3 )) Code Person 3 Migration (Code (Person 3 )) (Code (Person 4 )) Person Code Person data Migration :: [[*]] -> [[*]] -> * where Migration :: (Rep a -> Rep b) -> Migration a b data History :: Version -> [[*]] -> * where Initial :: History v c Revision :: () => Migration c c -> History v c -> History v c
28 Simple migration addconstructor :: Migration c ( [] : c) addconstructor = Migration shift
29 Simple migration addconstructor :: Migration c ( [] : c) addconstructor = Migration shift Good, but not quite satisfactory: By position rather than name No way to actually give a name to a revision
30 Include names in codes data Person = Person {name :: String, address :: String} Plain code: type family Code (a :: *) :: [[*]] type instance Code Person = [ [String, String]]
31 Include names in codes data Person = Person {name :: String, address :: String} Plain code: type family Code (a :: *) :: [[*]] type instance Code Person = [ [String, String]] Code with metadata: type family Code (a :: *) :: [(Symbol, [(Symbol, *)])] type instance Code Person = [ ("Person", [ ("name", String), ("address", String)])] Stripping metadata: type family Simplify (c :: [(Symbol, [(Symbol, *)])]) :: [[*]]
32 Migrations based on codes with metadata data Migration :: [(Symbol, [(Symbol, *)])] -> [(Symbol, [(Symbol, *)])] -> * where Migration :: (Rep (Simplify a) -> Rep (Simplify b)) -> Migration a b
33 Migrations based on codes with metadata data Migration :: [(Symbol, [(Symbol, *)])] -> [(Symbol, [(Symbol, *)])] -> * where Migration :: (Rep (Simplify a) -> Rep (Simplify b)) -> Migration a b addfield :: () => Proxy (v :: Version) -> Proxy (d :: Symbol) -- name of constructor -> Proxy (f :: Symbol) -- name of field -> a -- default value -> History v c -> History v (AddField d f c)
34 Example personhistory :: History "04" (Code Person) personhistory = addfield [pr "04" ] [pr "Person" ] [pr "years" ] (2 :: Int) $ replacefield [pr "03" ] [pr "Person" ] [pr "name" ] [pr ["lastname", "firstname"] ] splitname $ removefield [pr "02" ] [pr "Person" ] [pr "address" ] $ initialrevision [pr "01" ]
35 Attaching histories to datatypes class (Generic a, ) => HasHistory a where type CurrentRevision a :: Symbol history :: Proxy a -> History (CurrentRevision a) (Code a)
36 Encoding and decoding based on histories hencode :: (HasHistory a, ) => a -> [Bit] choose latest version from history encode version encode data generically
37 Encoding and decoding based on histories hencode :: (HasHistory a, ) => a -> [Bit] choose latest version from history encode version encode data generically hdecode :: (HasHistory a, ) => Decoder a decode version choose the corresponding version from history decode data generically for that version apply the remaining migration functions
38 An annoying detail For hdecode, all types contained in all codes of all revisions must be in the Encode class
39 An annoying detail For hdecode, all types contained in all codes of all revisions must be in the Encode class This means: put class constraints in History type, index History over all intermediate versions, abstract History over class constraints
40 Conclusions Current code is proof of concept Implementing the migration steps (eg addfield ) is really ugly and a lot of work But it works and is more safe than other approaches Extends to nested versioning Not tied to a single encoding Efficiency? Future: writing older versions
Cloud Haskell. Distributed Programming with. Andres Löh. 14 June 2013, Big Tech Day 6 Copyright 2013 Well-Typed LLP. .Well-Typed
Distributed Programming with Cloud Haskell Andres Löh 14 June 2013, Big Tech Day 6 Copyright 2013 Well-Typed LLP Well-Typed The Haskell Consultants Overview Introduction Haskell Cloud Haskell Communication
Integration of Hotel Property Management Systems (HPMS) with Global Internet Reservation Systems
Integration of Hotel Property Management Systems (HPMS) with Global Internet Reservation Systems If company want to be competitive on global market nowadays, it have to be persistent on Internet. If we
This module explains fundamental aspects of Microsoft Dynamics NAV Development Environment.
MICROSOFT DYNAMICS NAV COURSE OUTLINE 1) MICROSOFT DYNAMICS NAV Module 1: Microsoft Dynamics NAV Development Environment This module explains fundamental aspects of Microsoft Dynamics NAV Development Environment.
Towards More Security in Data Exchange
Towards More Security in Data Exchange Defining Unparsers with Context-Sensitive Encoders for Context-Free Grammars Lars Hermerschmidt, Stephan Kugelmann, Bernhard Rumpe Software http://www.se-rwth.de/
POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful
POLYTYPIC PROGRAMMING OR: Programming Language Theory is Helpful RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: [email protected] Homepage: http://www.cs.uu.nl/~ralf/
Distribution and Integration Technologies
Distribution and Integration Technologies RESTful Services REST style for web services REST Representational State Transfer, considers the web as a data resource Services accesses and modifies this data
Online signature API. Terms used in this document. The API in brief. Version 0.20, 2015-04-08
Online signature API Version 0.20, 2015-04-08 Terms used in this document Onnistuu.fi, the website https://www.onnistuu.fi/ Client, online page or other system using the API provided by Onnistuu.fi. End
CSc 372. Comparative Programming Languages. 21 : Haskell Accumulative Recursion. Department of Computer Science University of Arizona
1/18 CSc 372 Comparative Programming Languages 21 : Haskell Accumulative Recursion Department of Computer Science University of Arizona [email protected] Copyright c 2013 Christian Collberg 2/18 Stack
Arithmetic Coding: Introduction
Data Compression Arithmetic coding Arithmetic Coding: Introduction Allows using fractional parts of bits!! Used in PPM, JPEG/MPEG (as option), Bzip More time costly than Huffman, but integer implementation
1. Give the 16 bit signed (twos complement) representation of the following decimal numbers, and convert to hexadecimal:
Exercises 1 - number representations Questions 1. Give the 16 bit signed (twos complement) representation of the following decimal numbers, and convert to hexadecimal: (a) 3012 (b) - 435 2. For each of
A GP Service for Enterprise Printing. Kevin Shows, Anadarko Petroleum Kirk Kuykendall, Idea Integration 04/20/2011
Kevin Shows, Anadarko Petroleum Kirk Kuykendall, Idea Integration 04/20/2011 History Implemented ArcGIS Server / browser mapping in 2008 Web ADF December, 2008 WPF April, 2010 Internally branded imaps
AURA: A language with authorization and audit
AURA: A language with authorization and audit Steve Zdancewic University of Pennsylvania WG 2.8 2008 Security-oriented Languages Limin Jia, Karl Mazurak, Jeff Vaughan, Jianzhou Zhao Joey Schorr and Luke
SQL. Short introduction
SQL Short introduction 1 Overview SQL, which stands for Structured Query Language, is used to communicate with a database. Through SQL one can create, manipulate, query and delete tables and contents.
2013 Ruby on Rails Exploits. CS 558 Allan Wirth
2013 Ruby on Rails Exploits CS 558 Allan Wirth Background: Ruby on Rails Ruby: Dynamic general purpose scripting language similar to Python Ruby on Rails: Popular Web app framework using Ruby Designed
Poor Man's Type Classes
Poor Man's Type Classes Martin Odersky EPFL IFIP WG2.8 workin roup meetin Boston, July 2006. 1 Goals Type classes are nice. A cottae industry of Haskell prorammers has sprun up around them. Should we add
Oct: 50 8 = 6 (r = 2) 6 8 = 0 (r = 6) Writing the remainders in reverse order we get: (50) 10 = (62) 8
ECE Department Summer LECTURE #5: Number Systems EEL : Digital Logic and Computer Systems Based on lecture notes by Dr. Eric M. Schwartz Decimal Number System: -Our standard number system is base, also
Relational Database Basics Review
Relational Database Basics Review IT 4153 Advanced Database J.G. Zheng Spring 2012 Overview Database approach Database system Relational model Database development 2 File Processing Approaches Based on
Type Classes with Functional Dependencies
Appears in Proceedings of the 9th European Symposium on Programming, ESOP 2000, Berlin, Germany, March 2000, Springer-Verlag LNCS 1782. Type Classes with Functional Dependencies Mark P. Jones Department
Functional Programming in C++11
Functional Programming in C++11 science + computing ag IT-Dienstleistungen und Software für anspruchsvolle Rechnernetze Tübingen München Berlin Düsseldorf An Overview Programming in a functional style
2874CD1EssentialSQL.qxd 6/25/01 3:06 PM Page 1 Essential SQL Copyright 2001 SYBEX, Inc., Alameda, CA www.sybex.com
Essential SQL 2 Essential SQL This bonus chapter is provided with Mastering Delphi 6. It is a basic introduction to SQL to accompany Chapter 14, Client/Server Programming. RDBMS packages are generally
Digital Logic Design. Basics Combinational Circuits Sequential Circuits. Pu-Jen Cheng
Digital Logic Design Basics Combinational Circuits Sequential Circuits Pu-Jen Cheng Adapted from the slides prepared by S. Dandamudi for the book, Fundamentals of Computer Organization and Design. Introduction
Understanding Logic Design
Understanding Logic Design ppendix of your Textbook does not have the needed background information. This document supplements it. When you write add DD R0, R1, R2, you imagine something like this: R1
Programming Autodesk PLM 360 Using REST. Doug Redmond Software Engineer, Autodesk
Programming Autodesk PLM 360 Using REST Doug Redmond Software Engineer, Autodesk Introduction This class will show you how to write your own client applications for PLM 360. This is not a class on scripting.
The Needle Programming Language
The Needle Programming Language The Needle Programming Language 1 What is Needle? Needle is an object-oriented functional programming language with a multimethod-based OO system, and a static type system
Stephen Drape. Oxford University Computing Laboratory. with thanks to Jeff Sanders
Stephen Drape Oxford University Computing Laboratory with thanks to Jeff Sanders Obfuscation is a program transformation: Used to make a program "harder to understand" Try to make reverse engineering harder
IoT-Ticket.com. Your Ticket to the Internet of Things and beyond. IoT API
IoT-Ticket.com Your Ticket to the Internet of Things and beyond IoT API Contents 1 Introduction... 4 1.1 Overview... 4 1.2 Abbreviations and definitions... 4 1.3 Data Model... 4 1.4 General Information...
Web Application Firewalls: What the vendors do NOT want you to know SHAKACON III
Web Application Firewalls: What the vendors do NOT want you to know $ whois WendelGH PT Consultant at Trustwave's SpiderLabs. Over 7 years in the security industry. Vulnerability discovery Webmails, AP,
To Java SE 8, and Beyond (Plan B)
11-12-13 To Java SE 8, and Beyond (Plan B) Francisco Morero Peyrona EMEA Java Community Leader 8 9...2012 2020? Priorities for the Java Platforms Grow Developer Base Grow Adoption
Class Notes CS 3137. 1 Creating and Using a Huffman Code. Ref: Weiss, page 433
Class Notes CS 3137 1 Creating and Using a Huffman Code. Ref: Weiss, page 433 1. FIXED LENGTH CODES: Codes are used to transmit characters over data links. You are probably aware of the ASCII code, a fixed-length
Overview. Elements of Programming Languages. Advanced constructs. Motivating inner class example
Overview Elements of Programming Languages Lecture 12: Object-oriented functional programming James Cheney University of Edinburgh November 6, 2015 We ve now covered: basics of functional and imperative
Simple Invoicing Desktop Database with MS Access 2013. c 2015 by David W. Gerbing School of Business Administration Portland State University
Simple Invoicing Desktop Database with MS Access 2013 c 2015 by David W. Gerbing School of Business Administration Portland State University July 2, 2015 CONTENTS 1 Contents 1 Create a New Database 1 2
ATS Revit Family Creation Standards July 23 rd, 2012 Plumbing Fixtures: Faucets Version 1.0
This document outlines the design standard Allied Technical Services uses in the creation of Revit families. This edition will feature faucets, more specifically, bathroom and kitchen faucets. It is important
17. November 2015. Übung 1 mit Swift. Architektur verteilter Anwendungen. Thorsten Kober Head Solutions ios/os X, SemVox GmbH
17. November 2015 Übung 1 mit Swift Architektur verteilter Anwendungen Thorsten Kober Head Solutions ios/os X, SemVox GmbH Überblick 1 Einführung 2 Typen, Optionals und Pattern Matching 3 Speichermanagement
SAS Data Set Encryption Options
Technical Paper SAS Data Set Encryption Options SAS product interaction with encrypted data storage Table of Contents Introduction: What Is Encryption?... 1 Test Configuration... 1 Data... 1 Code... 2
Practical Generic Programming with OCaml
Practical Generic Programming with OCaml Jeremy Yallop LFCS, University of Edinburgh ML Workshop 2007 Instead of this... type α tree = Node of α Branch of (α tree) (α tree) val show_tree : (α string) (α
Number Representation
Number Representation CS10001: Programming & Data Structures Pallab Dasgupta Professor, Dept. of Computer Sc. & Engg., Indian Institute of Technology Kharagpur Topics to be Discussed How are numeric data
Qualtrics Single Sign-On Specification
Qualtrics Single Sign-On Specification Version: 2010-06-25 Contents Introduction... 2 Implementation Considerations... 2 Qualtrics has never been used by the organization... 2 Qualtrics has been used by
United States Naval Academy Electrical and Computer Engineering Department. EC262 Exam 1
United States Naval Academy Electrical and Computer Engineering Department EC262 Exam 29 September 2. Do a page check now. You should have pages (cover & questions). 2. Read all problems in their entirety.
earlier in the semester: The Full adder above adds two bits and the output is at the end. So if we do this eight times, we would have an 8-bit adder.
The circuit created is an 8-bit adder. The 8-bit adder adds two 8-bit binary inputs and the result is produced in the output. In order to create a Full 8-bit adder, I could use eight Full -bit adders and
InvGen: An Efficient Invariant Generator
InvGen: An Efficient Invariant Generator Ashutosh Gupta and Andrey Rybalchenko Max Planck Institute for Software Systems (MPI-SWS) Abstract. In this paper we present InvGen, an automatic linear arithmetic
8 Tutorial: Using ASN.1
8 Tutorial: Using ASN.1 Data Types This tutorial describes how to use ASN.1 types and values in the SDL suite. You will learn how to import and use ASN.1 modules in your SDL diagrams, how to generate code
Brainshark/Salesforce.com Integration Installation Procedures
Page1 Brainshark/Salesforce.com Integration Installation Procedures The Brainshark/Salesforce integration allows Salesforce users to send emails containing links to Brainshark presentations from a contact
Ecma/TC39/2013/NN. 4 th Draft ECMA-XXX. 1 st Edition / July 2013. The JSON Data Interchange Format. Reference number ECMA-123:2009
Ecma/TC39/2013/NN 4 th Draft ECMA-XXX 1 st Edition / July 2013 The JSON Data Interchange Format Reference number ECMA-123:2009 Ecma International 2009 COPYRIGHT PROTECTED DOCUMENT Ecma International 2013
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Caml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr
Caml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr Copyright c 2007-2010 Xavier Clerc [email protected] Released under the LGPL version 3 February 6, 2010 Abstract: This
Satellite Control Software (SCS) Mission Data Client Extensibility User Guide
Page : 1 of 16 Satellite Control Software (SCS) Mission Data Client Extensibility User Guide Prepared by: Florian George Stéphane Billeter Space Center EPFL Lausanne Switzerland 06 November 2013 Page :
RSA SecurID Software Token 1.0 for Android Administrator s Guide
RSA SecurID Software Token 1.0 for Android Administrator s Guide Contact Information See the RSA corporate web site for regional Customer Support telephone and fax numbers: www.rsa.com Trademarks RSA,
It has a parameter list Account(String n, double b) in the creation of an instance of this class.
Lecture 10 Private Variables Let us start with some code for a class: String name; double balance; // end Account // end class Account The class we are building here will be a template for an account at
Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON
Revista Informatica Economică, nr. 4 (44)/2007 45 Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON Iulian ILIE-NEMEDI, Bucharest, Romania, [email protected] Writing a custom web
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Physical Design. Meeting the needs of the users is the gold standard against which we measure our success in creating a database.
Physical Design Physical Database Design (Defined): Process of producing a description of the implementation of the database on secondary storage; it describes the base relations, file organizations, and
Creating SOAP and REST Services and Web Clients with Ensemble
Creating SOAP and REST Services and Web Clients with Ensemble Version 2015.1 11 February 2015 InterSystems Corporation 1 Memorial Drive Cambridge MA 02142 www.intersystems.com Creating SOAP and REST Services
The Habit Programming Language: The Revised Preliminary Report
The Habit Programming Language: The Revised Preliminary Report The High Assurance Systems Programming Project (Hasp) Department of Computer Science, Portland State University Portland, Oregon 97207, USA
C++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
Anatomy of Programming Languages. William R. Cook
Anatomy of Programming Languages William R. Cook Copyright (C) 2013 2 Chapter 1 Preliminaries Preface What? This document is a series of notes about programming languages, originally written for students
International Journal of Advanced Research in Computer Science and Software Engineering
Volume 3, Issue 7, July 23 ISSN: 2277 28X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com Greedy Algorithm:
Programming Fundamentals. Lesson 20 Sections
Programming Fundamentals Lesson 20 Sections Today, we will Study sections, in Haskell. Sections are another class of expressions that represent functions. A section is a binary operation where one of the
Adding GADTs to OCaml the direct approach
Adding GADTs to OCaml the direct approach Jacques Garrigue & Jacques Le Normand Nagoya University / LexiFi (Paris) https://sites.google.com/site/ocamlgadt/ Garrigue & Le Normand Adding GADTs to OCaml 1
Fun with Phantom Types
1 Fun with Phantom Types RALF HINZE Institut für Informatik III, Universität Bonn Römerstraße 164, 53117 Bonn, Germany Email: [email protected] Homepage: http://www.informatik.uni-bonn.de/~ralf
A Rational Software Whitepaper
The UML and Data Modeling A Rational Software Whitepaper Table of Contents Introduction...1 The UML Data Modeling Profile...1 Database...1 Schema...2 Table...2 Key...3 Index...4 Relationship...5 Column...6
A simple type system with two identity types
A simple type system with two identity types Vladimir Voevodsky Started February 23, 201 Work in progress. 1 Introduction We call this system and its further extensions HTS for homotopy type system. It
Section 1.4 Place Value Systems of Numeration in Other Bases
Section.4 Place Value Systems of Numeration in Other Bases Other Bases The Hindu-Arabic system that is used in most of the world today is a positional value system with a base of ten. The simplest reason
International Securities Identification Number (ISIN)
International Securities Identification Number (ISIN) An International Securities Identification Number (ISIN) uniquely identifies a security. An ISIN consists of three parts: Generally, a two letter country
Database Migration : An In Depth look!!
Database Migration : An In Depth look!! By Anil Mahadev [email protected] As most of you are aware of the fact that just like operating System migrations are taking place, databases are no different.
The Advantages and Disadvantages of Network Computing Nodes
Big Data & Scripting storage networks and distributed file systems 1, 2, in the remainder we use networks of computing nodes to enable computations on even larger datasets for a computation, each node
= 2 + 1 2 2 = 3 4, Now assume that P (k) is true for some fixed k 2. This means that
Instructions. Answer each of the questions on your own paper, and be sure to show your work so that partial credit can be adequately assessed. Credit will not be given for answers (even correct ones) without
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
S4 Classes in 15 pages, more or less
S4 Classes in 15 pages, more or less February 12, 2003 Overview The preferred mechanism for object oriented programming in R is described in Chambers (1998). The actual implementation is slightly different
Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5
Technical Note Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5 In the VMware Infrastructure (VI) Perl Toolkit 1.5, VMware
SQL SELECT Query: Intermediate
SQL SELECT Query: Intermediate IT 4153 Advanced Database J.G. Zheng Spring 2012 Overview SQL Select Expression Alias revisit Aggregate functions - complete Table join - complete Sub-query in where Limiting
Lecture 21: NoSQL III. Monday, April 20, 2015
Lecture 21: NoSQL III Monday, April 20, 2015 Announcements Issues/questions with Quiz 6 or HW4? This week: MongoDB Next class: Quiz 7 Make-up quiz: 04/29 at 6pm (or after class) Reminders: HW 4 and Project
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. AVRO Tutorial
i About the Tutorial Apache Avro is a language-neutral data serialization system, developed by Doug Cutting, the father of Hadoop. This is a brief tutorial that provides an overview of how to set up Avro
Verifying security protocols using theorem provers
1562 2007 79-86 79 Verifying security protocols using theorem provers Miki Tanaka National Institute of Information and Communications Technology Koganei, Tokyo 184-8795, Japan Email: [email protected]
Data Mining for Business Analytics
Data Mining for Business Analytics Lecture 2: Introduction to Predictive Modeling Stern School of Business New York University Spring 2014 MegaTelCo: Predicting Customer Churn You just landed a great analytical
Tips on Encoding the Unique Item Identifier (UII) Mark and Building the Concatenated UII
Tips on Encoding the Unique Item Identifier (UII) Mark and Building the Concatenated UII BASIC DEFINITIONS YOU NEED TO KNOW The unique item identifier (UII) is defined in two separate contexts: 1. DoD
Developing a generic deployable component for single sign-on. Stephen P Vickers The University of Edinburgh
Developing a generic deployable component for single sign-on Stephen P Vickers The University of Edinburgh Overview Background Requirements Single sign-on method login2 PowerLink Challenges Wish list Other
Lab 4: 26 th March 2012. Exercise 1: Evolutionary algorithms
Lab 4: 26 th March 2012 Exercise 1: Evolutionary algorithms 1. Found a problem where EAs would certainly perform very poorly compared to alternative approaches. Explain why. Suppose that we want to find
Numeral Systems. The number twenty-five can be represented in many ways: Decimal system (base 10): 25 Roman numerals:
Numeral Systems Which number is larger? 25 8 We need to distinguish between numbers and the symbols that represent them, called numerals. The number 25 is larger than 8, but the numeral 8 above is larger
Chapter 4: Computer Codes
Slide 1/30 Learning Objectives In this chapter you will learn about: Computer data Computer codes: representation of data in binary Most commonly used computer codes Collating sequence 36 Slide 2/30 Data
MATHEMATICAL INDUCTION. Mathematical Induction. This is a powerful method to prove properties of positive integers.
MATHEMATICAL INDUCTION MIGUEL A LERMA (Last updated: February 8, 003) Mathematical Induction This is a powerful method to prove properties of positive integers Principle of Mathematical Induction Let P
The JSON approach is mainly intended for intranet integration, while the xml version is for machine to machine integration.
1881 Partner Search API The Partner Search API is a RESTFull service that utilizes the HTTP/GET verb. Parameters are passed in the querystring of the HTTP request. The service can produce both xml and
Integrating VoltDB with Hadoop
The NewSQL database you ll never outgrow Integrating with Hadoop Hadoop is an open source framework for managing and manipulating massive volumes of data. is an database for handling high velocity data.
Information Theory and Coding Prof. S. N. Merchant Department of Electrical Engineering Indian Institute of Technology, Bombay
Information Theory and Coding Prof. S. N. Merchant Department of Electrical Engineering Indian Institute of Technology, Bombay Lecture - 17 Shannon-Fano-Elias Coding and Introduction to Arithmetic Coding
Appointment Router Salesforce.com Web- to- Lead Integration Guide. Date: January 19, 2011
Appointment Router Salesforce.com Web- to- Lead Integration Guide Date: January 19, 2011 Overview This document describes the method used to integrate Salesforce.com Web-to-Lead forms with TimeTrade s
Colligo Briefcase Enterprise. Administrator s Guide
Enterprise Administrator s Guide CONTENTS Introduction... 2 Target Audience... 2 Overview... 2 Key Features... 2 Platforms Supported... 2 SharePoint Security & Privileges... 2 Deploying Colligo Briefcase...
Proseminar on Semantic Theory Fall 2013 Ling 720. Problem Set on the Formal Preliminaries : Answers and Notes
1. Notes on the Answers Problem Set on the Formal Preliminaries : Answers and Notes In the pages that follow, I have copied some illustrative answers from the problem sets submitted to me. In this section,
Mathematical Induction
Mathematical Induction In logic, we often want to prove that every member of an infinite set has some feature. E.g., we would like to show: N 1 : is a number 1 : has the feature Φ ( x)(n 1 x! 1 x) How
Xtext Documentation. September 26, 2014
Xtext Documentation September 26, 2014 Contents I. Getting Started 9 1. 5 Minutes Tutorial 10 1.1. Creating A New Xtext Project........................ 10 1.2. Generating The Language Infrastructure...................
