web-dev-qa-db-ja.com

モバイルアプリ用のNoSQL

ネイティブモバイルアプリケーション(Androidおよび/またはiO)の開発に使用する確立されたnoSQLデータベースソリューションはありますか?

62
Jeff

ネイティブモバイルアプリ用のestablishedNoSQLバックエンドはないと思いますが、Couchbase MobileはiOSとAndroidの両方を実装した素晴らしいNoSQLデータベースです。

iOS: http://www.couchbase.com/products-and-services/mobile-couchbase

Android: https://github.com/couchbase/couchbase-lite-Android

27
Drew

leveldb は、ブロックの新しい子供です。 BigTableによく似たキー/値ストアですが、組み込みデバイス向けに設計されています。彼らのライセンスはNew BSDであり、東京内閣のLGPLよりもはるかに優れています。

非常に高速で、Xcodeからすぐにビルドできます。

16
steipete

モバイルOS用の東京内閣港があったとしても、私は驚かないでしょう。しかし真剣に、NoSQLはeveryプラットフォームに既に含まれているSQLiteライブラリを何に引き継ぐのでしょうか?

  • 単純なセマンティクス。 NoSQLデータベースと同様に、SQLでキー/値を実行するのは簡単です
  • スケーラビリティ。マルチペタバイト対応の携帯電話は、モバイルプラットフォームとしての資格がありません。
  • 些細なシャーディング。電話のクラスターはまだあまり人気がありません
  • 小さな実装。 tokyoキャビネットのソースコードは4.8MB、SQLiteは4.7MBです。本当のゲインはありません(そして、それは既に存在します)。

つまり、必要に応じてSQLiteを「小さなNoSQL」として使用できます。それも非常に高速です。

11
Javier

編集:( 2016年4月)

レルムは、最近の方法です。


まだ興味がある人は、TokyoCabinetの次の2つのラッパーを見つけました。

とにかく、LevelDBの方が優れていると思います。

10
Raspu

CouchDB は、同期機能のため、モバイルアプリのNoSQL DBとして頻繁に宣伝されています。 Mobile Couchbase のベータリリースもあります。

5
yojimbo87

for Androidこれがあります:

https://github.com/rehacktive/waspdb

今のところアルファ段階ですが、 あなたの要求に合うかもしれません。

5
aw4y

SnappyDB はAndroid向けの非常に優れたNoSQLオプションのようです。 SQLiteに対する読み取り/書き込みベンチマークは非常に素晴らしいです。

4
tejasbubane

iBoxDBは、AndroidとWindows Phoneの両方を実装した高性能のNoSQLデータベースです。使いやすく、設定が不要で、コピーして実行できます。
for Java Android https://github.com/iboxdb/forjava
for.net Windows Phone https://iboxdb.codeplex.com/

2
Bruce

Objective-Cで書いた新しいものはSimpleDBです。キー/値ストアであり、ここにあります: http://github.com/AaronBratcher/SimpleDB

格納される値はJSONである必要があるため、ソートを実行し、データの特定の部分を返すことができます。

特別な機能

  • 非常に使いやすい-SQLは不要です!
  • 指定した日付以降のエントリの自動削除オプション
  • クラスを使用するためにデータベースと直接対話する必要はありません-すべてを実行します
  • すべてのメソッドはクラスレベルのメソッドであるため、クラスのインスタンスは不要です
  • スレッドセーフ

API

+(BOOL) hasKey:(NSString*) key inTable:(NSString*) table;
+(NSArray*) keysInTable:(NSString*) table;
+(NSArray*) keysInTable:(NSString*) table orderByJSONValueForKey:(NSString*)jsonOrderKey passingTest:(BOOL (^)(NSString* key, NSString* value, NSDate* dateAdded, NSDate* dateModified));

+(NSString*) valueForKey:(NSString*) key inTable:(NSString*) table;
+(NSDictionary*) dictionaryValueForKey:(NSString*) key inTable:(NSString*) table;
+(id) jsonValueForKey:(NSString*) jsonKey tableKey:(NSString*) key inTable:(NSString*) table;

+(void) setValue:(NSString*) value forKey:(NSString*) key inTable:(NSString*) table;
+(void) setValue:(NSString*) value forKey:(NSString*) key inTable:(NSString*) table autoDeleteAfter:(NSDate*) date;

+(void) deleteForKey:(NSString*) key inTable:(NSString*) table;

+(void) dropTable:(NSString*) table;

+(dbStatus) status;
+(NSString*) guid;
0
Aaron Bratcher