I'm looking for a best practice or solution, on a conceptual level, to a problem I'm working on.
I have a collection of data points (around 500) which are partially changed, by a user, over time. It is important to able to tell, which values have been changed at what point in time. The data might look like this:
Data changed over time:
+--------------------------------------------------------------------------------------+
|   Date     |  Value no. 1  |  Value no. 2  |  Value no. 3  |  ...  |  Value no. 500  | 
|------------+---------------+---------------+---------------+-------+-----------------|
|  1/1/2018  |               |               |       2       |       |        1        |
|  1/3/2018  |       2       |       1       |               |       |                 |
|  1/7/2018  |               |               |       4       |       |        8        |
| 1/12/2018  |       5       |       3       |               |       |                 |
....
It must be possible to take a snapshot at a certain point in time, to get a complete set of data points, that were valid for that particular point in time, like this:
Snapshot taken 1/3/2018 will yield:
+---------------------------------------------------------+
|  Value 1  |  Value 2  |  Value 3  |  ...  |  Value 500  | 
|-----------+-----------+-----------+-------+-------------|
|     2     |     1     |     2     |   0   |      1      |
Snapshot taken 1/9/2018 will yield:
+---------------------------------------------------------+
|  Value 1  |  Value 2  |  Value 3  |  ...  |  Value 500  | 
|-----------+-----------+-----------+-------+-------------|
|     2     |     1     |     4     |   0   |      8      |
Snapshot taken 1/13/2018 will yield:
+---------------------------------------------------------+
|  Value 1  |  Value 2  |  Value 3  |  ...  |  Value 500  | 
|-----------+-----------+-----------+-------+-------------|
|     5     |     3     |     4     |   0   |      8      |
and so on...
I'm not bound by a particular database technology, so either SQL or NoSQL will do. It is probably not possible to satisfy all the requirements in the DB-domain - some will probably have to be addressed in code. But my main question is what database technology is best suited for this task?
I'm not quite sure this fits a time-series database (TSDB), since only a portion of the values are changed at a given time, and it is important to know which values changed. Maybe I'm wrong?
/Chris