[squeak-dev] [OT] What is this called?

Ron Teitelbaum ron at usmedrec.com
Wed Dec 30 16:11:41 UTC 2015


 

 

 

On Tue, Dec 29, 2015 at 1:31 PM, Ron Teitelbaum <ron at usmedrec.com> wrote:

Hi Colin,

I think you have mentioned a number of parts of the problem already.  Schema Management, Address Space Management, and Version Management. 

 

That sounds interesting. Where do these terms come from?

 

>From me but I didn’t make them up.  I’ve worked with a number of databases.  When I started I wrote my own data processing programs in a spreadsheet environment called Symphony.  This was just data and functions to manipulate data.  Later I worked with dBase and Paradox.  These added the concept of a defined Schema Management and indexes.  I then moved to Oracle that added the concept of versions, locking and logging, (the locking and logging part is Version Management (adding lock then commit or rollback).  Versant the object database gave me the concepts of Address Spaces and finally DHT added the details behind what Address Spaces could do.   

 

When dealing with Schema Management I developed a the method to manage upgrading a database where I added a db upgrade table.  It contained the information needed to move the database forward or backwards.  Basically I added a version number and a row for each table that changed, the method to change the schema, and the transforms needed to move or convert the data.  Clients would connect and verify the schema version from that table and could trigger an upgrade with the proper permissions or error if the version didn’t match.  The table is a way to automate what would have been a manual process (run this query to update the table definition, then run these queries to transform the data, now call yourself this version).  We also added the reverse to go back a version.  This was really just a failsafe to allow you to rollback and recover from an upgrade error.  Having to do both caused some interesting discussions.  Data that could have been lost, which was no longer needed or collected in a newer version of the system could cause issues when rolling back, this would usually require developers to add default data, “no data collected”, or something of that type.  It made the process more thoughtful and helped to protect the system.  

 

The idea of a more detailed Version Management that gives you point in time is really just a DB design issue.  Linked versions of objects can be traversed for versions and index snapshots of a point in time are easy to design in if the data is important. 

 

Thinking in terms of data is something that happens pretty naturally especially if you started working with data. I had a friend that always said that no good programmers started programming after 1985.  The reason for that was that before 1985 you had to work with data structures and you learned them.  I’m sure that is not entirely true but I am glad that I’ve been so exposed to data and can think in terms of data and it’s structure.  I developed a system that did some amazing data transformations (reading what a physician wrote and converting into what a pharmacist would dispense).  This sounds like an easy problem converting dose to strength but it was a very complicated problem.  Think in terms of Brand, Generic, Formularies and Inventory, drug-drug interactions and other health checks, the number of different sizes of pills and forms (tablet, gel caps), then add on automated packaging, billing, tracking and medical records.  It was quite a system.  When I was designing it, I kept getting the question when are you going to show us a screen for how this will work.  I said not until I have a data structure that can handle it.  I worked on the underlying data structure, then the programming to support it.  People were getting quite upset with me since you could not see anything that worked.  I knew it worked and could show them in code but that didn’t seem to be good enough.  We added the UI at the end and it took only a few days.  Had we started with the UI and gone from that to the database we may never have been able to solve the problem.  Real systems require detailed data structures all of these methods for managing them are part of that.

 

Does that help?

 

All the best,

 

Ron Teitelbaum

Head Of Engineering

3D Immersive Collaboration Consulting

ron at 3Dicc.com

Follow Me On Twitter: @RonTeitelbaum <https://twitter.com/RonTeitelbaum> 

www.3Dicc.com 

https://www.google.com/+3Dicc

 

 

 

Colin 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20151230/f8a106de/attachment.htm


More information about the Squeak-dev mailing list