我想将 Cassandra 与 Symfony 一起使用。这是我第一次使用这两种技术。我对已经完成的工作进行了大量研究,似乎 Symfony(使用 Doctrine ORM)内部不支持 Cassandra。扩展 Doctrine 以包括对 Cassandra 的支持对我来说有多困难?包含此功能的最佳、最干净和最可升级的方式是什么?
4 回答
There is a PDO driver for Cassandra's CQL: http://code.google.com/a/apache-extras.org/p/cassandra-pdo/
And as the Doctrine's DBAL is built ontop of PDO, I think it's possible to get at least partial functionality working.
Of course things like joins, indexes and entity relations are to be created manually and used with Cassandra's internal structure knowledge in mind.
Being a developer from Java world, I can say that there are Java ORM libraries for Cassandra with almost everything you have in your RDBMS working. So I guess it's possible after all.
Doctrine 的 ORM 是用于关系数据库的,这就是为什么它被称为对象关系映射器。与 Cassandra 等面向列的存储完全不同的概念。我会说让 Cassandra 进去的机会非常渺茫。
添加到存储和访问模式不一样的工作需要。
在 Doctrine 的生态系统中,有人编写了支持 MongoDB 和 CouchDB 的 ODM(对象文档映射器)——但面向文档的数据库也是一个不同的游乐场。甚至这两者也彼此非常不同,而两者都是面向文档的数据库。
我认为你无法说服任何人在这两个项目中接受 Cassandra。
就我个人而言,Cassandra 最大的亮点是节俭和相关,这是它带来的。话虽如此,这是我的个人观点,没有什么可以阻止您为 Cassandra 实现一个不错的 PHP 包装器。
我也认为没有理由不将您的 Cassandra 包装器作为自定义 Symfony 包等发布。
在 Symfony2 之后,许多人启动了独立于核心的项目,以提供包含附加功能集的捆绑包(例如,Symfony 之友)。因此,如果您想说服这一点,请继续并开始做一些事情(例如在 Github 上),看看它是如何被接收的。
cassandra 有一个活动的 PHP 客户端:https ://github.com/thobbs/phpcassa
从那里开始以避免直接与 Thrift API 搏斗。
我实际上是在为 Cassandra 寻找 Symfony2 捆绑包。Cassandra wiki 确实有用于 Cassandra 的 PHP 客户端。