SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Data Integration with Server Side Mashups
              Juergen Brendel
        Principal Software Engineer

           OSDC 2007, Brisbane
Agenda

    The SnapLogic project
•
•   Client-side mashups
•   Problems and solutions
•   Data integration with SnapLogic




               Data Integration with Server Side Mashups   Slide 2
                         OSDC 2007, Brisbane
The SnapLogic project

• Founded 2005, data integration background
• Vision:
  –   Reusable data integration resources
  –   REST
  –   Web-based GUI
  –   Programmatic interface
  –   Open Source
• Python... Why not?
• www.snaplogic.com

                 Data Integration with Server Side Mashups   Slide 3
                           OSDC 2007, Brisbane
What's a mashup?

• A 'Web 2.0 kind of thing'
• Combine, aggregate, visualise
  – Multiple sources
  – Multiple dimensions
• Typically on the client side
  – Browser
  – Ajax




               Data Integration with Server Side Mashups   Slide 4
                         OSDC 2007, Brisbane
Self-made mashups

• Hand coded
• Mashup editors
  – GUI mashup-logic editor
  – Wiki-style
  – Hosted




               Data Integration with Server Side Mashups   Slide 5
                         OSDC 2007, Brisbane
Benefits for the enterprise?


                                                                         nal
              Enable knowledge
                                                                      io
                                                                uat ns !
                                                            Sit
                 workers !!!
                                                                     atio
                                                                   c
                                                              ppli
                                                            a
       Avoi
             d th
    IT b
         ottle e
              neck
                   !!



                 Yeah, right...
                Data Integration with Server Side Mashups                      Slide 6
                          OSDC 2007, Brisbane
Problems with client-side mashups

    Skill
•
•   Internal data often not web-friendly
•   Maintenance
•   Security
    Performance
•




                Data Integration with Server Side Mashups   Slide 7
                          OSDC 2007, Brisbane
Solution: Server-side mashups

• Flexible access
• Security
• Performance




             Data Integration with Server Side Mashups   Slide 8
                       OSDC 2007, Brisbane
SnapLogic data integration philosophy

     Clearly defined, REST resources
 •
 •   Data reuse and integration
 •   Pipelines
 •   Framework for resource specific scripting
     Open source and community
 •




                Data Integration with Server Side Mashups   Slide 9
                          OSDC 2007, Brisbane
Example: Resources

                HTTP://server1.example.com/customer_list
 Databases


                              SnapLogic Server
    Files
                                                                        Client HTTP
                                                  HTTP
                                                                        Request and
                    Component
 Applications
                                                                        Response
 Atom / RSS


                     Resource
    JSON             Definition

                                          • Resource Name
                                          • HTTP://server1.example.com/customer_list
                                          • SQL Query or filename
                                          • Credentials
                                          • Parameters




                  Data Integration with Server Side Mashups                    Slide 10
                            OSDC 2007, Brisbane
Example: Pipelines

                HTTP://server1.example.com/processed_customer_list
 Databases

                                     SnapLogic Server
    Files

                                                                                  Client HTTP
                                                                           HTTP
                                                                                  Request and
                    Component            Component         Component
 Applications
                                                                                  Response
 Atom / RSS


                     Resource             Resource          Resource
    JSON             Definition           Definition        Definition




                                  Read             Geocode               Sort




                      Data Integration with Server Side Mashups                      Slide 11
                                OSDC 2007, Brisbane
A simple pipeline: Filtering leads




             Data Integration with Server Side Mashups   Slide 12
                       OSDC 2007, Brisbane
Linking fields in a pipeline




             Data Integration with Server Side Mashups   Slide 13
                       OSDC 2007, Brisbane
Reusing a pipeline as a resource




            Data Integration with Server Side Mashups   Slide 14
                      OSDC 2007, Brisbane
Reusing a pipeline as a resource




            Data Integration with Server Side Mashups   Slide 15
                      OSDC 2007, Brisbane
Reusing a pipeline as a resource




            Data Integration with Server Side Mashups   Slide 16
                      OSDC 2007, Brisbane
Adding new components

    For access logic
•
•   For data transformations
•   Independent of data format
•   Currently written in Python




               Data Integration with Server Side Mashups   Slide 17
                         OSDC 2007, Brisbane
