【问题标题】:Does anyone know of an agnostic .NET SQL json parser driver?有谁知道不可知的 .NET SQL json 解析器驱动程序?
【发布时间】:2017-01-25 21:51:34
【问题描述】:

我在目前的工作中遇到了一个挑战,我希望有人能够帮助我。

基本上,我们有一些用例要求我们将非结构化数据存储在数据库中,但也能够对其执行查询。

问题是,我们拥有的所有其他用例都要求我们使用结构化语言,因此我们的核心平台已经在 SQL 上进行了大量开发(我们支持 SQL Server、Oracle 和其他 SQL 服务器 - 并且从历史上看,已经设法通过不使用任何数据库特定功能(如存储过程或类似的东西)并坚持标准 SQL,保持 SQL DB 不可知)。

无论如何,我们现在需要存储和查询非结构化数据,因此想到了两件事: - 使用 NoSQL 数据库 - 或使用具有 json 解析功能的 SQL 数据库,如 PostgreSQL、SQL Server 或 Oracle Server

问题是,我们不能强迫我们的客户安装另一个数据库,我也不想限制我们的客户几年来一直在使用的不同 SQL 兼容数据库服务的数量。

说了这么多,这是我的实际问题: - 有谁知道一个不可知论的 .NET SQL json 解析器驱动程序,它可以让我在不同的 SQL 服务上透明地存储 JSON,然后给我一个不可知论的查询/解析接口,我可以使用它而不必担心底层服务器?

提前致谢!

【问题讨论】:

    标签: sql .net sql-server json oracle


    【解决方案1】:

    这里有一篇文章描述了如何将 EF 对象存储为 JSON https://www.codeproject.com/Articles/1166099/Entity-Framework-Storing-complex-properties-as-JSO

    存储过程对您来说是有效的选择吗?理论上,您可以创建存储过程,其中包含带有搜索 JSON 列的 JSON 函数的 SQL 代码,然后从 .Net 代码中调用它们。每个数据库都有不同的存储过程实现,但是您的 .Net 调用只会调用它们。希望将来 EF 在您查询 JSON 字段时支持将 LINQ 转换为 SQL。

    如果您使用的是 SQL Server 和 Oracle,您甚至可以从 .Net 代码执行原始 SQL 查询,因为它们都支持 JSON_VALUE 函数。

    【讨论】:

    • 这些信息很好,但不是我想要的。基本上,我需要能够存储任意 JSON 有效负载,然后查询它们:例如选择 json_column.json_property['x'] > 5 的所有记录。我想将该查询逻辑推送到服务器端,以便在服务器端完成处理(出于性能原因)!不同的数据库允许此功能,但使用不同的构造/查询语言(鉴于这不是真正的标准 SQL 功能)。所以我正在寻找的是一个驱动程序或组件,它以不可知的方式为我提供 JSON 查询功能。
    • 我明白了。不幸的是,JSON 支持在数据库中是新的,所以我不知道这种框架。但是,如果您的目标是 SQL Server 和 Oracle,它们具有对齐的功能,因此您可以将 JSON 作为文本存储在两个数据库中,并使用相同的查询对其进行查询,例如:SELECT * FROM dbo.collection WHERE JSON_VALUE(Jsoncolumn, '$.property') ='测试'
    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2017-10-20
    • 2011-04-23
    • 2013-10-21
    • 1970-01-01
    相关资源
    最近更新 更多