"Come on, come on, let's stick together
" - Bryan Ferry
There's more to PL/SQL programs than packages, but most of our code will live in packages. The PL/SQL Reference offers
the following benefits of organising our code into packages:Modularity
- we encapsulate logically related components into an easy to understand structure.Easier Application Design
- we can start with the interface in the package specification and code the implementation later.Hidden Implementation (more...)
When we talk about program design we're mainly talking about interface design. The interface is the part of our program that the users interact with. Normally discussion of UI focuses on GUI or UX, that is, the interface with the end user of our application.
But developers are users too.
Another developer writing a program which calls a routine in my program is a user of my code (and, I must remember, six months after (more...)
Here are some more principles which can help us design better programs. These principles aren't part of an organized theory, and they're aren't particularly related to any programming paradigm. But each is part of the canon, and each is about the relationship between a program's interface and its implementation.
The Principle Of Least Astonishment
Also known as the Principle of Least Surprise
, the rule is simple: programs should do what we expect them to (more...)
Obviously Interface Segregation is crucial for implementing restricted access. For any given set of data there are three broad categories of access:
- administration and governance
So we need to define at least one interface - packages - for each category in order that we can grant the appropriate access to different groups of users: read-only users, regular users, power users.
But there's more to Interface Segregation. This example is based on a procedure (more...)
Designing PL/SQL Programs is a succession of articles published the articles in a nonlinear fashion. Eventually it will evolve into a coherent series. In the meantime this page serves as a map and navigation aid. I will add articles to it as and when I publish them.
IntroductionDesigning PL/SQL Programs
Principles and PatternsIntroducing the SOLID principlesIntroducing the RCCASS principlesThe Dependency Inversion Principle: a practical example
Tools and Techniques
These design principles may seem rather academic, so let's look at a real life demonstration of how applying Dependency Inversion Principle lead to an improved software design.
Here is a simplified version of an ETL framework which uses SQL Types in a similar fashion to the approach described in my blog post here
. The loading process is defined using an abstract non-instantiable Type like this:
create or replace type load_t force as object
( txn_date (more...)
I posted my Three Laws of Office Life
a long while back. Subsequent experience has revealed another one: Every office kitchen which has a sign reminding people to do their washing-up has a concomitant large pile of unwashed crockery and dirty cutlery.
People wash their own mug and cereal bowl, but are less rigorous with the crockery from the kitchen cupboard. This phenomenon will be familiar to anybody who has shared a house during their (more...)
Rob C Martin actually defined eleven principles for OOP. The first five, the SOLID principles, relate to individual classes. The other six, the RCCASS principles, deal with the design of packages (in the C++ or Java sense, i.e. libraries). They are far less known than the first five. There are two reasons for this:
- Unlike "SOLID", "RCCASS" is awkward to say and doesn't form a neat mnemonic.
- Programmers are far less interested in (more...)
PL/SQL programming standards tend to focus on layout (case of keywords, indentation, etc), naming conventions, and implementation details (such as use of cursors). These are all important things, but they don't address questions of design. How easy is it to use the written code? How easy is it to test? How easy will it be to maintain? Is it robust? Is it secure?
Simply put, there are no agreed design principles for PL/SQL. So it's (more...)
When I started out, in COBOL, structured programming was king. COBOL programs tended to be lengthy and convoluted. Plus
statements. We needed program desire to keep things under control.
So I noticed the absence of design methodologies when I moved into Oracle. At first it didn't seem to be a problem. SQL was declarative and self-describing, and apparently didn't need designing. Forms was a 4GL and provided its own structure. And PL/SQL? Well that (more...)
"Sometimes I feel
The need to move on
So I pack a bag
And move on"
Can't believe Bowie has taken that final train.
David Bowie's music has been part of my life pretty much since I started listening to pop music seriously. Lodger
was the first Bowie album I listened to all the way through. It's probably his most under-appreciated album. It's funny to think that back then in 1979 Bowie was dismissed as (more...)
Oracle Premier Support for 11gR2 Database expired this time last. However, Oracle announced they would waive the fees for Extended Support for 2015. This was supposed to provide 11gR2 customers an additional twelve months to migrate to 12c. So, twelve months on, how many of those laggards are still on 11gR2. My entirely unscientific guess is, most of them. Why else would Oracle announce the extension of the Extended Support fees waiver until May 2017
This year the UKOUG's tour of Britain's post-industrial heritage brought the conference to Liverpool. The Arena & Convention Centre is based in Liverpool docklands, formerly the source of the city's wealth and now a touristic playground of museums, souvenir shops and bars. Still at least the Pumphouse
functions as a decent pub, which is one more decent pub than London Docklands can boast. The weather was not so much cool in the 'Pool (more...)
One of the Cloudera chaps at the Oracle Big Data meetup
had a T-shirt with this cool slogan:
Data is the new bacon
Even as a vegetatian I can appreciate the humour. It also has a corollary:
Metadata is the new Kevin Bacon
Because it's metadata is the thing which (more...)
The Oracle guys running the Big Data 4 the Enterprise Meetup
are always apologetic about marketing. The novelty is quite amusing. They do this because most Big Data Meetups are full of brash young people from small start-ups who use cool open source software. They choose cool open source software (more...)
Formatting is the least important aspect of Coding Standards. Unfortunately, most sets of standards expend an inordinate number of pages on the topic. Because:
- The standards are old, or the person who wrote them is.
- Code formatting is an easy thing to codify and formalise.
Perhaps the source of most (more...)
On Friday evening I attended an IT Job Fair
at the Amerigo Vespucci
in Canary Wharf. Let me say straight away that hanging out with a random bunch of techies and recruiters would not be my first choice for a Friday evening. But, hey! I'm looking for my next role, (more...)
Yesterday's UKOUG Analytics event
was a mixture of presentations about OBIEE with sessions on the frontiers of data analysis. I'm not going to cover everything, just dipping into a few things which struck me during the day
During the day somebody described dashboards as "Fisher Price activity centres for managers". (more...)
DBMS_LOCK is a slightly obscure built-in package. It provides components which so we build our own locking schemes. Its obscurity stems from the default access on the package, which is restricted to its owner SYS and the other power user accounts. Because implementing your own locking strategy is a good (more...)
Time travel sucks, especially going back in time. Nobody takes a bath, there are no anaesthetics and you can't get a decent wi-fi signal anywhere. As for killing your own grandfather, forget about it.
The same is true for going back in database versions. In 2009 I had gone straight (more...)