A simple processing component

 1: class IncreaseSalary(DataComponent):
 2:
 3:    def init(self):
 4:       '''Called when the component is started.'''
 5:       self.increase = float(self.moduleProperties['percent_increase'])
 6:
 7:    def processRecord(self, record):
 8:       '''Called for every record.'''
 9:       record.fields['salary'] *= (1 + self.increase/100)
10:       self.writeRecord(record)




                       Data Integration with Server Side Mashups   Slide 18
                                 OSDC 2007, Brisbane
An Apache log file reader
 1: class LogReader(DataComponent):
 2:
 3:     def startReading(self):
 4:        '''Called when component does not have input stream.'''
 5:        logfile = open(self._filename, 'rbU')
 6:        format = self.moduleProperties['log_format']
 7:
 8:        if format == 'COMMON':
 9:           p = apachelog.parser(apachelog.formats['common'])
10:        elif ...
11:
12:        # Read all lines in the logfile
13:        for line in logile:
14:           out_rec = Record(self.getSingleOutputView())
15:           raw_rec = p.parse(line)
16:           out_rec.fields['remote_host']      = raw_rec['%h']
17:           out_rec.fields['client_id']        = raw_rec['%l']
18:           out_rec.fields['user']             = raw_rec['%u']
19:           out_rec.fields['server_status']    = int(raw_rec['%>s'])
20:           out_rec.fields['bytes']            = int(raw_rec['%b'])
21:           ...
22:
23:           self.writeRecord(out_rec)


                       Data Integration with Server Side Mashups   Slide 19
                                 OSDC 2007, Brisbane
Programmatic access

• GUI is nice, but still limiting
• SnapScript: An API library
• Python, PHP, more to come




               Data Integration with Server Side Mashups   Slide 20
                         OSDC 2007, Brisbane
Creating a resource
 1:   # Create a new resource
 2:   staff_res_def = Resource(component='SnapLogic.Components.CsvRead')
 3:   staff_res_def.props.URI         = '/SnapLogic/Resources/Staff'
 4:   staff_res_def.props.description = 'Read the from the employee file'
 5:   staff_res_def.props.title       = 'Staff'
 6:   staff_res_def.props.delimiter   = '$?{DELIMITER}'
 7:   staff_res_def.props.filename    = '$?{INPUTFILE}'
 8:   staff_res_def.props.parameters = (
 9:      ('INPUTFILE', Param.Required, ''),
10:      ('DELIMITER', Param.Optional, ',')
11:   )
12:
13:   # Define the output view of the resource
14:   staff_res_def.props.outputview.output1 = (
15:      ('Last_Name', 'string', 'Employee last name'),
16:      ('First_Name', 'string', 'Employee first Name'),
17:      ('Salary',     'number', 'Annual income')
18:   )




                         Data Integration with Server Side Mashups   Slide 21
                                   OSDC 2007, Brisbane
Creating a pipeline
 1:   # Create a new pipeline
 2:   p = Pipeline()
 3:   p.props.URI    = '/SnapLogic/Pipelines/empl_salary_inc'
 4:   p.props.title = 'Employee_Salary_Increase'
 5:
 6:   # Select the resources in the pipeline
 7:   p.resources.Staff     = staff_res_def.instance()
 8:   p.resources.PayRaise = increase_salary_res_def.instance()
 9:
10:   # Link the resources in the pipeline
11:   link = (
12:      ('Last_Name', 'last'),
13:      ('First_Name', 'first'),
14:      ('Salary',     'salary')
15:   )
16:   p.linkViews('Staff', 'output1', 'Salary_Increaser', 'input1', link)




                         Data Integration with Server Side Mashups   Slide 22
                                   OSDC 2007, Brisbane
Pipeline parameters
 1:   # Define the user-visible parameters of the pipeline
 2:   p.props.parameters = (
 3:       ('INCREASE', Param.Required, ''),
 4:   )
 5:
 6:   # Map values to the parameters of the pipeline's resources
 7:   p.props.parammap = (
 8:      (Param.Parameter, 'INCREASE', 'PayRaise', 'PERC_INCREASE'),
 9:      (Param.Constant, 'file://foo/staff.csv', 'Staff', 'INPUTFILE')
10:   )
11:
12:   # Confirm correctness and publish as a new resource
13:   p.check()
14:   p.saveToServer(connection)




                         Data Integration with Server Side Mashups   Slide 23
                                   OSDC 2007, Brisbane
