ElH*_*aix 7 sql-server rest azure
客户的系统将通过 API 连接到我们的系统以进行数据拉取。目前,这些数据将存储在数据集市中,假设每个请求存储 50,000 条记录。
我想知道传递源自 SQL Azure 数据库的有效负载的最有效方法。
API 请求将是 RESTful。收到请求后,我认为将从数据库中检索有效负载,将其转换为 JSON,然后通过 HTTP 进行 GZIP 编码/传输回客户端。
我担心处理这个问题可能需要许多连接的客户端提取大量数据。
最好以明文形式将直接结果返回给客户端吗?
欢迎提出建议。
- 更新 -
需要澄清的是,这不是正在连接的 Web 客户端。该连接是由另一个应用程序建立的,用于接收一次性的每日数据转储,因此没有分页。
数据主要由带有一个二进制字段的文本组成。
评论有点长,所以......
最好的方法很可能是那些“视情况而定”的答案之一。
是 Azure 上的数据库,还是 Azure 上的整个托管。我自己从未在 Azure 上做过任何制作。
您想优化什么——总回合响应时间、总服务器 CPU 时间,或者其他时间?
例如,如果您的数据库服务器是天蓝色的,但是您的 Web 服务器是本地的,那么您可能可以简单地优化数据库请求,并根据需要通过多个 Web 服务器进行扩展。
如果数据随每个请求而变化,那么如果您试图优化服务器 CPU 负载,则永远不应该压缩它,但如果您试图优化带宽使用,则应该压缩它 - 两者都可能是您的瓶颈/昂贵的资源。
对于 50K 记录,即使 JSON 也可能有点冗长。如果您的数据是单个表,则通过使用 CSV 之类的内容可能会节省大量数据(如果没有其他情况,包括第一行作为完整性检查的记录标题)。如果您的结果是连接多个表(即分层)的结果,则建议使用 JSON,以避免滚动您自己的分层表示的复杂性。
您是否使用 SSL 或您的网络服务器,如果是的话 SSL 可能是您的瓶颈(除非这是通过其他硬件处理的)
您发送的数据的性质是什么?主要是文本、数字、图像吗?文本通常压缩得很好,数字则较差,图像则较差(通常)。既然你建议使用 JSON,我希望你几乎没有二进制数据。
如果压缩 JSON,它可能是一种非常有效的格式,因为重复的字段名称大部分会从结果中压缩出来。XML 同样(但标签成对出现)
添加
如果您事先知道客户端将获取什么并且可以提前准备数据包数据,请务必这样做(除非存储准备好的数据是一个问题)。您可以在非高峰时间运行它,将其创建为静态 .gz 文件,并让 IIS 在需要时直接提供服务。您的 API 可以简单地分为两部分: 1) 检索客户端可用的静态 .gz 文件列表 2) 确认对所述文件的处理,以便您可以删除它们。
想必您知道 JSON 和 XML 不像 CSV 那样脆弱,即,从 API 添加或删除字段通常很简单。因此,如果您可以压缩文件,那么您绝对应该使用 JSON 或 XML —— XML 对于某些客户端来说更容易解析,而且说实话,如果您使用 Json.NET 或类似工具,您可以从同一组中生成其中之一定义和信息,所以保持灵活性是很好的。就我个人而言,我非常喜欢Json.NET,简单、快速。
归档时间: |
|
查看次数: |
38500 次 |
最近记录: |