我从Github上的CSV文件中读取了数据,并将其保存到我的数据库中。但是,在使用此数据时我遇到很多问题。我认为我的数据库模型不足以解决这个问题。我应该如何以这种方式将数据存储在数据库中。
我使用的数据库是SQL Server。
我当前的数据库模型
我每天在数据之间使用逗号。我认为这不是一种健康的方法。
我该如何改善?
我在前面使用的json数据
[
{
"id": 1,
"province": "",
"country": "Afghanistan",
"countryCode": "AF",
"countryTrName": "Afghanistan",
"latitude": 33,
"longitude": 65,
"confirmedData": [
{
"dateTime": "2020-01-22T00:00:00",
"data": 0
},
"deathsData": [ bla ,bla .. ]
我对您的基础架构没有深入的了解,但是我认为这是一个数据突变问题。我想说的是,当您使用关系数据库时,要做的第一件事就是对其进行规范化。之后,如果您需要一天甚至多次获取信息,或者说是实时的信息,一个不错的解决方案是实施消息代理服务(例如rabbitmq),以确保系统将接收所有数据。并能够处理它,而不会给您的服务带来风险。现在,要存储它,如果您需要保留历史记录,我想说一个好的解决方案是使用归一化的数据库(就像我在开始时说的那样)创建类似于日志表的内容。创建一个仅用于存储历史记录的表,如果不需要此历史记录,我认为相同的想法可行,但是您无需更新新记录,而只需更新现有记录即可。如果两者都需要,我想在数据库上创建两个表,一个表用于存储历史数据,另一个表用于存储合并的数据。
[通常,数据库处理简单的操作,例如比在字段中处理数据更快地访问,添加或删除表中的行。
为此,如果您有定期更改的数据,例如每天的ConfirmedData和deathsData字段,则应每天将它们作为新行添加。
您可以通过将静态数据(您所在的国家/地区数据)放置在单独的表中来确认数据和ConfirmedDeaths数据的方式来避免重复使用静态数据(您的国家/地区数据,然后只需要返回到您的国家/地区表的索引链接。
通过将动态数据放入单独的表中,然后可以添加日期字段。然后,这将使在给定日期或日期期限内搜索或整理数据更加容易实现。