假设使用RoR编写的服务开始使用AWS S3来存储一些数据.使用AWS S3的最佳库是什么?目前我的两个主要选择是:
它们的主要优点和缺点是什么?如果以后的服务需要使用其他AWS(如EC2)怎么办?您使用了哪些其他宝石?为什么?
谢谢!
假设我们有一个受欢迎的网站.我们需要在用户之间实现类似邮件的消息传递.典型的解决方案是使用2个表:
用户(user_id)
消息(message_id,sender_id(引用user_id),receiver_id(引用user_id),主题,正文).
该方法有2个显着的局限性
另一个解决方案使用3个表:
用户(user_id)
Sent_messages(sent_id,sender_id(引用user_id),主题,正文)
Received_messages(sent_id,receiver_id(引用user_id),主题,正文)
received_messages的主题和正文从sent_messages的相应字段中复制.
这种方法导致
所以这里提出问题:
谢谢!
PS我明白,在解决这些可伸缩性问题之前,网站必须非常成功,但我想知道如果需要该怎么做.
UPDATE
目前,对于第一个版本,我将使用Daniel Vassallo提出的设计.但如果将来一切正常,设计将改为第二个.感谢Evert减轻了我的担忧.
假设我们有一个摄影网站.任何作者都可以订阅以接收来自任何其他作者的更新.显然,如果作者A订阅作者B并不意味着B订阅了A.所以我们建立模型
class Author < ActiveRecord::Base
has_many :subscriptions
has_many :subscribed_by_author, :through => :subscriptions, :source => :subscribed_to
end
class Subscription < ActiveRecord::Base
belongs_to :author
belongs_to :subscribed_to, :class_name => "Author", :foreign_key => "subscribed_to"
end
Run Code Online (Sandbox Code Playgroud)
这样我们就可以使用了
但问题是如何获得仅使用rails(不使用普通SQL)订阅某些作者的人员列表,即得到答案:"谁订阅了some_author?"
问题:Rails中是否有任何能力使双方的关系工作,即不仅写作some_author.subscribed_BY_author而且有some_author_subscribed_TO_author?如果有一个,那么它是什么?
PS明显的解决方案是
添加到作者模型
has_many:subscribed_BY_author,:through =>:subscriptions,:source =>:subscribed_to,:conditions =>"direction ='by'"
has_many:subscribed_TO_author,:through =>:subscriptions,:source =>:subscribed_to,:conditions =>"direction ='to""
但我想知道是否有一个解决方案而不改变数据库设计.
amazon-s3 ×1
belongs-to ×1
database ×1
has-many ×1
mysql ×1
ruby ×1
rubygems ×1
scalability ×1
sql ×1