小编Ben*_*n M的帖子

MySQL中的事务

会有什么MySQL的使用进行交易?MVCC(多版本并发控制)或行级锁定.?
如果两者我们如何从一个转移到另一个.

mysql sql rdbms transactions

2
推荐指数
1
解决办法
458
查看次数

RAILS中的POSTGIS查询优化

我正在使用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条记录.感谢您的时间,谢谢.

sql postgis ruby-on-rails postgresql-9.1

1
推荐指数
1
解决办法
1276
查看次数

Spring Stomp @SendToUser与未经身份验证的用户无法正常工作

我正在尝试回复未经身份验证的用户使用@SendToUser.

  • 春季4.1.1

我正在使用新创建的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)

spring stomp spring-mvc spring-messaging spring-websocket

1
推荐指数
1
解决办法
6321
查看次数

CQRS +微服务:如何处理关系/验证?

场景:

  • 我有2个微服务(内部都使用CQRS +事件采购)
  • 微服务1管理联系人(=聚合根)
  • 微服务2管理发票(=聚合根)

发票的收件人必须是有效的联系人.

CreateInvoiceCommand:

{
  "content": "my invoice content",
  "recipient": "42"
}
Run Code Online (Sandbox Code Playgroud)

我现在读了很多次,写边(=命令处理程序)不应该调用读取端.


考虑到这一点,Invoices微服务必须监听所有事件ContactCreatedContactDeleted事件,以便知道给定的收件人ID是否有效.

然后我会在Invoices微服务中拥有数千个联系人,即使我知道其中只有少数会收到发票.


有没有最佳实践来处理这些情况?

validation one-to-many relationship cqrs microservices

1
推荐指数
1
解决办法
862
查看次数