虽然能够想像得到,但是直观的数据图可能让我们更深刻的认识到。他们的测试再一次告诉我们:给索引定一个好的数据结构是多么重要。 这是测试结果图,分别是用int、 MongoDB的ObjectID、base64和md5的字符串做索引产生的索引大小: file:///C:/Users/amhere/AppData/Local/Temp/moz-screenshot-2.pngfile:///C:/Users/amhere/AppData/Local/Temp/moz-screenshot-3.pngfile:///C:/Users/amhere/AppData/Local/Temp/moz-screenshot-4.pngfile:///C:/Users/amhere/AppData/Local/Temp/moz-screenshot-5.png
测试过程也非常简单,首先用下面脚本将各种不同数据结构的数据写入到不同的collection里: #!/usr/bin/env python import pymongo import bson from pymongo import Connection db = connection.test_database print('ObjectID') for i in range(1, 1000000): db.objectids.insert({'i': i}) print('int') for i in range(1, 1000000): db.ints.insert({'_id': i, 'i': i}) print('Base64 BSON') for i in range(1, 1000000): db.base64s.insert({'_id': \ bson.Binary(hashlib.md5(str(i)).digest(), bson.binary.MD5_SUBTYPE), 'i': i}) print('string') for i in range(1, 1000000): db.strings.insert({'_id': hashlib.md5(str(i)).digest(), 'i': i}) 然后获取每个collection的index大小,得到如下的结果,画成上面的图: > db.base64s.stats() { "totalIndexSize" : 67076096, } > db.objectids.stats() { "totalIndexSize" : 41598976, } > db.ints.stats() { "totalIndexSize" : 32522240, } > db.strings.stats() { "totalIndexSize" : 90914816, } 原文链接:How to save 200% RAM by selecting the right key data typefor #MongoDB
|