Before you automatically disagree, stop a bit and think about it. Can you think of any code you have ever written that did not handle data of some sort? Of course not. This is not about relational data either, it is about any data. There is no software that does not process data. Even the textbook example of some function that squares a number is processing the parameter and returning a value. The first line of that function, in most languages, names the input parameter and its type. That is a schema.
This remains true as you climb out of the toy textbook examples into simple one-off programs into small packages and ultimately to apps that build to megabytes of executables running on a rack (or a floor) of servers. Just as each method call has parameters, so does each class have its attributes, every table its columns, every XML file its XSD (or so we hope) and that code works if and only if everybody on the team understood what was supposed to happen to the data.
New Versions Are (Almost Always) About Schema Changes
This remains true as you climb out of the toy textbook examples into simple one-off programs into small packages and ultimately to apps that build to megabytes of executables running on a rack (or a floor) of servers. Just as each method call has parameters, so does each class have its attributes, every table its columns, every XML file its XSD (or so we hope) and that code works if and only if everybody on the team understood what was supposed to happen to the data.
Are We Talking UI or Platform or Middleware?
Generally today we are talking about the server side of things. This is about any project that is going to take a user request and consult a data store: the file system, a search engine, a database, a NoSQL database, or an XML database. If you go to the disk, that is what we are talking about.
New Versions Are (Almost Always) About Schema Changes
So imagine you've got some working code. Maybe a single script file, or perhaps a library or package, or maybe some huge application with hundreds of files. It is time to change it. In my experience new code means some kind of change to the schema.
I cannot prove that, nor do I intend to try. It is a mostly-true not an always-true.
Schema Here Does Not Mean Relational
This is not about relational schemas, though they are included. If you are using Mongo or some other NoSQL Database which does not manage the schema for you, it just means you are managing the schema yourself somewhere in code. But since you cannot write code that has no knowledge of the structure of the data it handles, that schema will be there somewhere, and if the code changes the schema generally changes.
Does It Need To Be Said?
Sometimes you will find yourself in a situation where people do not know this. You will notice something is wrong, they first symptom is that the conversation does not appear to be proceeding to a conclusion. Even worse, people do not seem to know what conclusion they are even seeking. They do not know that they are trying to work out the schema, so they wander about the requirements trying to make sense of them.
Order and progress can be restored when somebody ties the efforts down to the discovery and detailing of the schema. The question is usually, "What data points are we handling and what are we doing to them?"
6 comments:
Thank you for making the effort and spreading this information with all of us. It was indeed very useful and informative while being straight forward and to the point.
Freeware Software
Raj IT believes in building long lasting strategic alliance with its clients. We provide easy solution to make things lot easier. Our slogan (Making IT Easy) says it all. We do not predict ourselves as a provider of a solution for our clients; we are companion to the process that seeks the most effective solution paving the journey to a better tomorrow.
Web Design
Software Developments
Web Development
SEO Expert
IT outsourcing
Ecommerce
Wordpress
Software Design & Development Bangladesh
Joomla
This continues to be real as you go up out of the toy publication illustrations into simple one-off applications into small offers and eventually to applications that develop to mb of exe operating on a holder of web servers.
I think your final question in this post is a great point Ken. Not enough people ask this however!
Instead I think many focus on what the application should do, which leads to the same data items being defined in subtly different ways. Which of course causes difficulties when trying to consolidate various pieces of code behind services, as I'm doing at the moment.
I’ve read several good stuff here. Definitely price bookmarking for revisiting. I wonder how a lot effort you put to create this sort of wonderful informative web site.
Oracle SQL
This is really a helpful blog i am really impressed with your work bro , keep it up the good work (^_^)
Ultimate programming tutorials
Post a Comment