The end



   Any questions?

jbrendel@snaplogic.org




    Data Integration with Server Side Mashups   Slide 24
              OSDC 2007, Brisbane

Más contenido relacionado

Similar a Data Integration Server Side Mashups SnapLogic Project

Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Logico
 
RESTful apps and services with ASP.NET MVC
RESTful apps and services with ASP.NET MVCRESTful apps and services with ASP.NET MVC
RESTful apps and services with ASP.NET MVCbnoyle
 
Esri Dev Summit 2009 Rest and Mvc Final
Esri Dev Summit 2009 Rest and Mvc FinalEsri Dev Summit 2009 Rest and Mvc Final
Esri Dev Summit 2009 Rest and Mvc Finalguestcd4688
 
NIG系統報表開發指南
NIG系統報表開發指南NIG系統報表開發指南
NIG系統報表開發指南Guo Albert
 
Rest API and Client OM for Developer
Rest API and Client OM for DeveloperRest API and Client OM for Developer
Rest API and Client OM for DeveloperInnoTech
 
Innovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open InterfacesInnovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open InterfacesSteve Speicher
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking TourJoshua Long
 
Share point 2010 installation and mainteinance, best practices
Share point 2010   installation and mainteinance, best practices Share point 2010   installation and mainteinance, best practices
Share point 2010 installation and mainteinance, best practices Toni Frankola
 
Low Hanging Fruits In J EE Performance
Low Hanging Fruits In J EE PerformanceLow Hanging Fruits In J EE Performance
Low Hanging Fruits In J EE PerformanceAlois Reitbauer
 
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...Vincenzo Ferme
 
SpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSUFYAN SATTAR
 
SharePoint Performance Optimization In 10 Steps for the IT Professional
SharePoint Performance Optimization In 10 Steps for the IT ProfessionalSharePoint Performance Optimization In 10 Steps for the IT Professional
SharePoint Performance Optimization In 10 Steps for the IT ProfessionalJoel Oleson
 
MongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring DataMongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring DataChris Richardson
 
Semantic DESCription as a Service
Semantic DESCription as a ServiceSemantic DESCription as a Service
Semantic DESCription as a Serviceuji_geotec
 
GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012Arun Gupta
 
Ambari Meetup: APIs and SPIs of Ambari
Ambari Meetup: APIs and SPIs of AmbariAmbari Meetup: APIs and SPIs of Ambari
Ambari Meetup: APIs and SPIs of AmbariHortonworks
 

Similar a Data Integration Server Side Mashups SnapLogic Project (20)

Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
 
RESTful apps and services with ASP.NET MVC
RESTful apps and services with ASP.NET MVCRESTful apps and services with ASP.NET MVC
RESTful apps and services with ASP.NET MVC
 
Esri Dev Summit 2009 Rest and Mvc Final
Esri Dev Summit 2009 Rest and Mvc FinalEsri Dev Summit 2009 Rest and Mvc Final
Esri Dev Summit 2009 Rest and Mvc Final
 
NIG系統報表開發指南
NIG系統報表開發指南NIG系統報表開發指南
NIG系統報表開發指南
 
Rest API and Client OM for Developer
Rest API and Client OM for DeveloperRest API and Client OM for Developer
Rest API and Client OM for Developer
 
Innovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open InterfacesInnovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open Interfaces
 
Hoffer mdm11e pp_ch08
Hoffer mdm11e pp_ch08Hoffer mdm11e pp_ch08
Hoffer mdm11e pp_ch08
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
 
Share point 2010 installation and mainteinance, best practices
Share point 2010   installation and mainteinance, best practices Share point 2010   installation and mainteinance, best practices
Share point 2010 installation and mainteinance, best practices
 
Mres presentation
Mres presentationMres presentation
Mres presentation
 
Low Hanging Fruits In J EE Performance
Low Hanging Fruits In J EE PerformanceLow Hanging Fruits In J EE Performance
Low Hanging Fruits In J EE Performance
 
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
 
SpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptx
 
SharePoint Performance Optimization In 10 Steps for the IT Professional
SharePoint Performance Optimization In 10 Steps for the IT ProfessionalSharePoint Performance Optimization In 10 Steps for the IT Professional
SharePoint Performance Optimization In 10 Steps for the IT Professional
 
