8000 数据库表中json字段使用的TEXT类型存储,是否尝试过存BLOB类型的NSData · Issue #24 · kanyun-inc/YTKKeyValueStore · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
数据库表中json字段使用的TEXT类型存储,是否尝试过存BLOB类型的NSData #24
Open
@yehot

Description

@yehot

使用过程中,发现单张table的大小有些夸张:
1、存储1万条数据,使用NSJSONSerialization转TEXT类型存储后的大小是4.4M;
2、改变表里存的json string数据类型为data后,改用NSKeyedArchiver将jsonObject转NSData,大小为61k;

请问是否有做过此类的测试?

测试代码如下:
YTKKeyValueStore *store = [[YTKKeyValueStore alloc] initDBWithName:@"test.db"];
NSString *tableName = @"zm_table";
[store createTableWithName:tableName];

// 测试存储 1万条数据的大小
NSString *key = @"1";
NSDictionary *user = @{@"id": @1,
                       @"name": @"tangqiao",
                       @"age": @30,
                       @"news": @"测试存储 1万条数据的大小测试存储 1万条数据的大小测试存储 1万条数据的大小测试存储 1万条数据的大小测试存储 1万条数据的大小",
                       @"detail":@"测试存储 1万条数据的大小测试存储 1万条数据的大小测试存储 1万条数据的大小测试存储 1万条数据的大小测试存储 1万条数据的大小测试存储 1万条数据的大小"};
NSMutableArray *array = [NSMutableArray array];
for (int i = 0; i < 10000; i++) {
    [array addObject:user];
}
NSDictionary *dict = @{@"news": array};

[store putObject:dict withId:key intoTable:tableName];

测试形式:
NSData * data = [NSJSONSerialization dataWithJSONObject:object options:0 error:&error];
NSData *data1 = [NSKeyedArchiver archivedDataWithRootObject:object];

NSLog(@"JSONSerialization Data Size = %@",
      [NSByteCountFormatter stringFromByteCount:data.length
                                     countStyle:NSByteCountFormatterCountStyleFile]);
NSLog(@"KeyedArchiver Data Size = %@",
      [NSByteCountFormatter stringFromByteCount:data.length
                                     countStyle:NSByteCountFormatterCountStyleFile]);

测试结果:
2016-03-23 10:40:14.154 YTKKeyValueStore[68148:2019750] JSONSerialization Data Size = 4.4 MB
2016-03-23 10:40:14.154 YTKKeyValueStore[68148:2019750] KeyedArchiver Data Size = 61 KB

谢谢!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0