MongoDB-mongodb的二维空间索引,使用的是什么数据结构 mongo和mysql索引有什么不同
MongoDB-mongodb的二维空间索引,使用的是什么数据结构
您好,很高兴为您解答。
参考下:http://www.dewen.io/q/61如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
mongo和mysql索引有什么不同?
Mongodb和Mysql索引选型
1)首先两种数据库都选择平衡m叉树作为底层索引结构,因为平衡树m叉树是同种元素序列情况下的深度最小的m叉排序树。这可以减少m叉树元素查找的深度,从而提升平均查找效率。B树和B 树都是平衡m叉树。
2)Mongodb选择B树为索引结构,Mongodb是典型的非关系行数据库,设计之初就不会用来做多个遍历操作,那么如果要查询单条数据的话只要进行一次中序遍历,查到与叶子上数据相同的节点即可。
3)Mysql是典型的关系型数据库,选择B 树的原因是所有再也节点的数据都有前后关系,因为有链指针,由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。因此任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当,B 树的查询效率更加稳定。而且把所有同一内部节点的关键字存放在同一盘块中,这样磁盘容纳的关键字数量也越多,一次性读入内存的需要查找的关键字也就越多,相对IO读写次数就降低了。
java mongodb的正确使用方法!
private Mongo mog = null
02 private DB db = null
03 private DBCollection dbc = null
0 05 /**
06 * 构造方法
07 */
08 public MongoTest(){
09 //实例化Mongo 会默认连接你的数据库
10 try {
11 mog = new Mongo()
12 } catch (UnknownHostException e) {
13 e.printStackTrace()
14 } catch (MongoException e) {
15 e.printStackTrace()
16 }
1 18 //得到MyTest数据库,如果不存在会自动创建
19 db = mog.getDB("MyTest")
20
21 //得到集合,相当于其他数据库的表,如果没有也会自动创建
22 dbc = db.getCollection("table1")
23 }
做梦也很累
2.这个是我查询table1集合中所有的数据,如果table1不存在的话它会自动创建,
01 public void selectAll(){
02 System.out.println("查询table1中的所有数据:")
0 04 //得到查询
05 DBCursor cur = dbc.find()
0 07 //遍历结果
08 while(cur.hasNext()){
09 System.out.println(cur.next())
10 }
11 }
做梦也很累
3.这个是插入一条文档的方法,这些name/title/age/等等都是你随便添加的,哪怕你第一次添加三个、第二次添加一个、第三次添加10个都没有问题,
01 public void insert(){
02 DBObject msg = new BasicDBObject()
0 04 //赋值
05 msg.put("name", "qlier")
06 msg.put("age", "21")
07 msg.put("sex", "男")
08 msg.put("email", "xiuxu123@live.cn")
0 10 //保存数据,获取影响行数
11 int result = dbc.save(msg).getN()
1 13 System.out.println("插入结果:" result)
14 }
做梦也很累
4.这个是删除的方法,删除是要说的,它可以根据_id删除,这个_id是系统生成的,这个是很重要的一个标示,我们删除的时候可以根据它删除也可以根据其他的删除。
01 public void updateById(){
02 //要修改的_id
03 DBObject msg1 = new BasicDBObject("_id", new ObjectId("4f3b26b5f8293433e7043e4d"))
0 05 //要修改的值
06 DBObject msg2 = new BasicDBObject()
07 //如果这一个文档很多字段,你就修改一个字段,那么其他的字段会被删除
08 msg2.put("name", "Qlier1")
0 10 //修改name,如果name值不存在会重新添加这天数据
11 int result = dbc.update(msg1, msg2).getN()
1 13 System.out.println("修改结果:" result)
mongodb和memcache哪个快
1、性能
都比较高,性能对我们来说应该都不是瓶颈。
总体来讲,TPS 方面 redis 和 memcache 差不多,要大于 mongodb。
2、操作的便利性
memcache 数据结构单一。(key-value)
redis 丰富一些,数据操作方面,redis 更好一些,较少的网络 IO 次数,同时还提供 list,set,
hash 等数据结构的存储。
mongodb 支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。
3、内存空间的大小和数据量的大小
redis 在 2.0 版本后增加了自己的 VM 特性,突破物理内存的限制;可以对 key value 设置过
期时间(类似 memcache)
memcache 可以修改最大可用内存,采用 LRU 算法。Memcached 代理软件 magent,比如建立
10 台 4G 的 Memcache 集群,就相当于有了 40G。 magent -s 10.1.2.1 -s 10.1.2.2:11211 -b
10.1.2.3:14000 mongoDB 适合大数据量的存储,依赖操作系统 VM 做内存管理,吃内存也比较厉害,服务
不要和别的服务在一起。