针对社交网络/知识库社区的数据库建议?


12

我正在为一个想在夏天开始的新项目研究各种数据库类型和DBMS。

我已经在MySQL和postgreSQL中构建了系统,现在我想扩展我在数据库中的知识和经验。

我的项目将是一种社交网络/聚合知识的事物。(还没有开发出一个描述它的术语)。

我一直在看:

  • Cassandra(使用自己的查询语言类型);对于功能丰富的内容并提供高性能的查询执行来说,这似乎是一件好事。但是我不太热衷于此,因为它需要Java环境才能工作,而且我希望与Oracle无关。
  • MongoDB(noSQL类型的DBMS);强大的可伸缩性,但是您将失去经过验证的SQL语言上已经可用的所有功能,例如业务信息查询。

系统要求:

  • 数据文本,日期,时间,xml,小整数,blob,
  • 结构/行为:标准化3NF,非实时,关系,可伸缩,健壮
  • 环境: unix / linux,没有JAVA !,最好在C上运行

我想知道您是否可以指出我应该研究的任何其他数据库系统。

我也看过对象关系数据库,我很喜欢它们与PHP对象(PDO)一起工作的想法,但是它们的性能似乎有点差。

看到这里将有DBA,您对这些系统的任何反馈都将不胜感激。

谢谢


3
如果要归一化3nf,则需要进行关系存储。期。
JNK 2012年

2
我不会仅仅因为Java是“ Oracle”就敲了Java。使用正确的工具完成工作。如果Java是最好的工具,我会使用它。如果C是正确的工作,请使用它。专注于每种工具给您带来的利弊。对此做出明智的决定(与数据库方面相同),而不是基于感觉。
克里斯·奥尔德里奇

Answers:


4

您的抽象要求向我尖叫。但是,我认为有必要了解资产阶级的最新动态,因此,这里列出了您可能需要检查的各种内容。

免费的东西

  • CouchDB-最早的NoSQL数据库之一,功能强大的地图/归约查询系统,高度分布式且具有容错能力。更好的NoSQL竞争者之一。
  • Hyperdex-具有搜索功能的非常新的分布式哈希表。
  • Riak-值得一提的分布式哈希表。

奇怪的免费东西

  • Metakit-更多像SQLite这样的嵌入式数据库,但不是基于SQL的,因此更具过程性。
  • FramerD-非常类似于经典的“网络”数据库,非常以指针为中心。也许死了?
  • 岩浆 -Smalltalk OODBMS。很酷,但记录不充分。

非免费的东西

  • AllegroGraph -RDF(图形)数据库,支持SPARQL。口香糖味。
  • 的Caché -混合关系/ OO数据库,最初基于流行性腮腺炎(这个)。
  • 客观性 -最后几个真正的大型OODB之一。非常强大,令人印象深刻且昂贵。
  • VoltDB-高度可扩展的关系数据库。支持“大多数” SQL。很新 我想他们也有社区版本。

结论

我没有广泛使用这些东西。我和他们大多数玩了一点,并且总是回到PostgreSQL。查看您的需求,唯一不满足要求的PostgreSQL是可伸缩性。另一方面,出于我的目的,在此问题上,向一台专用数据库机上投入4000美元的硬件要比向4000美元的云节点或低端机器投入400美元的硬件容易得多。还有通过PostgreSQL(例如EnterpriseDB)实现可伸缩性的方法。

将这些东西放在一边玩是一件很有趣的事情,但是当需要将有价值的,不可复制的生产数据放到某个东西中时,可靠性,稳定性和长期生存能力等无聊的属性就应运而生了。

为您进行的思想实验

考虑一下。假设您是Mark Zuckerberg,您必须选择放弃代码库或数据。您可以保留所有开发人员,但要么要么放弃所有代码-每行,甚至说所有开发人员关于他们如何实现所有操作的记忆-但您必须保留所有用户帐户和所有用户上载数据等等,否则您可以放弃所有数据。保留所有结构和服务器以及配置,设置,但丢失每个数据库中每个表的每一行。

显然,丢失数据会更糟。为什么所有用户都会重新生成所有这些数据?想想所有丢失的营销数据,这实际上是Facebook赚钱的方式。而且,有无数的企业家为让人们使用他们的Facebook复制品而垂涎三尺-现在所有那些被剥夺权利的前Facebook用户都将在那里考虑替代方案。另一方面,如果他们丢失了代码库,则可以重建它,甚至可能比现在更好,但是他们可以在很短的时间内就拥有一些在线资源。哎呀,他们可能会他人的Facebook克隆代码库,并用真实数据加载它,但是您不能只复制他们的数据。如果Facebook仍然在服务器上存储每个人的重要数据,则离开的动机要低得多。仍然很糟,但情况要差得多。令人惊讶的是,事实并非如此。

具有讽刺意味的是,在一次意外事故中丢失所有数据比丢失所有代码容易得多。对于大多数互联网公司而言,数据就是公司,它您最有价值的资产。这是考虑使用经过时间考验的传统,老式,不敏感的关系数据库的强烈理由。


从此处删除的长注释线程摘要:“这不公平地暗示NOSQL存储将以某种方式使您更有可能丢失数据”。
杰克说试试topanswers.xyz 2012年

我要说的与年龄和广泛使用有关,而不与存储引擎的设计有关。
Daniel Lyons 2012年

6

还要考虑一下,没有理由为什么不能将关系数据库用于某些事情而将nosql数据库用于其他事情。


0

说到nosql,我对Facebook参考资料仅需添加1件事:

如果您打算进行大规模扩展,建议您对数据库引擎sysadmin友好,对开发人员友好。

退出对开发人员友好且非常快速的MongoDB,该MongoDB无法在地理上分散规模,并且无法高效,轻松地进行备份。尽管在这里我们使用MongoDB,但是Riak或CouchDB在系统管理员的规范中看起来更好(我没有使用Riak或CouchDB的经验)


2
如果选择大规模扩展,那是因为您已经从微型扩展到了微小,又从微型扩展到了小型,并且在此过程中您已经学到了一些可以帮助您做出正确选择的知识。准备好进行横向扩展时,您可以负担得起知道如何扩展的工程师的费用。
jcolebrand
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.