Sql server 数据库设计-存储日志,哪种数据类型?
我应该为API请求/响应存储哪些数据类型的日志Sql server 数据库设计-存储日志,哪种数据类型?,sql-server,database,database-design,logging,Sql Server,Database,Database Design,Logging,我应该为API请求/响应存储哪些数据类型的日志 (我不知道将来要存储的字符串的长度)IMHO,NOSQL数据存储非常适合这种情况。如果您有不同的API调用,使用不同的参数,那么类似数据库的无模式特性将非常适合 关于在SQL Server中的存储,一种粗略的方法是使用NVARCHAR(MAX)只存储字符串(最大2GB)。这可以作为一个纯日志使用,但如果您希望轻松搜索该数据(出于监视/分析目的),则这并不理想。您可以使用XML并以更结构化的形式存储每个API调用的数据 e、 g 一些价值 然后可
(我不知道将来要存储的字符串的长度)IMHO,NOSQL数据存储非常适合这种情况。如果您有不同的API调用,使用不同的参数,那么类似数据库的无模式特性将非常适合 关于在SQL Server中的存储,一种粗略的方法是使用
NVARCHAR(MAX)
只存储字符串(最大2GB)。这可以作为一个纯日志使用,但如果您希望轻松搜索该数据(出于监视/分析目的),则这并不理想。您可以使用XML并以更结构化的形式存储每个API调用的数据
e、 g
一些价值
然后可以更轻松地对其进行索引和查询
有一个元素是“您想对日志数据做什么”。我假设,正如您从DB的角度所问的那样,这意味着您希望对该数据进行某种形式的分析/查询(否则您可以只登录到一个标准文件)
对我来说,底线是NOSQL,无模式数据库将是一个很好的选择,并且将是我的建议。我们谈论的是哪一个数据库?SQL Server有一个很好的功能-它允许您定义
VARCHAR(max)
。您的问题与此相关。但是,如果您使用一些图形数据库,则此类数据的存储效率更高。我认为不应在日志的生产平台上进行日志数据的分析/查询,如果您要进行日志分析,则应在分析优化的服务器实例中进行一些ETL
<MyApiCall>
<Param1>SomeValue</Param1>
</MyApiCall>