会有什么MySQL的使用进行交易?MVCC(多版本并发控制)或行级锁定.?
如果两者我们如何从一个转移到另一个.
我正在使用postgis2.0和postgres 9.1 db.我的目标是尽可能接近优化查询,以获得特定半径范围内的附近位置,并将它们与距离顺序放在一起.Location模型具有latlong空间类型postgis扩展的属性和distance_from计算距离给定POINT(长lat)的距离的方法.我在rails代码中写了如下查询:
def self.nearby(lat, long, radius)
nearby = Location.where("ST_DWithin(ST_GeomFromEWKB(latlong), ST_GeomFromText('POINT(#{long} #{lat})', 4326),?, false )", radius)
.order("ST_Distance_Sphere(ST_GeomFromEWKB(latlong) , ST_GeomFromText('POINT(#{long} #{lat})', 4326) ) ")
.map{|ar|
{ "id" => ar.id,
"distance" => ar.distance_from(lat, long)
}
}
end
Run Code Online (Sandbox Code Playgroud)
我可以看到我distance用order子句和map子句双重计算两次,但是想不出我应该如何存储sql查询的距离的立即值.所以在map{}我重新计算它.
`.order("ST_Distance_Sphere(ST_GeomFromEWKB(latlong) , ST_GeomFromText('POINT(#{long} #{lat})', 4326) ) ")`
Run Code Online (Sandbox Code Playgroud)
"distance" => ar.distance_from(lat, long)
如果我没有错,在我的情况下使用ST_DWithin可以帮助我快速得到一个位置是否在内而不是先计算距离.因此,如果说一个查询只返回10-100个位置,ST_DWithin将比纯粹使用STDistance有助于加快查询速度.
我还能提高多少?我的位置数据库大小约为10000条记录.感谢您的时间,谢谢.
我正在尝试回复未经身份验证的用户使用@SendToUser.
我正在使用新创建的Spring Boot应用程序,我唯一的配置是:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/stomp").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
registry.setApplicationDestinationPrefixes("/app");
registry.setUserDestinationPrefix("/user");
}
}
Run Code Online (Sandbox Code Playgroud)
控制器代码:
@MessageMapping("/search")
@SendToUser("/search")
public String search(@Payload String xxx) {
return "TEST1234";
}
Run Code Online (Sandbox Code Playgroud)
JS:
var socket = new SockJS('/webapp/stomp');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
stompClient.subscribe('/user/search', function(data){
alert(data.body);
});
});
Run Code Online (Sandbox Code Playgroud)
弹簧输出:
DEBUG org.springframework.web.servlet.DispatcherServlet: 996 - Successfully completed request
DEBUG o.s.w.s.handler.LoggingWebSocketHandlerDecorator: 45 - New WebSocketServerSockJsSession[id=shizav88]
DEBUG o.s.m.simp.broker.SimpleBrokerMessageHandler: 158 - …Run Code Online (Sandbox Code Playgroud) 场景:
发票的收件人必须是有效的联系人.
CreateInvoiceCommand:
{
"content": "my invoice content",
"recipient": "42"
}
Run Code Online (Sandbox Code Playgroud)
我现在读了很多次,写边(=命令处理程序)不应该调用读取端.
考虑到这一点,Invoices微服务必须监听所有事件ContactCreated和ContactDeleted事件,以便知道给定的收件人ID是否有效.
然后我会在Invoices微服务中拥有数千个联系人,即使我知道其中只有少数会收到发票.
有没有最佳实践来处理这些情况?
sql ×2
cqrs ×1
mysql ×1
one-to-many ×1
postgis ×1
rdbms ×1
relationship ×1
spring ×1
spring-mvc ×1
stomp ×1
transactions ×1
validation ×1