欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-14 21:22:12
...
这段时间需要验证一下非关系型数据的特性,于是做了一些简单的验证,后续还可能进一步做一些更为复杂的验证测试。即使是简单的测试,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));
        }
       
        
    }
}

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