|
正好最近在用MongoDB,而且对驱动也有些想法,所以在这里简单说一下,不对的地方欢迎指正
1)如何实现NoSQL数据库驱动程序?可以以MongoDB或Redis为例,不限于这两种NoSQL。
看了大家之前的发帖,其实有一个讨论我挺感兴趣的就是NOSQL的驱动要不要支持SQL?我个人的感觉是,虽然是NOSQL,但是还是可以支持SQL语句的。为什么?因为成本问题,我们公司现在在使用MONGODB,而且我仿照HIBERNATE开发一套API供大家使用,但是实际使用之前,还是要对大家进行培训,而且对个别API的理想也不会那么深刻。如果可以直接使用SQL语句进行查询的话,那大家起来起来是不是更舒服些呢?而且大家之前对SQL语句的调优的经验也可以多多少少的用在这里。但支持SQL这块可以不用放在驱动里,驱动我的理解是只有提供方便的访问NOSQL的API就可以了,支持SQL的这块可以放在驱动层和业务逻辑层的中间,做成一个缓存层(一般NOSQL都是作为缓存使用,直接当DB使用当然可以);这样可以让开发人员感受不到NOSQL的存在,只要下一条SQL,缓存层就会把数据返回给我,至于数据是来自DB,还是来自NOSQL,是由缓存层决定的。
啰嗦了这么多,总结一下,我对如何实现NOSQL驱动的理解就是只有API使用方便,性能高就可以,目前MONGODB的JAVA驱动中Cursor部分的部分方法性能就不高,最近打算自己改一下。
2)在设计NoSQL数据库驱动程序时,主要应考虑哪些因素?
1.是API的方便使用。这点MONGODB的驱动个人感觉不是很好,在实现某些复杂的查询时,嵌套过多,且有时不知API要怎样使用才能下出这个复杂的查询。
2.性能。这是一个很关键的方法,由于NOSQL与普通DB的不同,有时会某一些方法会被调用很多次,所以一些性能上设计不好的地方在数据量很大的时候就会表现的很明显。
3)一个完整的NoSQL数据库驱动程序,应该包含哪些功能点?
其实上面两点也已经谈到了,就是使用方便,以及性能较好 |
|