小编Eug*_*eMi的帖子

Heroku上的瘦与独角兽

只是想让人们对使用Unicorn vs Thin作为rails服务器的意见.我在网上发现的大多数文章/基准看起来都很不完整,所以有一个集中的地方讨论它会很好.

Unicron是一个多进程服务器,而thin是基于事件/非阻塞的服务器.基于事件的服务器非常棒......如果您的代码是异步/非阻塞的,那么vanilla rails就会阻塞.因此,除非您使用非阻塞的rails库,否则我真的看不到使用Thin的优势.更糟糕的是,在非阻塞服务器中,如果您的I/O循环阻塞,您将阻止整个循环,并且在阻塞调用返回之前无法处理任何更多请求.阻止库会减慢速度!

为什么Heroku选择Thin作为他们的默认服务器(雪松)?他们是聪明人,所以我相信他们有理由.

贝娄是一个链接,建议用4名Unicorn工人取代Thin - 这对我来说非常有意义. Heroku上的4名Unicron工作人员

ruby-on-rails heroku thin unicorn

34
推荐指数
3
解决办法
1万
查看次数

Maven依赖项 - 版本与更新

mvnrepository通常列出每个依赖项的"版本"和"更新".

  1. 如果我发布自己的包,我该如何指定"更新"版本
  2. Maven在解决传递依赖性时使用了哪种依赖性?因此,如果我的包依赖于包A,它取决于包B的 - version = 1.0和updates = 1.1.我会得到哪个版本的B?

maven maven-dependency

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

SSD使用对基本数据库假设的影响是什么?

固态硬盘现在司空见惯; Amazon EBS由SSD支持,因此大多数云数据库现在也运行在SSD(Heroku PostgreSQL等)上.传统上,数据库和相关体系结构的设计理念是随机访问不好 - SSD不再是这种情况.

SSD如何影响以下?

  1. 数据库设计 - 数据库旨在最大限度地减少磁盘搜索(WAL,B树).SSD如何改变数据库设计的内部和调整?
  2. 应用程序开发 - 工作假设一直是(a)您希望从内存而不是DB服务器用户请求,以及(2)对数据库的访问是IO绑定的.使用SSD,从数据库中检索数据可以足够快,并且数据库访问通常是网络绑定的.这是否减少了对内存数据库的需求?显然,您仍然希望预先计算昂贵的操作,但您可能只是将它们存储在数据库中
  3. 专业数据库 - 有很多数据库可以处理关系数据库认为不好的事情(部分原因是随机数据访问).一个这样的例子是图形DB(Neo4j),它以紧凑的方式在磁盘上存储节点和邻接列表.如果我们可以在SSD上部署RDBMS而不担心随机访问,这些数据库是否有用?

database postgresql solid-state-drive neo4j redis

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

俄罗斯娃娃片段缓存与自动过期密钥 - 性能的利弊

这个问题基于2篇文章:
- 来自37signals的DHH的Basecamp Next
- Adam Hawkins 在Rails中高级缓存

我对使用俄罗斯娃娃缓存的性能影响有点困惑,具体来说:

  1. 使用自动过期密钥时,似乎每个请求都会导致访问数据库以获取对象时间戳 - 我错过了什么吗?(我知道在最好的情况下,你必须只为层次结构中的顶级键做到这一点,但仍然......)

  2. 在第1篇文章中,他们缓存了一个待办事项列表,以及每个待办事项.缓存列表非常有意义,因为它节省了大量工作(所有项目的数据库查询).但为什么要缓存单个项目?您已经访问数据库以获取Item时间戳,那么您究竟要保存什么?生成一些html行?

  3. 在第二篇文章中,Adam缓存了这样的视图块: cache [post, 'main-content']... cache [post, 'comments'] 当添加注释时,它会更改帖子的时间戳,因此会使两个entires无效.但是,main-content没有改变 - 你不想再生它!如何才能使评论无效.(这实际上是一个非常常见的用户案例 - 一个具有一些逻辑上独立的部分的模型:对象本身,不同的关联,某些其他商店中的数据等)

对我来说,只有当你有一个深层次的嵌套对象时,俄罗斯玩偶缓存才有意义.(在basecamp中你有project-> todos list - > todo - > items list).但是,如果您的层次结构较浅,则最好自己进行无效.

对于任何反馈,我们都表示感谢!
谢谢.

