web-dev-qa-db-ja.com

iOSのコアデータの代わりにMongoDBを使用できますか?

MongoDBやCouchDBなどのNoSQLテクノロジーについて読み始めたところです。 CoreDataアプリケーションの代わりにMongoDBまたは実際にNoSQLテクノロジーを使用できるかどうかを知りたいです。

コアデータアプリケーションは、特にアプリが複雑で、単純な追加、編集、削除、クエリ(CRUDのもの)を実行したい場合は、学習と実装に長い時間がかかる可能性があります。

JSONのように見え、非常に高速に実行できるように見えるためです。 NoSQL over CoreDataの実装に興味があります。

MongoDBをネイティブとして実行できますか?私はいくつかのグーグル検索をしましたが、私が求めている特定の答えを実際に得ることができませんでした。

といった:

IPhoneプラットフォームでのNoSQLの送金が何であるかわかりませんが、サポートされていますか?NoSQLを使用してアプリを送信すると、Appleチームによって拒否されますか?

ありがとう

23
zardon

余談ですが、これはよくある誤解ですが、CoreDataはデータベースシステムではありません。

代わりに、必要に応じてオプションとして永続的に追加されたランタイムオブジェクトグラフ管理システムです。その主な機能は、Model-View-Controllerデザインパターンのモデルレイヤーを提供することです。そのため、ディスクにデータを出し入れするだけではありません。

Core Dataには学習曲線がありますが、私の経験では、多くの人が直面する最大の障害は、CoreDataをSQLのオブジェクト指向ラッパーとして扱うことです。その観点から、Core Dataは、永続性とは関係のない多くのことを学ぶ必要があるように思われるため、非常に混乱しています。

SQLite、MongoDB、CouchDBなどのデータベースを永続化に使用しても、実際にはまったく速度が上がりません。ディスクのデータの取得方法とディスクからのデータの取得方法についてはよく理解できますが、データと関係の管理にはまったく役立ちません。他のデータオブジェクトとUIのオブジェクトに。それでもデータモデルが必要であり、それらすべてを手作業でコーディングする必要があります。データモデルが非常に単純でない限り、コアデータの学習よりも時間がかかります。

Core Dataを学習する最良の方法は、オブジェクトグラフを永続化できるという事実を無視することです。アプリのデータモデルを表すオブジェクトがたくさんあり、それらの属性と関係を管理する必要があるという観点から始めてください。

21
TechZen

MongoDBはおそらくここには適していません。サーバーは、ディスク容量が制限要因ではないと想定しています。現在のstabelbrance(1.6.x)は、単一のインスタンスでデータの耐久性を提供しません。また、専用サーバーでは問題ないメモリマップファイルを使用しますが、通常のPCでは大量のディスクチャーンと不要なメモリ使用が発生します。 Core Dataの経験はありませんが、私には中途半端なニッチのように思えます。

4
John F. Miller

MongoDBは、組み込みデータベースとして使用するようには設計されていません。速度とスケーラビリティを重視して設計されており、IOSなどの組み込みOSのアーキテクチャに適合する可能性はほとんどありません。ただし、HTTP/Sなどの標準プロトコルを介して「クラウド」内のMongoDBでサポートされているサービスと通信することは問題にはなりません。 MongoDBの前にWebゲートウェイを作成する必要があります。

3
Andreas Jung

これは本当に古い質問だと思いますが、とにかく答えを出そうと思いました。 CouchbaseにはSyncPointと呼ばれるソフトウェアスイートがあります。これには TouchDB が含まれます。これは、iOSでネイティブに実行され、インターネットでアクセス可能なCouchDBインスタンスと同期するように構築されたCouchDBのビルドです。

2
Travis James

MongoDB Mobileは、MongoDBデータベースの小型バージョンであり、モバイルおよびIoTデバイスで実行するように最適化されています。

MongoDB Mobileは、次の2つのコア部分で構成されています。

デバイス上でローカルに実行され、データへのオフラインアクセスを可能にするMongoDBデータベースのモバイル向けに最適化されたバージョン。ネイティブJava(Android)およびSwift(iOS))SDKは、低レベルのデータベース操作を管理し、MongoDBMobileおよびStitchバックエンドと対話するためのメソッドを提供します。

https://docs.mongodb.com/stitch/mongodb/mobile/mobile-features/

1

CouchDBX http://www.couchone.com/get は、CouchDBをOSXアプリにバンドルするCocoaアプリケーションです。

1
macarthy

このために、私はObjCMongoDBをお勧めします。 MongoDBとBSONのライブラリです:

https://github.com/paulmelnikow/ObjCMongoDB

機能

  • 辞書を使用した単純なBSONエンコーディングおよびデコーディング。

  • 配列、辞書、埋め込みオブジェクト、文字列、数値、日付、オブジェクトID、およびその他のMongoDBタイプの組み込みサポート。

  • NSCoderのキー付きコーディングスキームに基づく、より複雑なエンコードとデコード。堅牢なデリゲートインターフェイスを使用すると、必要に応じて、モデルクラスの外部でエンコードとデコードを完全に実装できます。

  • CoreDataエンティティを自動的にエンコードおよびデコードします。コーダーのデリゲートインターフェイスを使用して、デフォルトの動作をカスタマイズするか、エンティティクラスに代替動作を実装することができます。

  • モンゴのようではなく、ココアのように感じることを目指しています。たとえば、MongoKeyedPredicateとMongoUpdateRequestのメソッド名は、Cocoaでは自然ですが、基になるMongoキーワードに準拠していません。

0
Rincha

良い質問。 Core Dataはスキーマと移行に関連付けられているため、NoSQLデータベースで使用しても意味がありません。

私はまだこれらのどれも試していませんが、そこにいくつかの主張された解決策があります:

  • Mobile Couchbase 死んでいるようですが、Couchbaseは取り組んでいます TouchDB —大きなプレーヤーからは有望に見えます
  • IRL Gaming 持っているようです 独自に作成 (オープンソースではありません)(おそらくチタン固有)
  • キー/値ストアに問題がない場合は、東京キャビネットに基づく TSDocDB とLevelDBに基づく NuLevelDB があります。

ぜひチェックしてみてください。

0
Simon Woodside