curran / model

A functional reactive model library for interactive data visualization.
MIT License
314 stars 43 forks source link

Use case for model.js #8

Open Arne-Pfeilsticker opened 9 years ago

Arne-Pfeilsticker commented 9 years ago

Although model.js is only 190 lines long, it is for me one of your most brilliant programs.

Your examples already very impressive, but I think they are just the tip of an iceberg to further possibilities.

I ask you for your opinion to the following application ideas for model.js.

I am working on an open source program for planning and visualization of municipal budgets.

It seems to me necessary to reinvent the accounting system for public budgets.

The world can be seen from an economic perspective as a system of input, processing and output. As a network of performance flows.

In conventional accounting systems, transactions are posted to accounts and hierarchically aggregated in the balance sheet items and the income statement.

The problem is that any booking not only documents facts, but also interprets these facts. And to make matters worse, any chart of accounts, is more or less a poor compromise between sometimes conflicting demands.

The idea is to separate facts (= performances, business transactions) and the interpretation of the facts (= hierarchies).

The hierarchies are also the dimensions of the model. It should be up to the user to interpret and aggregated the economic facts by means of standard or custom hierarchies acording to his needs.

Specific sets of hierarchies then correspond to specific conventional accounting systems. In this way, any accounting system can be mapped without having to record the facts again.

Am I right in assuming that model.js is ideal for modeling and aggregating the addressed hierarchical structures?

Since there are a lot of data, I've been thinking to integrate model.js as serverside function into the database system OrientDB.

OrientDB seems to me an ideal supplement for your ideas.

Orientdb is a Multi-Model database and thereby also a graph database. The model definitions in model.js could be used to generate links and use it to speed up the access and the calculation of large models and datasets.

curran commented 9 years ago

Thank you, I took a look at your work so far.

It sounds like what you are describing is essentially different hierarchies of categorization for transactions, and generating visualizations for these.

I'm just curious, have you evaluated Crossfilter.js? This library can perform aggregation over many records in the browser.

Do you have any hosted version of your project I could try out? I would like to try it out, but will need some time to manage the set up and installation.

Also, do you have any sample of the data you are trying to analyze and present?

Perhaps Model.js could play a role in your project, but I'm not sure exactly where. Perhaps the user could select between alternative hierarchies, and based on that selection, the aggregation could be recomputed and visualized? Model.js would be good for managing the flow of events and processing for that kind of thing.