RoR guide_p1
RoR guide_p1RoR guide_p1
RoR guide_p1
 
MongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring DataMongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring Data
 
Semantic DESCription as a Service
Semantic DESCription as a ServiceSemantic DESCription as a Service
Semantic DESCription as a Service
 
Jsp Comparison
 Jsp Comparison Jsp Comparison
Jsp Comparison
 
GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012GlassFish REST Administration Backend at JavaOne India 2012
GlassFish REST Administration Backend at JavaOne India 2012
 
Ambari Meetup: APIs and SPIs of Ambari
Ambari Meetup: APIs and SPIs of AmbariAmbari Meetup: APIs and SPIs of Ambari
Ambari Meetup: APIs and SPIs of Ambari
 

Último

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 

Último (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 

Data Integration Server Side Mashups SnapLogic Project

  • 1. Data Integration with Server Side Mashups Juergen Brendel Principal Software Engineer OSDC 2007, Brisbane
  • 2. Agenda The SnapLogic project • • Client-side mashups • Problems and solutions • Data integration with SnapLogic Data Integration with Server Side Mashups Slide 2 OSDC 2007, Brisbane
  • 3. The SnapLogic project • Founded 2005, data integration background • Vision: – Reusable data integration resources – REST – Web-based GUI – Programmatic interface – Open Source • Python... Why not? • www.snaplogic.com Data Integration with Server Side Mashups Slide 3 OSDC 2007, Brisbane
  • 4. What's a mashup? • A 'Web 2.0 kind of thing' • Combine, aggregate, visualise – Multiple sources – Multiple dimensions • Typically on the client side – Browser – Ajax Data Integration with Server Side Mashups Slide 4 OSDC 2007, Brisbane
  • 5. Self-made mashups • Hand coded • Mashup editors – GUI mashup-logic editor – Wiki-style – Hosted Data Integration with Server Side Mashups Slide 5 OSDC 2007, Brisbane
  • 6. Benefits for the enterprise? nal Enable knowledge io uat ns ! Sit workers !!! atio c ppli a Avoi d th IT b ottle e neck !! Yeah, right... Data Integration with Server Side Mashups Slide 6 OSDC 2007, Brisbane
  • 7. Problems with client-side mashups Skill • • Internal data often not web-friendly • Maintenance • Security Performance • Data Integration with Server Side Mashups Slide 7 OSDC 2007, Brisbane
  • 8. Solution: Server-side mashups • Flexible access • Security • Performance Data Integration with Server Side Mashups Slide 8 OSDC 2007, Brisbane
  • 9. SnapLogic data integration philosophy Clearly defined, REST resources • • Data reuse and integration • Pipelines • Framework for resource specific scripting Open source and community • Data Integration with Server Side Mashups Slide 9 OSDC 2007, Brisbane
  • 10. Example: Resources HTTP://server1.example.com/customer_list Databases SnapLogic Server Files Client HTTP HTTP Request and Component Applications Response Atom / RSS Resource JSON Definition • Resource Name • HTTP://server1.example.com/customer_list • SQL Query or filename • Credentials • Parameters Data Integration with Server Side Mashups Slide 10 OSDC 2007, Brisbane
  • 11. Example: Pipelines HTTP://server1.example.com/processed_customer_list Databases SnapLogic Server Files Client HTTP HTTP Request and Component Component Component Applications Response Atom / RSS Resource Resource Resource JSON Definition Definition Definition Read Geocode Sort Data Integration with Server Side Mashups Slide 11 OSDC 2007, Brisbane
  • 12. A simple pipeline: Filtering leads Data Integration with Server Side Mashups Slide 12 OSDC 2007, Brisbane
  • 13. Linking fields in a pipeline Data Integration with Server Side Mashups Slide 13 OSDC 2007, Brisbane
  • 14. Reusing a pipeline as a resource Data Integration with Server Side Mashups Slide 14 OSDC 2007, Brisbane
  • 15. Reusing a pipeline as a resource Data Integration with Server Side Mashups Slide 15 OSDC 2007, Brisbane
  • 16. Reusing a pipeline as a resource Data Integration with Server Side Mashups Slide 16 OSDC 2007, Brisbane
  • 17. Adding new components For access logic • • For data transformations • Independent of data format • Currently written in Python Data Integration with Server Side Mashups Slide 17 OSDC 2007, Brisbane
  • 18. A simple processing component 1: class IncreaseSalary(DataComponent): 2: 3: def init(self): 4: '''Called when the component is started.''' 5: self.increase = float(self.moduleProperties['percent_increase']) 6: 7: def processRecord(self, record): 8: '''Called for every record.''' 9: record.fields['salary'] *= (1 + self.increase/100) 10: self.writeRecord(record) Data Integration with Server Side Mashups Slide 18 OSDC 2007, Brisbane
  • 19. An Apache log file reader 1: class LogReader(DataComponent): 2: 3: def startReading(self): 4: '''Called when component does not have input stream.''' 5: logfile = open(self._filename, 'rbU') 6: format = self.moduleProperties['log_format'] 7: 8: if format == 'COMMON': 9: p = apachelog.parser(apachelog.formats['common']) 10: elif ... 11: 12: # Read all lines in the logfile 13: for line in logile: 14: out_rec = Record(self.getSingleOutputView()) 15: raw_rec = p.parse(line) 16: out_rec.fields['remote_host'] = raw_rec['%h'] 17: out_rec.fields['client_id'] = raw_rec['%l'] 18: out_rec.fields['user'] = raw_rec['%u'] 19: out_rec.fields['server_status'] = int(raw_rec['%>s']) 20: out_rec.fields['bytes'] = int(raw_rec['%b']) 21: ... 22: 23: self.writeRecord(out_rec) Data Integration with Server Side Mashups Slide 19 OSDC 2007, Brisbane
  • 20. Programmatic access • GUI is nice, but still limiting • SnapScript: An API library • Python, PHP, more to come Data Integration with Server Side Mashups Slide 20 OSDC 2007, Brisbane
  • 21. Creating a resource 1: # Create a new resource 2: staff_res_def = Resource(component='SnapLogic.Components.CsvRead') 3: staff_res_def.props.URI = '/SnapLogic/Resources/Staff' 4: staff_res_def.props.description = 'Read the from the employee file' 5: staff_res_def.props.title = 'Staff' 6: staff_res_def.props.delimiter = '$?{DELIMITER}' 7: staff_res_def.props.filename = '$?{INPUTFILE}' 8: staff_res_def.props.parameters = ( 9: ('INPUTFILE', Param.Required, ''), 10: ('DELIMITER', Param.Optional, ',') 11: ) 12: 13: # Define the output view of the resource 14: staff_res_def.props.outputview.output1 = ( 15: ('Last_Name', 'string', 'Employee last name'), 16: ('First_Name', 'string', 'Employee first Name'), 17: ('Salary', 'number', 'Annual income') 18: ) Data Integration with Server Side Mashups Slide 21 OSDC 2007, Brisbane
  • 22. Creating a pipeline 1: # Create a new pipeline 2: p = Pipeline() 3: p.props.URI = '/SnapLogic/Pipelines/empl_salary_inc' 4: p.props.title = 'Employee_Salary_Increase' 5: 6: # Select the resources in the pipeline 7: p.resources.Staff = staff_res_def.instance() 8: p.resources.PayRaise = increase_salary_res_def.instance() 9: 10: # Link the resources in the pipeline 11: link = ( 12: ('Last_Name', 'last'), 13: ('First_Name', 'first'), 14: ('Salary', 'salary') 15: ) 16: p.linkViews('Staff', 'output1', 'Salary_Increaser', 'input1', link) Data Integration with Server Side Mashups Slide 22 OSDC 2007, Brisbane
  • 23. Pipeline parameters 1: # Define the user-visible parameters of the pipeline 2: p.props.parameters = ( 3: ('INCREASE', Param.Required, ''), 4: ) 5: 6: # Map values to the parameters of the pipeline's resources 7: p.props.parammap = ( 8: (Param.Parameter, 'INCREASE', 'PayRaise', 'PERC_INCREASE'), 9: (Param.Constant, 'file://foo/staff.csv', 'Staff', 'INPUTFILE') 10: ) 11: 12: # Confirm correctness and publish as a new resource 13: p.check() 14: p.saveToServer(connection) Data Integration with Server Side Mashups Slide 23 OSDC 2007, Brisbane
  • 24. The end Any questions? jbrendel@snaplogic.org Data Integration with Server Side Mashups Slide 24 OSDC 2007, Brisbane