IRMIS3 Status Gabriele Carcassi 15 Oct 2010. IRMIS3 Status  This talk is about: what is currently downloadable from the website what is ready for production.

Slides:



Advertisements
Similar presentations
18 Copyright © 2005, Oracle. All rights reserved. Distributing Modular Applications: Introduction to Web Services.
Advertisements

Pulan Yu School of Informatics Indiana University Bloomington Web service based Varuna.Net.
Tahir Nawaz Introduction to.NET Framework. .NET – What Is It? Software platform Language neutral In other words:.NET is not a language (Runtime and a.
Lecture plan Information retrieval (from week 11)
UFCE8V-20-3 Information Systems Development 3 (SHAPE HK)
IRMIS Components Overview Gabriele Carcassi 18 April 2011.
Unit 11 Using the Internet & Browsing the Web.  Define the Internet and the Web  Set up & troubleshoot an Internet connection  Categorize webs sites.
AccelUtils Gabriele Carcassi, Kunal Shroff – BNL Eric Berryman, Robert Gaul – MSU Ralph Lange – HZB.
NGT Information Technology Technical Discussion Bob DeHoff Info Tech, Inc.
Web Applications Development Using Coldbox Platform Eddie Johnston.
Single view of customer Support deposit and loan accounts Fully integrated General Ledger module that can be customised according to customer specification.
Cacti Workshop Tony Roman Agenda What is Cacti? The Origins of Cacti Large Installation Considerations Automation The Current.
Fundamentals, Design, and Implementation, 9/e Chapter 14 JDBC, Java Server Pages, and MySQL.
15 Chapter 15 Web Database Development Database Systems: Design, Implementation, and Management, Fifth Edition, Rob and Coronel.
Fast Track to ColdFusion 9. Getting Started with ColdFusion Understanding Dynamic Web Pages ColdFusion Benchmark Introducing the ColdFusion Language Introducing.
Lecture 2 Web application architecture. Themes Architecture : The large scale structure of a system, especially a computer system Design choice: The need.
Multiple Tiers in Action
CS CS 5150 Software Engineering Lecture 13 System Architecture and Design 1.
1 CS6320 – Why Servlets? L. Grewe 2 What is a Servlet? Servlets are Java programs that can be run dynamically from a Web Server Servlets are Java programs.
The Architecture of Transaction Processing Systems
Chapter 14 Database Connectivity and Web Technologies
Advanced Distributed Software Architectures and Technology group ADSaT 1 Application Architectures Ian Gorton, Paul Greenfield.
Mgt 240 Lecture Website Construction: Software and Language Alternatives March 29, 2005.
1 INTRO TO BUSINESS COMPONENTS FOR JAVA (BC4J) Matt Fierst Computer Resource Team OracleWorld Session
WHAT IS A WEB APP? Van Kelly Yeshiva University July 6, 2013.
Copyright © cs-tutorial.com. Introduction to Web Development In 1990 and 1991,Tim Berners-Lee created the World Wide Web at the European Laboratory for.
Databases and the Internet. Lecture Objectives Databases and the Internet Characteristics and Benefits of Internet Server-Side vs. Client-Side Special.
ASP.NET + Ajax Jesper Tørresø ITNET2 F08. Ajax Ajax (Asynchronous JavaScript and XML) A group of interrelated web development techniques used for creating.
HTML+JavaScript M2M Applications Viewbiquity Public hybrid cloud platform for automating and visualizing everything.
Fundamentals of Database Chapter 7 Database Technologies.
Web Services XML-RPC, SOAP, REST Advanced Web-based Systems | Misbhauddin.
1 Accelerated Web Development Course JavaScript and Client side programming Day 2 Rich Roth On The Net
HTML. Principle of Programming  Interface with PC 2 English Japanese Chinese Machine Code Compiler / Interpreter C++ Perl Assembler Machine Code.
Debby Quock November 13, 2012 IRMIS at CLS. IRMIS Currently at CLS PV Crawler –Perl modules that parse EPICS IOC st.cmd, db, and dbd files. Information.
IRMIS 2 Overview Andrew Johnson Computer Scientist, AES Controls.
IRMIS Status EPICS 2009 Vancouver D. A. Dohan. Outline IRMIS hardware model cable/cable run channel list Equipment Inventory System RDB Domain separation.
WEB BASED DATA TRANSFORMATION USING XML, JAVA Group members: Darius Balarashti & Matt Smith.
Introducing ASP.NET 2.0. Internet Technologies WWW Architecture Web Server Client Server Request Response Network HTTP TCP/IP PC/Mac/Unix + Browser (IE,
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 14 Database Connectivity and Web Technologies.
1 MSCS 237 Overview of web technologies (A specific type of distributed systems)
Concrete Architecture of Mozilla Firefox (version ) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007.
Stream Spider Distributed Music Streaming Service with Sliced Music Files from Different Originating Hosts Justin Steffy and Michael D. Elder.
Chapter 5 Introduction To Form Builder. Lesson A Objectives  Display Forms Builder forms in a Web browser  Use a data block form to view, insert, update,
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 14 Database Connectivity and Web Technologies.
Secure Search Engine Ivan Zhou Xinyi Dong. Project Overview  The Secure Search Engine project is a search engine that utilizes special modules to test.
1 LM 6 Database Applications Dr. Lei Li. Learning Objectives Explain three components of a client-server system Describe differences between a 2-tiered.
IRMIS3 Status Gabriele Carcassi Oct Web tools architecture IRMIS DB (MySQL) Data service Java applets AJAX components Scripts and CLI (perl,
Preservation Data Services Persistent Archive Research Group Reagan W. Moore October 1, 2003.
IRMIS3 Data Service and Application Layer Gabriele Carcassi Oct
Web Development. Agenda Web History Network Architecture Types of Server The languages of the web Protocols API 2.
The Holmes Platform and Applications
Introducing the Microsoft® .NET Framework
AccelUtils Gabriele Carcassi, Kunal Shroff – BNL
Integrating ArcSight with Enterprise Ticketing Systems
Integrating ArcSight with Enterprise Ticketing Systems
Chapter 15 Database Connectivity and Web Technologies
The Client/Server Database Environment
Haritha Dasari Josue Balandrano Coronel -
Multitier Architecture, MySQL & PHP
PHP / MySQL Introduction
WEB API.
Web Browser server client 3-Tier Architecture Apache web server PHP
Lecture 1: Multi-tier Architecture Overview
Introduction of Week 11 Return assignment 9-1 Collect assignment 10-1
UFCEUS-20-2 Web Programming
PyWBEM Python WBEM Client: Overview #2
WCF Data Services and Silverlight
Web Application Development Using PHP
SDMX IT Tools SDMX Registry
Presentation transcript:

IRMIS3 Status Gabriele Carcassi 15 Oct 2010

IRMIS3 Status  This talk is about: what is currently downloadable from the website what is ready for production what is actively supported

Project infrastructure Production server at BNL since January 2009 “alpha” - AuthZ and AuthN only designed Likely implemented by the end of the year Build and test server Automated tests IE or firefox on Windows/Linux/Mac supported SourceForge project (mailing list, bug tracking, wiki). Monthly release cycle.

IRMIS3 SERVICE ARCHITECTURE

IRMIS3 architecture IRMIS DB (MySQL) IRMIS DB (MySQL) Data service Java applets AJAX components AJAX components Scripts and CLI (perl, Python, …) Browser (Firefox, IE, …) XML protocol Web server (Glassfish) Data service enforces business rules (clients can be dumb) Data service allows db schema or business rule changes while in production Data service provides a good abstraction layer on which to integrate

Software stack XML protocol (REST style WS) Few database utilities: backup, consistency check, etc… Client Server Integration with external tools (i.e. physcs) 3 rd party Perl/Pyton scripts 3 rd party Java apps Jython scripts Web applications JavaScript bridge Applets and Widgets Java Client API Data Service layer Database layer

Getting data... XML returned REST style (data service) Id references De-normalized data

Writing data <transaction xmlns:xsi=' xmlns=' xsi:schemaLocation=' irmis.xsd'> XML describing a transaction sent through a POST allows remote/disconnected work no lock “FOR UPDATE” idempotent actions (error or same result) different independent “commands”

Implementation MySQL JPA JAXB SAX Business logic Business logic Servlet Read Write Stream out XML as soon as possible to reduce delay JAXB to convert transaction request to Java objects JPA vs JDBC: simpler queries to maintain 6% performance loss

Performance  Dell Precision M4300 laptop, Intel Core Duo T7500, 2.20 GHz - APS dataset Entire component data set streamed in about 5 seconds (31338 components, relationships) Most other queries under 100 ms (manufacturers 88ms, interfaces 95ms)  Roughly half of the time is spent in DB access and half in XML generation Streaming starts right after DB access  Only tuning done is on the database query (was “good enough”) Other areas: hardware/os tuning, xml generation improvements, profiling, caching, …

IRMIS3 CLIENT API

Client API  To access the service, XML and HTTP is all you need Available in all languages  Two libraries provided that allow to work with objects PHP API from MSU Java API from BNL  Only going to talk about the Java API

Java API: design principles  The Java API implement the XML protocol and provides objects that represent the data  All reads are cached: no need to keep caches in your code.  All reads are synchronized you can have reads on multiple threads on the same data and will not trigger multiple reads on the server (extremely useful for GUIs)

Java API design principles  The read access is object oriented Data is exposed through interfaces - Component, ComponentType, Manufacturer Some classes function as “finders” for the classes containing the data - Components.getById(123), FormFactors.getByName(“Rack”) You can follow references from one object to the other - component.getComponentType().getManufacturer()

Java API design principles  The write access is protocol oriented You create a transaction You call methods to add elements in the transaction - Manufacturers.createManufacturer(transaction, “ACME”) You save the transaction, which may fail The read access is refreshed only after the data is saved

Importing components from Excel (using Jython) from gov.bnl.irmis.api import * from java.net import URI from java.io import File from jxl import * workbook = Workbook.getWorkbook(File(“components.xls")) sheet = workbook.getSheet(0) nRows = sheet.getRows() nColumns = sheet.getColumns() irmisDB = IrmisDB.getInstance(); irmisDB.setURI(URI(" transaction = irmisDB.createTransaction(); for row in range(1, nRows): componentTypeName = sheet.getCell(0, row).getContents(); componentType = ComponentTypes.getByName(componentTypeName); serialNumber = sheet.getCell(1, row).getContents(); Components.createComponent(transaction, componentType, serialNumber) transaction.save(); print "Operation successful"

Importing from Excel (Jython) from gov.bnl.irmis.api import * from java.net import URI from java.io import File from jxl import * workbook = Workbook.getWorkbook(File(“components.xls")) sheet = workbook.getSheet(0) nRows = sheet.getRows() nColumns = sheet.getColumns() irmisDB = IrmisDB.getInstance(); irmisDB.setURI(URI(" transaction = irmisDB.createTransaction(); for row in range(1, nRows): componentTypeName = sheet.getCell(0, row).getContents(); componentType = ComponentTypes.getByName(componentTypeName); serialNumber = sheet.getCell(1, row).getContents(); Components.createComponent(transaction, componentType, serialNumber) transaction.save(); print "Operation successful" Load excel file

Importing from Excel (Jython) from gov.bnl.irmis.api import * from java.net import URI from java.io import File from jxl import * workbook = Workbook.getWorkbook(File(“components.xls")) sheet = workbook.getSheet(0) nRows = sheet.getRows() nColumns = sheet.getColumns() irmisDB = IrmisDB.getInstance(); irmisDB.setURI(URI(" transaction = irmisDB.createTransaction(); for row in range(1, nRows): componentTypeName = sheet.getCell(0, row).getContents(); componentType = ComponentTypes.getByName(componentTypeName); serialNumber = sheet.getCell(1, row).getContents(); Components.createComponent(transaction, componentType, serialNumber) transaction.save(); print "Operation successful" Connect to the service

Importing from Excel (Jython) from gov.bnl.irmis.api import * from java.net import URI from java.io import File from jxl import * workbook = Workbook.getWorkbook(File(“components.xls")) sheet = workbook.getSheet(0) nRows = sheet.getRows() nColumns = sheet.getColumns() irmisDB = IrmisDB.getInstance(); irmisDB.setURI(URI(" transaction = irmisDB.createTransaction(); for row in range(1, nRows): componentTypeName = sheet.getCell(0, row).getContents(); componentType = ComponentTypes.getByName(componentTypeName); serialNumber = sheet.getCell(1, row).getContents(); Components.createComponent(transaction, componentType, serialNumber) transaction.save(); print "Operation successful" Loop over the rows

Importing from Excel (Jython) from gov.bnl.irmis.api import * from java.net import URI from java.io import File from jxl import * workbook = Workbook.getWorkbook(File(“components.xls")) sheet = workbook.getSheet(0) nRows = sheet.getRows() nColumns = sheet.getColumns() irmisDB = IrmisDB.getInstance(); irmisDB.setURI(URI(" transaction = irmisDB.createTransaction(); for row in range(1, nRows): componentTypeName = sheet.getCell(0, row).getContents(); componentType = ComponentTypes.getByName(componentTypeName); serialNumber = sheet.getCell(1, row).getContents(); Components.createComponent(transaction, componentType, serialNumber) transaction.save(); print "Operation successful" Get data out Create components

Fluent API  Navigating through hierarchies can be tedious  On top of the “beans” API there is a fluent API (internal domain specific language) Search API Builders Change Set API

IRMIS3 USER INTERFACE

UI design  Web interface: uses applets and Web Start (both greatly improved with Java 6u10)  Uses Swing standard components plus open source (SwingX, Flamingo, JIDE, …)  UI elements can optionally be used in custom pages and integrated with javascript  UI available only for Components and Cabling

UI elements Component hierarchy tree widget (filtering, sorting, search, …) Component path widget

Component applications

Cabling applications

STATUS BY AREA

Components  Support for component and component types is production level Data model has been tested extensively through previous use at other sites Performance tests were done using APS datasets  Most of the work now is in UI development Most applications at their 3 rd iteration

Cabling  Support for cabling is still beta No considerable amount of data has been put into it No performance tests done (see lack of data)  UI at their second iteration  Need users!

Lattice  There is preliminary support for lattice Only through the API, no UI  A separate tree structure of “elements”, each of an “element type”. Each relationship has alignment information.  Lattice cannot be modified in place: copy on write creates a new version  Right now, provided as-is

PV  PV service and API is considered alpha. No UI yet. No crawler scripts provided yet.