使用FOR JSON AUTO或FOR JSON PATH在以下记录集上(表示产品的属性):
attribute | value
-----------------
color | red
size | small
Run Code Online (Sandbox Code Playgroud)
将产生:
[{"attribute":"color","value":"red"},{"attribute":"size","value":"small"}]
Run Code Online (Sandbox Code Playgroud)
有没有办法生产以下产品:
{"color":"red","size":"small"}
Run Code Online (Sandbox Code Playgroud)
请注意,因为每个产品属性都不同于其他属性; 因此,每个产品的记录集都不同.PIVOTing不是一个选项,因为它需要动态的SQL!似乎我们需要一个能够CROSS与产品表一起生成的功能,例如产品目录.
sql-server json user-defined-functions entity-attribute-value
使用node.js作为tcp服务器,我将管理相对大量的GPS设备(~3000设备),并且第一步只是将输入数据存储在数据库中,但即使在这个阶段,我也想到了一些令人烦恼的性能问题我和我想在他们咬我之前抓住他们.
1 - 使用java或ruby等语言查看编写类似的服务器我看到如下代码:
java的
Thread serverThread = new Thread(() -> {
System.out.println("Listening to server port 9000");
while (true) {
try {
Socket socket = serverSocket.accept();
...
Run Code Online (Sandbox Code Playgroud)
红宝石
require 'socket'
server = TCPServer.new ("127.0.0.1",8080)
loop do
Thread.start(server.accept) do |client|
...
Run Code Online (Sandbox Code Playgroud)
这似乎他们给每个连接到tcp服务器的设备(套接字)提供了单独的线程?由于node.js是单线程的并且是异步的,我应该关注传入的连接还是类似以下简单的方法会满足大量的同时连接?
net.createServer(function(device) {
device.on('data', function(data) {
// parse data
// store in database
});
});
Run Code Online (Sandbox Code Playgroud)
2 - 我应该使用连接池限制数据库连接吗?由于数据库还从另一侧查询GIS和监控,因此池大小应该是多少?
3 - 我如何在这样的系统中受益于缓存(例如使用redis)?
如果有人对这个想法有所了解,那应该会很棒.我也愿意听到您在实施此类系统时可能遇到或意识到的任何其他性能想法.谢谢.