ruby-on-rails fragment-caching 37-signals

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

可用性日历的最佳数据库架构是什么,它允许安排约会(重复发生和单个))

在我的应用程序中,我有一个提供商,有一个时间表和客户从预定时间预约.我需要以下功能.

提供商: - 能够指定重复出现的可用性.例如Mon 9-5,Tues 10-3等. - 能够使数据变黑.例如 - 本周一不可用. - 能够添加单个,而不是重复发生的日期/时间段.例如 - 这个星期六9-5.

客户: - 能够预订单一预约. - 能够预订重复预约.(每周一9-4).

到目前为止,我想出了3个选项:

  1. 将计划划分为30分钟的间隔,并为每个间隔/提供者对创建数据库条目.每个间隔可以是免费的或预订的.当客户预约时,我们将间隔标记为已预订.这种方法的问题在于它浪费了大量空间,而且我不确定搜索性能对于重复出现的预订有多好.
  2. 将每个可用期限保存为"事件".如果它重复出现,请复制该事件.搜索免费插槽时,请搜索预订表以确保没有重叠预订.在这种情况下,搜索重复出现的插槽似乎有点尴尬.要找到明年9月5日可用的所有提供商,我们必须搜索所有匹配的"事件",并找到所有具有52个匹配事件的提供商.
  3. 将每个可用期限保存为"事件".如果它重复出现,请添加一个标志.当搜索免费插槽时,搜索预订表以确保没有重叠预订.它使搜索重复约会变得更容易.为了"黑掉"假设要重复出现的插槽我们可以插入一个假的预订.

schema database-design calendar ruby-on-rails appointment

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

将Kafka的数据实时传输到Cassandra

从卡夫卡到卡桑德拉写日期的最佳方式是什么?我希望它是一个解决的问题,但似乎没有一个标准的适配器.很多人似乎都在使用Storm从Kafka读取然后写信给Cassandra,但风暴对于简单的ETL操作来说似乎有些过分.

cassandra apache-kafka

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

什么时候使用元组而不是案例类是有意义的

case类Person(firstName:String,lastName:String)

VS

type Person =(String,String)// firstName,lastName

案例类显然更具可读性.但是,我看到人们使用后者.什么时候使用元组代替它?

作为后续行动

有性能差异吗?在一些使用Tuple2的语言中,就像使用两个原语一样,而创建一个类则会产生开销.但是Scala看起来像Tuple被实现为类.如果我想要压缩两个sequances的情况怎么样,但更喜欢输出是一个案例类,因为下面提到的所有原因.

例如

`case class UserScores(userId: Long, score: Double)`
users.zip(scores).map{(id ,score) => UserScores(id,score)}
Run Code Online (Sandbox Code Playgroud)

上面的示例需要对集合进行额外的迭代,以及额外的对象创建.可以使用视图代替

users.zip(scores).view.map{(id ,score) => UserScores(id,score)}.force
Run Code Online (Sandbox Code Playgroud)

但我不太确定它会产生预期的效果

scala

8
推荐指数
2
解决办法
1253
查看次数

`before_create`和`after_create`之间有什么区别?何时使用哪个?

我知道在将对象转换为数据库之前调用before_create,之后调用after_create.

只有当对象无法满足数据库常量(唯一键等)时,才会调用before_create和after_create.其他我可以将before_create中的所有逻辑放在before_create中

我错过了什么吗?

ruby-on-rails ruby-on-rails-3 rails-activerecord

7
推荐指数
3
解决办法
7717
查看次数

case _是什么意思:scala中的意思

例如:

    castType match {                                                                                  
      case _: ByteType => datum.toByte  
      case _: ShortType => datum.toShort                                                              
      case _: IntegerType => datum.toInt
      case _ => throw new RuntimeException(s"Unsupported type: ${castType.typeName}") 
    }
Run Code Online (Sandbox Code Playgroud)

到底是什么:做什么?' '是一个占位符,通常意味着"匹配任何东西",但":"是做什么的?如何处理"ByteType"类型?

scala

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

PubNub是否使用WebSockets和/或XMPP?

无法找到一个明确的答案:

WebSockets:支持WebSockets(http://www.pubnub.com/websockets/)和socket.io,但其他SDK是否使用Web套接字?

XMPP:PubNub是否将其用作通信协议?

xmpp websocket pubnub

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