# Exported with the Erfurt API - http://aksw.org/Projects/Erfurt @base . @prefix dct: . @prefix ns0: . @prefix ns1: . @prefix ns2: . @prefix ns3: . @prefix ontology1288790966584: . @prefix ontowiki_wikipage: . @prefix owl2xml: . @prefix owl: . @prefix rdf: . @prefix rdfs: . @prefix sadocontology1: . @prefix sioc: . @prefix sioct: . @prefix sysconf: . @prefix uva-sa-ontology: . @prefix view: . @prefix xsd: . ontowiki_wikipage:content """

Receiving/pulling data to process

The application consists of three layers, in which the first and second layer mutate the data delivered to them in order to pass it along to the second layer and the third layer exposes this data to the outside world (if authenticated).

 

Thus a method must be chosen to get data from one layer to another. This can roughly be done in two ways: push or pull.

 

Push data

 

The first solution we had considered was pushing data from one layer to another when ready up to the data storage at the end. If performed very puristicly, the data extractors wouldn’t so much be extractors but API’s that are able to receive data from the appropriate sources.

 

This puristic approach immediately poses problems; though some systems support operations after finishing their usual tasks (version control, creation of a bug tracking issue, etc.) not all do. This would mean that not all applications can be integrated into the system.

 

If we would pick the less puristic approach, it would mean we only push the data that was processed by the transformers in both the data and business layer to the next module in line. Since the module after the business layer is a database, this is a requirement. Which means the only “pushing” of data would be from the data to the processing layer. A further explained list of advantages and disadvantages is listed in the appendix under section: Push & pull data from databases.

 

Pull data from databases

 

Another option is to store the data abstracted by the transformation module in the data layer and the data processed in the business layer in their own databases. The data can in this case periodically be retrieved from the databases and processed. A further explained list of advantages and disadvantages is listed in the appendix under section: Push pull data from database

 

Conclusion

After weighing the options, it appears that pushing the data only as a single major advantage: the fact that the critical systems can decide when they have sufficient resources available for pushing their code to the application.

 

The biggest disadvantage however, the fact that not all systems are compatible with this solution is reason enough to discard the idea. The stakeholders have said that they’re always looking for new tools that can do a better job. If an application turns out to be incompatible with this system, not all necessary data can be used to draw conclusions regarding communication, etc. This should not be allowed to happen.

 

Though non-trivial, it is possible to use monitoring software to measure when to pull data from an external source. Since the problem can be overcome this way, there is really no argument left why not to choose for a pull-strategy.

 

""" ; sadocontology1:contains_knowledge_about sadocontology1:Business_Logic_Layer, sadocontology1:Extensibility_of_data_sources, sadocontology1:Extractor, sadocontology1:Performance, sadocontology1:Pull_data, sadocontology1:Push_data, sadocontology1:Transformer, , sadocontology1:data_extraction_technique_-_push_or_pull, sadocontology1:data_layer, ; a sadocontology1:WikiPage, owl:NamedIndividual ; rdfs:label "10 logical and implementation view - background - rationale - receiving pulling data" .