You're gonna lock yourself into SOMETHING, that's why there are still
thousands of COBOL programs still being maintained.

Mike Nolan

On Fri, Jun 9, 2023 at 3:39 PM Ron <ronljohnso...@gmail.com> wrote:
>
> You can be sure that banks and academic research projects have different 
> needs.  Heck, your University's class scheduling software has different needs 
> from the research problems that you support.
>
> The bottom line is that putting all of the "business" logic in TypeORM locks 
> you into using an ORM, while putting as much "business" logic in database as 
> stored procedures, triggers, foreign keys, etc... doesn't.  Parts of the 
> application can be in Java, some in JS, C, C++, Rust, Perl, even COBOL.
>
> On the other hand, putting so much logic into the database essentially locks 
> you into that RDBMS.
>
>
> On 6/9/23 13:36, Nim Li wrote:
>
> Hello,
>
> Thank you so so much for all the feedback so far.  :D
>
> About this comment:
>
> > "... an application that requires changing the data model does not seem to 
> > be well designed...don't allow model change by the business logic..."
>
> I work in a science research faculity.  When researchers start a project, 
> they don't necessary get the full picture of what they are hoping to achive 
> (yet they may get some ideas about the starting point that allow them to move 
> forward)  By the time they see 40% percent of what they have done, they may 
> start to have a different thought and move towards a different direction, or 
> in some cases, they may spin it off to something different after a certain 
> period of time  Coming with my Agile Development mindset in the research 
> area, it is common for me to see users changing their requirement and 
> expectation, with the same buckets for the data.  Yes, there is quite a lot 
> of work to keep the researchers happy.  ;-)
>
> I suppose when there is a specific end-goal to achive for a project, a more 
> specific design can be more feasible based on the goal.  But when the 
> end-goal is not necessary clear, and/or change-able, I am not exactly clear 
> how we may draw a black-and-white line to determine a design is good or not 
> (.. and for how long...)
>
> I imagine one option may be to put less logics and restrictions on the data 
> side, which allows the researchers to have more flexible on their end.  But 
> this may not be always feasbile due to the specific protocol of the study.  
> Perhaps there may be some other approaches and/or principles to deal with 
> situation like mine?
>
> My major focus is still on getting more opinions about where to implement the 
> business logics for data processing ...  if you have any thoughts about the 
> design, I would love to hear your thoughts as well.
>
> Thank you so so much for sharing!
>
> On Fri, Jun 9, 2023 at 12:35 PM Lorusso Domenico <domenico....@gmail.com> 
> wrote:
>>
>> Uhm me need to start form 2 concepts:
>>
>> competence
>> Network lag
>>
>> Competence: usually programmers aren't skilled enough about the 
>> architectures and the actual needs of each layer.
>> This is a problem, because often programmers try to do something with what 
>> he already know (e.g. perform join in Java....).
>>
>> A correct design requires to identify at least the data logic, the process 
>> logic, the business logic and the presentation logic.
>>
>> One of the most important goals of Data logic is to ensure the correctness 
>> of data from many point of view (all is impossible).
>>
>> That involve:
>>
>> audit information
>> bitemporal management
>> strictly definition and verification of data (foreign key, checks, 
>> management of compatibility)
>> replicate consistently data for different usage
>> isolate access for actual needs
>> design
>>
>> So an application that requires changing the data model does not seem to be 
>> well designed...
>>
>> Network lag
>> The first problem is latency, I must minimize the passage of data over the 
>> network.
>> This means, for example, creating a service that allows the caller to choose 
>> only the information it needs.
>> But it also means, to get all the information needed in a single call, 
>> design asynchronous service, use cache data physically near to the frontend 
>> or the middle layer.
>>
>> Based on these 2 concepts I suggest:
>>
>> develop the Data logic near or inside the database;
>> design powerful and addictive api;
>> don't allow model change by the business logic
>> organize/copy data in jsonb with a powerful json schema to provide coherence 
>> through every layer
>> ensure a system to grant ACID features to your process.
>>
>>
>>
>> Il giorno ven 9 giu 2023 alle ore 05:22 Nim Li <mr.nim...@gmail.com> ha 
>> scritto:
>>>
>>> Hello.
>>>
>>> We have a PostgreSQL database with many tables, as well as foreign table, 
>>> dblink, triggers, functions, indexes, etc, for managing the business logics 
>>> of the data within the database.  We also have a custom table for the 
>>> purpose of tracking the slowly changing dimensions (type 2).
>>>
>>> Currently we are looking into using TypeORM (from Nest JS framework) to 
>>> connect to the database for creating a BE that provides web service.  Some 
>>> reasons of using TypeORM are that it can update the database schema without 
>>> any SQL codes, works very well with Git, etc.  And from what I am reading, 
>>> Git seems to work better with TypeORM, rather than handling individual 
>>> batch files with SQL codes (I still need to find out more about this)  Yet 
>>> I do not think the ORM concept deals with database specify functions, such 
>>> as dblink and/or trigger-function, etc, which handles the business logics 
>>> or any ETL automation within the database itself (I should read more about 
>>> this as well.)
>>>
>>> Anyway, in our team discussion, I was told that in modern programming 
>>> concept, the world is moving away from deploying programming logics within 
>>> the database (eg, by using PL/SQL).  Instead, the proper way should be to 
>>> deploy all the programming logics to the framework which is used to connect 
>>> to the database, such as NestJS in our case.  So, all we need in a database 
>>> should be only the schema (managed by ORM), and we should move all the 
>>> existing business logics (currently managed by things like the database 
>>> triggers, functions, dblink, etc.) to the Typescript codes within the 
>>> NestJS framework.
>>>
>>> I wonder if anyone in the community has gone through changes like this?  I 
>>> mean ... moving the business logics from PL/SQL within the database to the 
>>> codes in NestJS framework, and reply on only the TypeORM to manage the 
>>> update of the database without any SQL codes?  Any thoughts about such a 
>>> change?
>>>
>>> Thank you!!
>>>
>>
>>
>> --
>> Domenico L.
>>
>> per stupire mezz'ora basta un libro di storia,
>> io cercai di imparare la Treccani a memoria... [F.d.A.]
>
>
> --
> Born in Arizona, moved to Babylonia.


Reply via email to