SnappyDB是一个应用于Android的键值数据库。如果你想使用一种NoSQL方法,它不失为一个很不错的SQLite替代品。
它可以让你以一种安全的方式存储和获取原始类型,一个Serializable对象或数组。
SnappyDB在读写操作方面比SQLite要做的好。
使用方法
try {
DB snappydb = DBFactory.open(context); //create or open an existing database using the default name
snappydb.put("name", "Jack Reacher");
snappydb.putInt("age", 42);
snappydb.putBoolean("single", true);
snappydb.put("books", new String[]{"One Shot", "Tripwire", "61 Hours"});
String name = snappydb.get("name");
int age = snappydb.getInt("age");
boolean single = snappydb.getBoolean("single");
String[] books = snappydb.getArray("books", String.class);// get array of string
snappydb.close();
} catch (SnappydbException e) {
}
SnappyDB你可以无妨的存储和检索对象和数组,它使用Kryo序列化,这比普通的Java序列化要更快。
更多使用方法请查阅Cookbook
安装
SnappyDB为了性能使用本地代码,它可以作为一个 Android Library Project ? ? AAR 使用。
dependencies {
compile 'com.snappydb:snappydb-lib:0.5.2'
compile 'com.esotericsoftware.kryo:kryo:2.24.0'
}
或者
手动方法:
下载JAR文件和其他文件夹
将所有的文件和文件夹放到你Android项目的libs子文件夹下
libs
├───|── snappydb-0.5.2.jar
|── armeabi
│ └── libsnappydb-native.so
├── armeabi-v7a
│ └── libsnappydb-native.so
├── mips
│ └── libsnappydb-native.so
└── x86
└── libsnappydb-native.so
Cookbook
创建默认名字数据库
DB snappydb = DBFactory.open(context);
创建命名数据库
DB snappydb = DBFactory.open(context, "books");
使用生成器模式
DB snappyDB = new SnappyDB.Builder(context)
.directory(Environment.getExternalStorageDirectory().getAbsolutePath()) //optional
.name("books")//optional
.build();
关闭数据库
snappydb.close();
销毁数据库
snappydb.destroy();
插入原始类型
snappyDB.put("quote", "bazinga!");
snappyDB.putShort("myshort", (short)32768);
snappyDB.putInt("max_int", Integer.MAX_VALUE);
snappyDB.putLong("max_long", Long.MAX_VALUE);
snappyDB.putDouble("max_double", Double.MAX_VALUE);
snappyDB.putFloat("myfloat", 10.30f);
snappyDB.putBoolean("myboolean", true);
读取原始类型
String quote = snappyDB.get("quote");
short myshort = snappyDB.getShort("myshort");
int maxInt = snappyDB.getInt("max_int");
long maxLong = snappyDB.getLong("max_long");
double maxDouble = snappyDB.getDouble("max_double");
float myFloat = snappyDB.getFloat("myfloat");
boolean myBoolean = snappyDB.getBoolean("myboolean");
插入序列
AtomicInteger objAtomicInt = new AtomicInteger (42);
snappyDB.put("atomic integer", objAtomicInt);
插入对象
MyPojo pojo = new MyPojo ();
snappyDB.put("my_pojo", pojo);
读取序列
AtomicInteger myObject = snappyDB.get("atomic integer", AtomicInteger.class);
读取对象
MyPojo myObject = snappyDB.getObject("non_serializable", MyPojo.class);
插入数组
Number[] array = {new AtomicInteger (42), new BigDecimal("10E8"), Double.valueOf(Math.PI)};
snappyDB.put("array", array);
读取数组
Number [] numbers = snappyDB.getObjectArray("array", Number.class);
检查Key
boolean isKeyExist = snappyDB.exists("key");
销毁Key
snappyDB.del("key");