NoSql选型:MongoDB值得选择(一)

这段时间需要验证一下非关系型数据的特性,于是做了一些简单的验证,后续还可能进一步做一些更为复杂的验证测试。即使是简单的测试,MongoDB给我留下了很好的印象,可以说是惊艳。
从我简单的测试情况来看,读写性能非常好。
服务器环境:suse11,4核cpu,8G内存。
public class MongoDemo
{
    
    public static DBCollection coll = null;
    
    public static void main(String[] arr)
    {
        
        String host="129.42.13.118";        
        Mongo m = null;
        try
        {
            m = new Mongo(host, 27017);
            DB db = m.getDB("resourceDB");//如果没有对应的users数据库,数据库会为此创建一个  
            //增加一个用户,密码需转换成字符数据  
            //db.addUser("mongo", "123456".toCharArray());
            //System.out.println(db.authenticate("mongo", "123456".toCharArray()));
            
            //如果没有对应的userCollection,数据库会创建一个  
            //coll = db.getCollection("btResCollection");
            
            coll = db.getCollection("resourceCollection");
            
            System.out.println("------------number of data-----------"
                    + coll.getCount());
            //buildData();//76054797    
                      
            System.out.println("------------number of data2-----------"
                    + coll.getCount());
         
        }
        catch (UnknownHostException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (MongoException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
   
    public static void buildData()
    {
        System.out.println("------------begin-----------");
        for(int k=0;k<10000;k++){
        for (int i = 0; i < 30; i++)
        {
            new MongoThread().start();
        }
          try
        {
            Thread.sleep(3000);
        }
        catch (InterruptedException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }
        System.out.println("------------end-----------");
    }
    
    public static DBObject findDBObject(String id)
    {
        ObjectId oid = new ObjectId(id);
        DBObject query = new BasicDBObject("_id", oid);
        return query;
    }
}

class MongoThread extends Thread
{
    
    @Override
    public void run()
    {
        
        for (int i = 0; i < 1000; i++)
        {
            long current = System.currentTimeMillis();
            DBObject resources = new BasicDBObject();
            resources.put("http", "http://sohu.com/pic?id="+i);
            resources.put("bt", "bhjgk14fjkeikeldoll");
            resources.put("out", i);
                   
            MongoDemo.coll.createIndex(new BasicDBObject("out", -1));  //升序1,-1降序
            MongoDemo.coll.insert(resources);
            System.out.println("------------monogdb insert need time-----------"
                    + (System.currentTimeMillis() - current));
        }
       
        
    }
}

我没有记录详细的测试数据,测试结果参考。

你可能感兴趣的:(thread,mongodb,NoSQL)