网站是否需要本地数据库?

时间:2010-05-01 12:28:35

标签: ruby api rest

  

如果有更好的地方可以问这个,请告诉我。

每次我建立一个新的网站/博客/购物车/等等,我都会继续尝试以下方式:

  • 将常用功能提取到可重用代码(主要是Rubygems和jQuery插件)
  • 如果可能的话,将该gem转换为小型服务,这样我就不必为所涉及的对象处理数据库(通过服务,我的意思是精益和平均的东西,通常用Sinatra Web Framework建立一些核心型号)。

我的假设是,如果我可以删除对本地数据库的依赖性,那么从长远来看这将使其更容易和更具可伸缩性(在可重用性和可管理性方面可扩展,不一定是数据库/性能)。我不确定这是一个好的或坏的假设。你觉得怎么样?

由于以下原因,我做出了这个假设:

  

最重要的数据库/模型功能已在互联网上构建。

仅举几例:

  • 社交网络API:Facebook
  • 消息传递API:Twitter
  • 邮寄API:Google
  • 事件API:Eventbrite
  • 购物API:Shopify
  • 评论API:Disqus
  • 表格API:Wufoo
  • 图片API:Picasa
  • 视频API:Youtube ...

每一件事都是相当复杂的,从头开始构建,并使这些公司制作它们时优化,简单和易于使用。

因此,如果我在活动页面(eventbrite)上构建一个显示图片(picasa)的应用程序,您可以看到谁加入了活动(Facebook活动),并向他们发送电子邮件(谷歌应用程序API),并让他们填写每月调查(wufoo),并在完成后观看视频(youtube),全部集成到一个自定义,易于使用的网站中,我可以做到这一点,而无需创建本地数据库,是一个很好的事情的?

我问,因为谜题中缺少两件事情,迫使我不得不创建本地数据库:

  • 发布API
  • RESTful / Pretty Url API

虽然有很多博客系统和API供他们使用,但是没有一个地方你可以只写内容并让它成为一些重要的东西。对于每个应用程序,我必须使用代码来创建漂亮/宁静的网址,这样可以节省帖子。但似乎这应该是一项服务!

问题是,网站是什么? ... 根据我的具体原因整合世界服务的地方 ... 并且叹息,存储只有我的网站才能访问的帖子。每个人都会需要“自己的博客”吗?为什么不在StackOverflow或Facebook等已建立的平台上拥有个人资料并撰写大量内容?

...这样我可以完全没有数据库编写应用程序,并知道我做得对。

注意:当然,在某些时候你需要一个数据库,如果你做了一些独特或新的事情。但对于你只是重新布线信息或创建视频,事件和产品等内容的情况,是否真的有必要了?

2 个答案:

答案 0 :(得分:3)

我认为你在问题中几乎回答了你自己的问题:

  • 如果您能找到符合您网站持久性要求的第三方基于网络的服务,那么您的网站不需要本地数据库。

  • 如果你不能,那就确实如此。

但“需求”问题不仅仅是 技术问题。假设您标识了远程数据库/持久性服务,有许多原因可能不合适:

  • 它可能无法提供客户网站所需的详细功能;例如能够执行某些类型的查询,可伸缩性等。
  • 根据客户的网站预计点击率,使用它可能过于昂贵。
  • 在以下方面可能风险太大:
    • 最终用户隐私,
    • 服务可用性/可靠性,
    • 服务的长期可行性和
    • 服务API的长期稳定性。

这并不是说这些问题无法解决。但至少需要与客户讨论“风险”问题,因为如果情况恶化,他们最终需要处理这些问题。

但是,当完成所有操作后,本地数据库相对于远程数据库的一大优势是您和您的客户可以完全控制本地数据库。

答案 1 :(得分:0)

我认为这可能取决于您尝试存储/检索的信息。您提到的大部分信息似乎都使用了openid或类似的提供程序。您是否可以创建一个openid或替代的“模块”,您只需在需要时引用/包含(必要时远程)?

其中很多看起来有点超出我的意思,但我正在尝试构建一个用户数据库,并认为这就是我如何以一种我可以在各种环境中重用代码的方式完成它。

希望这会让你慢慢思考这些思维过程。