Recently I was contacted by a CIO of a company in UAE who I know for many years. He asked me to review some system architecture, as they had some problems. It turned out to be a very standard architecture with a GUI layer for data entry and a message hub transporting the entry message into many connected systems as well as persisting it in a golden source. The solution was build with some validation based on an XML Schema at all important points. So from a first view your standard good architecture.
There was just one problem that some of the messages were rejected by the persistence layer, as they did not meet the database constraints, so the first point was to educate all those at the GUI layer as well as the other groups entering information in the bus. This worked as long as there was a close connection but as the CIO needed to outsource the future development to an offshore company he got nervous. After looking at the setup more in detail I noticed that the XSDs only checked for the integrity of the data elements with mandatory fields. After enquiring I was told that that since XML is a hierarchal format you cannot model relational database structures into it. After I then showed them how it this is done using the XSD:KEY selector and connected path field elements they told me that while it worked their XML validation tool was rejecting it, but first even without reading the rejection message that stated that some field elements are not part of the structural element. After some more discussion that a this will always hold true for any relational model they implemented this Schema a every entry point and as such achieved integrity.
The example just showed me again that even if you you have an able team there are often things unknown or slightly wrong perception, as XML is mainly hierarchal, but can be extended for other use. This is why we as architects constantly need to question our knowledge so that we are not caught in yesterdays world as the architects of the first web search engines who just”knew” that NoSQL will never work with the mass of information on the web until Google came along and disproved them all.
So this is also the reason that you will find me constantly arguing against my own ideas with sometimes changing them in the process. The good thing in arguing against your own ideas is that you will always win, either through the validation of the brilliant ideas or through the replacement with even brighter wisdom.