An Improved Approach to Generating Configuration Files from a Database Jon Finke Rensselaer...

Post on 28-Dec-2015

218 views 0 download

Transcript of An Improved Approach to Generating Configuration Files from a Database Jon Finke Rensselaer...

An Improved Approach to Generating Configuration Files from

a DatabaseJon Finke

Rensselaer Polytechnic Institute

Conclusions

• Cuts development time– Standard development environment– Host interface written once– Code sharing with web routines– All work done centrally– PL/SQL well integrated to Database

• Platform independence

The Old Way

• Custom program for each file type.– Common file system– Small number of platforms– Standard development environment– Lots of cut and paste C coding– Direct access to tables and views

Old Model

Relational Database

SQL*NET

File Format Logic

Version Control

SQL*NET

File Format Logic

Version Control

The Problems

• Loss of common file system– Harder to distribute custom programs

• Multiple development environments

• Program logic unavailable to web applications.

• Minor file format changes require too much work.

New Model

SQL*NET

Version Control

SQL*NET

Version Control

File Format Logic

Relational Database

Switcher

File Format Logic File Format Logic

New Way

• File format logic stored in DB– Changes made centrally

• Generic file extraction program– No changes after installation– Platform independence

• Code sharing with web applications• PL/SQL programs are shorter

– Faster to write

Stored Procedures and Packages

• PL/SQL– Procedural extension to SQL

• Simple Procedure or Function• Package

– Set of procedures and functions– maintains state

• Stored and executed by database server

PL/SQL

• Variables and Constants

• SQL built in functions– String, Numeric, Date

• Conditionals

• Looping Constructs

• Exception Handling

• Records

Generic ProgramGet Filename

Null?Done

Start

Open File

Get Line

Null? Write Line

Version?

“Switcher” functions

• Standard API for generic program

• Provides access control

• Provide filename for simple cases– Also direction, and other attributes

• Grouping of multiple simple files

• Environment info for specific file generator routines.

SwitcherGet_Filename

Record?

Return Null

AccessOK?

Return Error

Get NextTarget Rec

Simple?

Open?

OpenTarget Rec

Files>0?

Return Rec.GetFname()

ReturnRec.Filename

Target Record

• Target Name, Sequence Number

• Access List

• Get Data Routine Name

• Get FileName Routine Name (C)

• FileName (S)

• Direction, DBMS_OUT Flag (S)

• Version Info (S)

Get_Data (1)Cursor Get_Records is

Select Username, Uid Gid, Gecos, Shell, Path from Logins;

. . .

Procedure Get_Data(Result out varchar2) is

R Get_Records%RowType

begin

if not Get_Records%IsOpen

then

Open Get_Records;

end if;

Get_Data (2)Fetch Get_Records into R;

if Get_Records%NotFound

then

Close Get_Records;

Result := Null;

else

Result := R.Username || ‘:*:’ || R.Uid || ‘:’

|| R.Gid || ‘:’ || R.Gecos || ‘:’ || R.Path

|| ‘:’ || R.shell;

end if;

return;

Complex Targets

• Get_FileName– Like Get_Data– Stashes context info for Get_Data– Provides version info (optionally)

• Keep calling until no more files.

• For each file, call Get_Data until no more data.

More Conclusions

• Replacing existing custom programs

• Loading data as well as extraction

• Handler for back end processing– File “STDOUT”

• Wish I had done this long ago

Package Design

Relational Database Tables

WP Table Routines

WP Web

WP File

Web ServerFile Gen

Files Currently Generated

• White Pages – LaTeX, HTML, LDIF, ph, CSV

• Hostmaster– Resource Record (bind)– Hostfile– DHCP Config

• TSM Billing– Error Reports

Files Currently Loaded

• TSM (Backup/archive)– Accounting Records

• White Pages– CSV staff list (remote campus)

• Terminal Server– Accounting logs

• lpd (printing) – Accounting logs

Futures

• GET from program

• PUT to program

• Boilerplate management

• Call file generation from Web– Faster development for web pages– Alternate Boilerplate testing

• More platforms

An Improved Approach to Generating Configuration Files from

a Database

Jon Finke

Rensselaer Polytechnic Institute

finkej@rpi.edu

http://www.rpi.edu/~finkej