Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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!!

share|improve this question

4 Answers 4

up vote 1 down vote accepted

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.

share|improve this answer

Lets back up just one step further. What is data? Its a catalog of (possibly related) facts. A datum is a single proposition, which is true or not true. By collecting that particular datum into a database, we claim that proposition to be true.

An example of such a proposition might be, to use the stock market example could be

The price of Apple Stock is $348.16 per Share

The collection may relate the distinct propositions according to a number of predicates. These predicates may be thought of as dimensions about which propositions can vary. For instance,

on Feb 25 at 4:00pm ET

That is to say, we may believe a proposition to be true depending on the time of the proposition is claimed. That's not the only dimension we may wish to consider. A proposition may only be valid at a particular location. We might want to clarify who is claiming the proposition. We could learn at a later time that the proposition claimed for an earlier time was incorrect, so we need to know just when the proposition is claimed to be true, but also when the proposition was claimed to be true.

Claim: The price of Apple Stock is $348.16 per Share

Source: Google Finance
Valid: Date: Feb 25 4:00pm ET
Location: NASDAQ
Transaction Date: Feb 26 10:00am CT
share|improve this answer
    
Make the proposition self-referencing. There goes your true and not true. This sentence is not true. Pinocchio says: "My nose will grow." –  Secure Jul 10 '12 at 15:45
    
@Secure: a datam is not equivalent to statements; they are always measurements or observations. As such, a datum cannot prove its own truth; A temperature reading does not itself have a temperature, and it would not be "More true" were that sensible. "According to my iPhone, the temperature is 73 degrees Farenheight (but its usually wrong anyway)" –  TokenMacGuy Jul 10 '12 at 17:42
    
"A datum is a single proposition, which is true or not true." At some point, something or someone has to evaluate the proposition to decide if it is true or not true. What's the difference in evaluating "The price of Apple Stock is $348.16 per Share." and "This sentence is not true."? Both state a fact. The first can be evaluated by comparison with external data, the second with itself. Why should one be allowed and the other disallowed? Maybe you should define more exactly what you mean by "true" and "not true"? –  Secure Jul 10 '12 at 18:58

The terms static and dynamic can refer to many different things in computing (memory allocations, typing systems, etc), so you'll probably want to use different terminology. In finance, we have historical data and streaming data, though the distinction isn't based on state; it's based on whether the data has to be consumed in realtime or not.

You could possibly carve-out request/response messages (FIX, HTTP) as a separate data set if you want to. They have to be consumed in realtime, but the events they trigger are far more varied than simple observation.

share|improve this answer

I believe that as humans we like things to be in categories because that is the way our minds work.

Equally I strongly believe that this is a fundamental error in programming - often we tend to categorize things that simply don't need to be in a category or have a type.

Avoiding this tendency I believe is crucial to making the right design.

So to answer your question no, Static Data and Dynamic Data are identical. Some data change more often than others, but that doesn't warrant an arbritraty distinction.

They are both data that come from somewhere and probably go somewhere, so keep it simple.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.