Are the only types of data “sources” static and dynamic

data

Thinking that there might be others, but not sure — but before getting into that, let me explain what I mean by static and dynamic data sources.

  • Static (or datastore) – Meaning that the data's state is non-changing, and if was changed, that would be a new state, and the old data would be considered stateless; meaning it no longer is known to exist, or not exist. Another way of possibly looking at a static data source might be that if read and written back without modification, the checksum for before and after should be exactly the same regardless of the duration of time between the reading and rewriting of the data. Examples: Photos, Files, Database Record,
  • Dynamic (or datastream) – Meaning that the data's state is known to be in flux, and never expected to be the same per input. Example: Live video/audio feed, Stock Market feed,

First let me say, the above is a very loose mapping of the concepts, and I'd welcome any feedback.

Next, onto the core of the question, that being are these the only two types of data sources. My guess, is that yes, they are — but that there are hybrid versions of the two. That being, streaming data that has a fixed state. For example, the data being streamed has a checksum given and each unique checksum is known to be a single instance of static data. On the flip side, static data could be chained via say a version control system; when played back, each version might be viewed as a segment of a stream; thing is, the very fact that it can be played back makes the data source static. Another type might be that the data source is being organically discovered, and it's simply unknown what the state is.

Questions, feedback, requests — just comment, thanks!!

Best Answer

To me there are as many types of data as what you want to do with them. All data whether you call it static or dynamic is meant to change. The thing you need to know is how it changes and what you need to do when it changes.

You can think of the most static data as constants. If you can guarantee that some data will not ever change in the lifetime of your program, and you will not ever need to test different values, then you hardcode that - examples are mathematical constants such as e or pi (some people might still want to keep those configurable if their application allows for a change in precision).

There is a bunch of data that is very static which for some reason you don't want to go to the expense of making a configurable parameter for your programs, you still hardcode them, but be aware that changing them means compiling and the works (may require a complete retest).

Then there is all the data that is by and large static but you want to change now and again. Call that a reference database or a set of configuration parameters. Whatever the means, you have an easy way to change the dataset without re-compiling the project. You would likely want to version control this sort of data.

After that you have a bunch of data that again is generally quite static but that the users must be able to change (directly or indirectly). This can be thought of as general informational data. This could be the address of a customer, their name... So it will not change frequently but it can change. That sort of data you might want to keep a backup of, but probably not version controlled as it really is operational use rather than system configuration. Some people might still want to version control this depending on business requirements.

Then I would see live data. Data that flows from one system or a means of entry into your system. This is dynamic in its fullest extent. Of course like you say some of that dynamic data may be pretty static. But if it is an external input into your system you probably need to assume that it can change at any time.

But even live data can be stored forever, and possibly version controlled. Again check your business requirements.

Whether you call any of those data groups static or dynamic is up to you and the people you speak with - make sure everybody is in line with the same language for a particular application or project.

Related Topic