1
kenneth 2012-12-01 22:28:18 +08:00
盛大云,贵所以垃圾。推荐appfog,可以去看看,免费。
|
2
remaerd OP @kenneth 我现在就在用 AppFog + MongoLab 的办法。Web 客户端通过 NodeJS 的 Mongo ODM 访问数据库。然后 iOS 客户端直接使用 MongoLab 的 REST API。
我主要是担心数据访问速度问题,如果数据库在 AWS,是否有什么办法加速在中国的访问速度? |
3
eric 2012-12-01 22:53:10 +08:00 2
@remaerd 如果应用(AppFog)和数据库(MongoLab)都在 AWS 的同一个 region,后端数据访问速度根本不会成为瓶颈,把前端优化做好在上个 CDN 问题一般就能解决一大半了。
如果应用在 US East 而数据库在国内那才是杯具:来自国内的请求会到 US East 的应用那里,然后又得在美帝和景德镇的数据库之间往返多次,最后再从美帝发回相应,已经能绕地球几圈了。 |
4
lonelybug 2012-12-02 00:02:30 +08:00
Mongodb一开始我准备采用,后来发现多少有些不成熟,他没有自己的内存管理机制,完全依靠系统的虚拟内存来映射,也就是说你如果删除记录的话,你内存的占有量不会减少,只是回标记可用。
而对于一些需要Aggregate的数据集合处理,他还没又提供足够好的机制,目前的运行javascript来MapReduce对于很多场景来说都很难。 你要想好了。成熟的MySQL还是没什么问题的,尝试新技术的代价是不小的,你最好准备好一套应急备份机制。 |
5
remaerd OP |
6
lonelybug 2012-12-02 00:47:07 +08:00
你用ios上的代码直接访问数据库?如果是的话。即便是restful也是很危险的。而且你之后的优化和应急处理很可能会非常痛苦。我建议你至少用http方式来让ios和你后应用层通信。至少灵活性提升不少对你日后维护也方便很多。
|
7
remaerd OP @lonelybug 你的意见是,我的 iOS 需要访问数据,不可以使用 Mongo 提供的 API,必须自行用 NodeJS 写一套 API 吗?Web 端的话,就是完全通过 NodeJS 写的后端访问数据库的,但为了节省途径流量, iOS 端是通过 MongoDB 提供的 REST API 直接访问数据库的。
因为我的项目比较特殊,iOS 端并不需要对数据库进行 Write 操作,大部分 Write 都是 Web 端的事情,所以我可以提供一个只读的 Key,让 iOS 端通过这个端口读取数据,这样就避免了黑客获得 Key,然后直接对数据库进行 Write 操作。 因为经验不足,无法想象优化和应急处理方面我能遇到什么样的困难。如果您能够花时间跟我说说就太好了。我也想知道一下这方面的资讯。 谢谢。 |
8
remaerd OP @lonelybug 经你提醒,现在才发现原来 REST API 的 Key 只能有一个,不能单独生成一个只读的 API Key,太恐怖了。看来我得重新考虑了。
|
9
hepochen 2012-12-02 19:22:34 +08:00
@remaerd RESTful也还是在程序员自己的掌控范围内,对于任何的key的处理,都在你自己的控制范围之内。
如果只读性比较多的话,并且项目并不是很大的话,可以考虑试试 https://www.parse.com/ AWS的话,选中东京节点,其实速度还可以的,特别是api性质的口子,这个速度足够足够了。 如果直接使用Mongodb提供的REST API,注意隔离敏感性信息就可以了,最好是完全隔离读写的权限;如果给普通的用户写的权利,务必让他只写到一些扩展的document中,并且注意容错。 |
10
lonelybug 2012-12-02 23:09:50 +08:00
你如果已经有Web层的东西来提供数据读写的话,你可以直接用iOS NSURLConnection产生HTTP的POST或者GET来访问你的web层的数据接口。
比如,你有一个API的地址是http://www.YourWebSite.com/list_user,然后这个返回得失XML或者JSON。你就可以直接在iOS里面解析返回内容来达到访问。当然,如果你的设计有很好的分离UI和业务逻辑那么这个地址同样也可以用HTML里面的javascript进行访问然后解析内容。 但是至少iOS直接访问数据库是一件非常危险的事情! |
11
remaerd OP |