DB for storing simple time-stamped values
How unique are the DataID's?  Are there just a handful of DataID's for the 20 million entries per hour or are DataID's more numerous?  

But if your most frequent query is based on a narrow time frame first and then specific DataID's then this create statement should give you decent performance.  You will need to change the data types to what makes sense for your environment.

Note: statements are for MS-SQL

CREATE TABLE TestData 
(
DataID VARCHAR(20) NOT NULL
, [TimeStamp] DATETIME2 NOT NULL
, Value VARCHAR(1000) NULL
)
GO

CREATE CLUSTERED INDEX IDX_C_TestData ON TestData ([TimeStamp], DataID)
GO