人们提出了基于知识的方案来进行实际数据管理,但并没有做出很多实践。道格·勒纳特的CYC就是一个例子。数据库帮助应用程序得出非显而易见的结论的能力对于试图变得“聪明”的“小”应用程序来说非常有趣。但这样的应用程序还不是很多。
说到图形数据库(例如我参与的项目Neo4j),它们在扩展到复杂性方面表现出色。这意味着它们提供了"更好的基础来建模业务领域"(请参见NoSQL的状态,同样由Ben Scofield编写)。在我看来,这在小型到中型应用程序中非常重要。
这可能通过示例更好地解释,因此这里有一些示例应用程序/领域建模的链接:
关系数据库管理系统 (RDBMS) 的问题之一是需要将编程语言的领域模型映射到 RDBMS 的关系模式中,这需要在 ORM 层上进行配置。
NoSQL 数据库不需要强制将对象映射到关系模型中,在大多数情况下,对象会按原样序列化。由于缺乏中介模式,数据迁移和版本控制变得更加容易。
另一个好处是可扩展性和性能。由于大部分时间数据都是通过“键”接收的,所以几乎所有东西都使用索引。通过对密钥在有效 NoSQL 实例数量上执行 %(MOD)运算,可以轻松地进行微不足道的分片,提供自然数据分区,这对于分片至关重要。
如果您有兴趣了解如何使用 NoSQL 开发与 RDBMS 不同的应用程序,我有一个教程,在其中演示如何 使用 Redis 设计简单的博客应用程序。
如果您将一些常见的PaaS云服务(如键值存储、BLOB存储和消息队列存储)匹配起来,您就会拥有一些方便的工具,可以使小型应用程序开发人员摆脱DBA和基础架构人员的暴政。
今天,小型开发人员经常使用Jet MDBs。为什么?很简单,共享访问只需要将MDB文件存储在对整个应用程序社区可见的文件共享上即可。当他们能够做到这一点时(即得到门卫的必要支持),他们可能会使用SQL Server Express、MySQL等。
可悲的是,在大型组织中,那些门卫可能非常敌对。提到“数据库”,你就会面对DBA团队和相关的延迟、应用程序审查、优先级等问题。提到需要服务器,你就会面对另一个行刑队。
如果您不需要关系型数据库,使用NoSQL解决方案和相关的云服务可以消除大量这些问题。
首先,真正需要的只是一个公共云提供商的帐户。一旦该概念获得批准,这变得相当容易。作为开发人员,一旦获得批准并分配了帐户,您就会更容易,尽管当然还有一些常规的簿记问题。
但是,让我们暂且不谈这个问题。如果您的组织为此类用途实施了私有云呢?很多外部计费问题都会消失,数据不安全的担忧也会消失等等。
这样的东西可以以半匿名的方式实施和配置,几乎就像管理文件共享一样容易。匿名性的原因在于,一旦您被批准在内部云上开发,就没有人需要在使用它之前仔细检查您的活动细节,就像在现有的文件共享上创建文件之前不需要审查请求一样。
显然,需要管理存储和 CPU 配额。没有人能负担得起无限制地扩展。流氓应用程序可能会消耗大量资源。所以您需要一些配额系统来限制使用。这是否由基础设施人员监控是一个实施决策,或者它可能像文件共享使用一样处理:用完了,有人会对程序员大喊大叫,然后程序员会调查并在适当时请求更多(或修复错误)。
但最终您将获得“公用事业计算”,通过“不使用 SQL”,您不会承担与数据库管理员打交道的成本(和问题)。他们仍然可以在他们的大办公室里安静地浏览网页,而您可以完成一些工作。
Amazon SimpleDB 可以为那些需要非关系型数据库来存储较小、非结构化数据的人提供帮助。Amazon SimpleDB 的每个域的存储大小受到限制,最多为10GB。Amazon SimpleDB 提供了简单性和灵活性。SimpleDB 自动索引所有数据。Amazon SimpleDB 的定价基于您实际的盒子使用情况。您可以在 Amazon SimpleDB 中存储任何 UTF-8 字符串数据。