orientdb试用笔记

    之前没有了解过orientdb,无意发现这货在osc上更新挺频繁,以为只是一个小众玩意儿。后来看看它的官网描述,这东西简直我梦寐以求的DB,简单、方便、功能强大、几乎有关系型数据库和文档数据库的大部分优点,更可贵的是还有图形数据库的特性!

    其实我的要求很简单,我需要保存大量数据,如果它能做到持久化到硬盘上并且能保证快速查询就已足够。初步使用了一下,这点它基本满足要求。

    我的笔记本配置:I7CPU  、 240G金士顿SSD 、 4G内存  、 64位win8 

        

    OObjectDatabaseTx  db = new OObjectDatabaseTx("remote:localhost/test").open("xxx", "xxx");
		
		OClass clazz = db.getMetadata().getSchema().createClass("User");
                clazz.createProperty("name", OType.STRING);
		clazz.createProperty("sex", OType.STRING);
		clazz.createProperty("age", OType.INTEGER);
		clazz.createIndex("User.name", INDEX_TYPE.NOTUNIQUE_HASH_INDEX, "name");
		
		db.getEntityManager().registerEntityClass(User.class);
		
		for (int i = 0; i < 10000000; i++) {

			User user = db.newInstance(User.class);
			user.setName("kidbeixxx"+i);
			user.setAge(i);
			user.setSex("男");
			user.setAddress("address" + i);
			user.setEmail("email" + i);
			user.setShortName("shortName" + i);
			db.save(user);

     } }


保存一个简单对象到db,并设置了存储方式为plocal(对应的是memory)。

数据到300w之前保存无压力,磁盘IO在3M左右,内存在1G以内,CPU占用在5%左右,比较满意;

数据到400W时磁盘IO增加到60M左右,内存在1.2G左右,cpu占用在10%左右,基本翻了一倍;

数据到700W时磁盘IO增加到80M左右,内存在1.2G以上,cpu占用20%以上,机器已经开始嗡嗡作响,保存速度在3000/S,可以说很慢吗?

1000w数据保存完耗时半小时左右,这是不是有点慢了?不过比mysql要快是肯定的。

我建立了两条索引,name和age字段,1000w数据占用磁盘空间5G多,这是不是有点恐怖啊,跟mongodb一样的啊。。。不是说正式版对数据的压缩率挺高的吗?

为毛跟mongodb2.6的磁盘占用不相上下?有点小坑,不知道是不是我的配置问题。

    马上试试查询:

使用name查询,都是毫秒级响应,使用email等等查询都很慢。

使用name做like 'kidbeixxx%'查询,发现速度很慢,说明没有使用索引,并且cpu占用100%,my gold!!这算不算bug?受不了啊.......这是为什么尼?

不管怎样,orientdb现在满足我的需求,起码不用和mysql一样拆表,不错。

先记录到这里,继续更新吧.....



你可能感兴趣的:(orientdb试用笔记)