Search This Blog

Tuesday, 8 August 2023

Architecture Perspective: Solutioning Informational models

Usecase: A new product 
Approach: Top to Down 
Source of Information: Market Research, Raw information
Perspective of Architecture Analysis: Informational

Let's assume we have captured raw information for a given problem, through the Market research.
At the most primitive level, categorize them into information categories providing relations and mappings to other information categories, shown below.


At this stage, we could come up with possible information models like
Static Models: Information schema doesn't change frequently
Dynamic Models: Information schema keeps changing frequently. Think of self-learning systems using
                              ML and AI.
Volumetric models: Operating of volume chunks of information for example to render graphical data in 
                                 3D formats
Metadata models: Operating on information that needs to be presented to your query audience whether
                              in the form of exploration (search), analytics or reports. For example Tag Clouds,
                              used to depict keyword metadata for exploration search, or the visualize free-form text.

Depending on the kind of model, specific solutioning could be done.
For example, we have a static model, with the evolution perspective that could cause changes in architecture, hence solutioning information view and flow for the following usecase. 

Example Enhancement to an existing QnA system
Eg: QNA system consisting of a single question with unknown number of options, and possibility of more than one correct answers supporting descriptive answers. A common algorithm that renders this data dynamically in graphical format

Initial Possible schema of information
Question | Option 1 | Option 2 | ...? | Answer 1,2,... ?  | UI markup | Settings <*to*>?! === PROBLEM

Let's think of solutions here.

Type: Static Model
Perspective: Evolution
Principle Applied: Open-Close Design Principle, open for extension
Solutioning:
CASE: Part of the system enhancement introduces frequently changing information
Proposed / Existing Storage Model: RDBMS SQL
Technology Vendors: MS SQL Server, Oracle, DB2, mySql
ANS 1 : Pivoting. Create pivot structures such that the dynamic schema which was to be represented as columns, now is represented as rows.

Pivot as a solution

Question | Option | Is Answer | UI markup | Settings
Q1           | Op1     | No            | </>             | {setting:value,...}
Q1           | Op2     | No            | </>             | {setting:value,...}
Q1           | Op3     | Yes           | </>             | {setting:value,...}


ANS 2:  Extension Tables, based on the principle of inheritance /composition / aggregation translating to Primary Key - Foreign key relationships, that would create two or more structures in the model depending on if the extension calls for One-to-One, One-to-Many, Many-to-Many relationship

ANS3: Keeping the schema constant, and the RDBMS approach, suggest extension in algorithm that processes the QNA data.

ANS 3.1: Modifying data added in the schema, without change in existing schema, using json / xml data as row data. Suggested "extension" through extension code contracts not refactoring in existing processing algorithm.

Question | Answer
Q1           | options: [{option:'Op1', 
                        IsAnswer:'No', 
                       UIMarkup: '</>',
                       settings: {setting1:'value', setting2:'value2',...}
                     }]

ANS 3.2: Modifying data added in the schema, without change in existing schema, using links to json/xml templates / data. This solution works well for content management systems.

QuestionBank | Answer

QB1                | link://jsondoc

~~~ jsondoc on Server

[ {question: 'Q1',
     options: [{option:'Op1', 
                       IsAnswer:'No', 
                       UIMarkup: '</>',
                       settings: {setting1:'value', setting2:'value2',...}
                     }],

              {question: 'Q2',

                 options: [{option:'Op1', 

                       IsAnswer:'No', 
                       UIMarkup: '</>',
                       settings: {setting1:'value', setting2:'value2',...}
                     }],
                  ...
]

 

CASE: Change Storage Model Type, convert to self-learning system
Type: Dynamic Model, Volumetric Model, Metadata Model
Storage ModelNo-SQL DB
Technology Vendors: MongoDB, Cosmos DB, ElasticDBs, Bigdata
ANS : Extending existing structures to incorporate Json / xml data

[ {question: 'Q1',
     options: [{option:'Op1', 
                       IsAnswer:'No', 
                       UIMarkup: '</>',
                       settings: {setting1:'value', setting2:'value2',...}
                     }]
]
          
OR
 
<Question title='Q1'>
   <Options>
         <Option title='op1'>
            <IsAnswer>No</IsAnswer>
            <UIMarkup>&lt;lasjdf&gt;<UIMarkup>
            <Settings>
                  <Setting title='setting1'>value</Setting>
                  <Setting title='setting2'>value</Setting>
             <Settings>
         </Option>
   </Options>
</Question>

CASE: This is a system for a small set of users supporting upto 100 question banks
Technology Vendors: Access, CSVs, Flat File DBs, Xml Dbs, Excel Dbs, Json file dbs



No comments:

Post a Comment