iPhone应用程序应该直接与cassandra后端通信吗?

Joe*_*Joe 0 json cassandra ios

显然,实现这样的事情有多个步骤和阶段.

我想我最终会有一个网络服务器从ios应用程序接收http json请求,然后查询cassandra后端并发回结果.我可以加载平衡和所有那些花哨的东西,并在服务器端提供逻辑层,并保持客户端应用程序轻量级.

我不确定我是否理解cassandra客户如何适合.似乎cassandra目标客户端可以消除对上述方法的需求.

我看到了另一个问题和答案,但它并不清楚,也许是因为它根据需要而变化.

Dan*_* S. 5

iPhone应用程序不应直接连接到Cassandra后端或任何其他数据库存储.

首先,与数据库交谈通常需要调整非常特定的二进制协议(特别是对于Cassandra,二进制CQL或Thrift).编写一个允许你的Objective-C应用程序在这个二进制协议中进行通信的适配器是一项重要的工作,并且可能比其他应用程序的成本更高.但是,如果将数据库隐藏在Web服务器后面,则可以从各种服务器端语言中提供的各种现有适配器中进行选择,这意味着您无需重做所有低级别的工作.您只负责一小部分服务器端代码,这些代码将转换您的REST查询并将其转发到其中一个Cassandra适配器(它提供易于使用的接口).

其次,如果您想从手机连接到远程数据库,您的数据库服务器必须打开其端口到整个互联网,这是一种非常糟糕的安全措施,即使您使用SSL和用户凭据也是如此.同样,如果你躲在网络服务器后面,你将会投入一层技术,这种技术已经发展了几十年,以便在公共互联网上保持安全.

最后,让你的手机直接与Cassandra对话是一种糟糕的建筑模式.当您编写在互联网上进行通信的应用程序时,您希望他们尽可能少地了解彼此,只知道如何相互通信(最好是在标准协议中).这样,您可以替换或升级单个组件,同时保持其他所有组件相同.这可能听起来不是很多,但实际上是手机或网络浏览器不直接与数据库通信的主要原因.(如果原则上这个设置是个好主意,那么前两个问题可以通过足够的工程努力轻松解决.)


您最初使用JSON和Web服务器建议的方法是唯一正确的方法.