【发布时间】:2011-08-11 05:50:00
【问题描述】:
我想将 Cassandra 与 Symfony 一起使用。这是我第一次使用这两种技术。我对已经完成的工作进行了大量研究,似乎 Symfony(使用 Doctrine ORM)内部不支持 Cassandra。扩展 Doctrine 以包括对 Cassandra 的支持对我来说有多困难?包含此功能的最佳、最简洁和最可升级的方式是什么?
【问题讨论】:
我想将 Cassandra 与 Symfony 一起使用。这是我第一次使用这两种技术。我对已经完成的工作进行了大量研究,似乎 Symfony(使用 Doctrine ORM)内部不支持 Cassandra。扩展 Doctrine 以包括对 Cassandra 的支持对我来说有多困难?包含此功能的最佳、最简洁和最可升级的方式是什么?
【问题讨论】:
Doctrine 的 ORM 用于关系数据库,这就是为什么它被称为对象 relational 映射器。与 Cassandra 等面向列的存储完全不同的概念。我会说让 Cassandra 加入的机会非常渺茫。
添加到存储和访问模式不同的工作。
在 Doctrine 的生态系统中,有人编写了支持 MongoDB 和 CouchDB 的 ODM(对象 document 映射器)——但面向文档的数据库也是一个不同的游乐场。甚至这两者也有很大不同,而两者都是面向文档的数据库。
我认为你无法说服任何人在这两个项目中接受 Cassandra。
就我个人而言,Cassandra 最大的亮点是节俭和与之相关的。话虽如此,这是我个人的看法,没有什么能阻止你为 Cassandra 实现一个不错的 PHP 包装器。
我也认为没有理由不将您的 Cassandra 包装器作为自定义 Symfony 包等发布。
在 Symfony2 之后,许多人启动了独立于核心的项目,以提供包含附加功能集的捆绑包(例如,Friends of Symfony)。因此,如果您想说服这一点,请继续做一些事情(例如在 Github 上),看看它是如何被接收的。
【讨论】:
我实际上是在为 Cassandra 寻找 Symfony2 捆绑包。 Cassandra wiki 确实有用于 Cassandra 的 PHP 客户端。
【讨论】:
cassandra 有一个活跃的 PHP 客户端:https://github.com/thobbs/phpcassa
从那里开始以避免直接与 Thrift API 搏斗。
【讨论】:
Cassandra 的 CQL 有一个 PDO 驱动程序: http://code.google.com/a/apache-extras.org/p/cassandra-pdo/
而且由于 Doctrine 的 DBAL 建立在 PDO 之上,我认为至少可以让部分功能正常工作。
当然,诸如连接、索引和实体关系之类的东西是手动创建的,并在考虑到 Cassandra 的内部结构知识的情况下使用。
作为一名来自 Java 世界的开发人员,我可以说有用于 Cassandra 的 Java ORM 库,您的 RDBMS 中的几乎所有东西都可以正常工作。所以我想这毕竟是可能的。
【讨论】: