欢迎投稿

今日深度:

mongodb 实现关系型数据库中查询某一列 的效果,

mongodb 实现关系型数据库中查询某一列 的效果,mongodb数据库


最近在tornado\mongodb\ansible


mongodb中有个find()方法很牛逼,可以将集合中所有的表都传出来,一开始我这么写


class Module_actionHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        coll = self.application.db.waitfish
        hosts = coll.find({}, {'hostname':1,"_id":0})
        modulenames = ['ping', 'setup', 'copy']
        self.render(
            "module_action.html",
            hosts = hosts,
            modulenames = modulenames,
        )

然后在模板中:

<select name="hostname">
                {% for host in hosts %}
                <option name="{{ host['hostname'] }}" >{{ host['hostname'] }}</option>
                {% end %}
</select>

后来想了想find()方法是找出所有的表,这太伤不起了..

于是又去看了度娘,基本上都是列出一大堆查询命令,好多中方法的.

最后我还是选了这一种:

class Module_actionHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        coll = self.application.db.waitfish
        hosts = coll.find({}, {'hostname':1,"_id":0})#解释一下,这里hostname:1 表示返回hostname列,由于_id列每次都返回所以用0禁用掉,模板还一样
        modulenames = ['ping', 'setup', 'copy']
        self.render(
            "module_action.html",
            hosts = hosts,
            modulenames = modulenames,
        )



关系型数据库Oracle的数据导入非关系型数据库mongodb

首先要确定,你们为什么需要将关系型数据库中的数据导入到NoSql数据库中?是为了达到什么样的需求才这么做的。

我也是做开发的,我推荐以下几点,不要尝试将关系型数据库转换为非关系型数据库:
1、节约维护成本;
2、软硬件成本。Mongodb存储数据需要更多的存储空间。(当然,相对不同系统,硬件的配置也不尽相同);
3、为分布式而分布式;
4、从软件角度上,单纯为了提高IO的速度而进行转换;

如果非要强行移植,那么需要考虑一下几点:
1、Mongodb的维护以及灾备需要相对专业的开发人员担当(如果你们的运维就会,就当我没说过),因为许多Mongodb的配置都需要一些简单的javascript语法支持的,开发人员会比较容易上述;
2、Mongodb是“非关系”型的,所以以严格遵守范式所设计的关系型数据库进行移植时,需要考虑多表查询的效率。一般来讲,关系表要对数据进行冗余才能达到高效率的查询。你只能通过代码的方式将多个主表和关系表连同一个数据查询表一同维护,增加的代码复杂度是显而易见的。
3、关系型数据库中很多特性在Mongodb中都没有,在移植之前必须要考虑清楚。例如自增主键、联合主键(可以用唯一索引代替)、相关驱动和连接方式等等(本人用的mssql,所以只能举mssql的例子。);
4、因为Mongodb使用的是操作系统自身的文件存储系统对存储介质进行操作和维护的,所以会在频繁进行增、删操作时产生磁盘碎片。(开发人员不用太关系这个);
5、最后要说道一下Mongodb的查询,如果你的关系型数据库中之前有很多的多表连接查询(3张以上),则请不要尝试移植。否则只能参考2进行操作才能达到性能和效率最大化;
 

mongodb的问题

mongodb作为非关系型数据库是没有连接查询的。可以在用户信息的collection里增加一个发帖数字段,每次插入帖子的时候更新一下这个字段,这样可以保证查询效率,本来mongodb查询就比更新快很多,为了快速查询需要一些冗余牺牲一下插入性能。在数据量比较大的collection中用count操作,如果符合条件的结果很多,效率不是很高
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2260.html NewsArticle mongodb 实现关系型数据库中查询某一列 的效果,mongodb数据库 最近在tornado\mongodb\ansible mongodb中有个find()方法很牛,可以将集合中所有的表都传出来,一开始我这么写 class Module_actionHandler(...
评论暂时关闭