2

アプリの仕組み

現在、5 つの地域での活動を調査するためのアプリが開発中です。各アクティビティは、かなりの量のプロパティを持つ JS オブジェクトとして表されます。アクティビティは、カテゴリやマップなど、それぞれのタブでさまざまなフィルターを介して表示できます。各メイン フィルター内には、日付、地域、アクセシビリティなどでフィルター処理するオプションがあります。

チャレンジ

デバイスに保存する必要がある JSON は多数あり、iOS と androidの両方のサポートが必要です。最良のシナリオでは、データがデータベースと同期している必要があり、すべてのデータがデバイスで利用可能である必要があります。優れたエクスペリエンスを得るには、アプリが機敏である必要があります。これは、データの取得をできるだけ高速にする必要があることを意味します。さらに、データのフィルタリングは、できるだけ迅速に行う必要があります。

これまでに検討された実行可能な解決策 (まだ完全には解決されていません)

MongloDB Titanium Store アダプターを使用したMongloDB 、特効薬?

このアプローチは、最初は特効薬のように思えました。このプロジェクトは有望に見えますが、1 人の英雄的なハッカーによって維持されており、プロジェクトにはいくつかのドキュメントが必要です。ソースを調べて、API をハッキングしましたが、今度は console.log と jasmine のテストが役に立ちませんでした。さらに重要なことは、まだ完全に完成しておらず、MongoDB に比べて機能が不足していることです。すばらしいプロジェクトです。このプロジェクトがさらに普及し、将来、絶望的なチタン開発者を支援できるようになることを願っています。

JSONDB、iOS のみ

このアプリは、iOS と Android の両方のプラットフォームで動作する必要があるため、これを試す理由はありません。さらに、JSONDB は単一のコンテキスト内でのみ機能するため、これも深刻な懸念事項です。

Ti ファイルシステムと JSON.stringify + JSON.parse、メモリ効率が悪い

アプリの機能でもある、保存されたアイテムの小さなリストを保存するための実行可能なソリューション。しかし、他の投稿では、JSON メソッドの使用に伴うメモリ制限を超える問題が Android で指摘されています。これは私の問題の中で最も小さいものではないかもしれませんが、全体的なメモリ効率は大きな問題になるでしょう. Titanium のファイルの読み取りと書き込みのパフォーマンスのベンチマークを見たことがないので、読み取りと書き込みがどれほど大きな影響を与えるかはわかりません。大きなオブジェクトのフィルタリングも大きな問題です。アンダースコアはこの種の大きなデータを処理しません。大きなオブジェクトを反復することは、私がどのアプローチを選択しようとも大きな問題です。

大きなお尻のグローバル オブジェクト

ファイルシステムと実質的に同じアプローチですが、グローバルに保持するだけです。これには同じ問題があり、単なる非倫理的な慣行です。

SQLite、うんざり

高度に文書化された JSON データを SQlite に変換すると、サムスン ギャラクシー ファンボーイよりも悪いように聞こえます。これに関するフィードバックはありますか?

複数のファイル + 維持する SQLite + 遅延ロード、ユニコーン、レインボー?

解決策を切望しているので、この投稿を書いている途中で何かに気付くかもしれません。おそらく10から16のメインカテゴリーがあり、それぞれに1から4のサブカテゴリーがあります。サブカテゴリのすべてのアクティビティを独自のファイルに保持します。これは非常にスリムな JSON です。カテゴリをブラウズすると、各サブカテゴリが独自の TableViewSection でレンダリングされ、各サブカテゴリは、ユーザーがどれだけ下にスクロールされたかに基づいてテーブルに個別に追加され、コンテンツの効果的な遅延読み込みが行われます。非常に高速に読み取られるファイルが 1 つだけあります。このビュー内で、さらにサブフィルターを追加すると、既に読み込まれているアイテムのみに影響を与え、このアイテムを反復することは合理的に手頃な価格です。

データの更新も非常に効果的で、変更される可能性のあるファイルのみが更新されます。SQLite データベースは、有効期限のあるすべてのアクティビティの日付を維持でき、今後 7 日または 1 か月の独自の JSON ファイルを動的に構築できます。これにより、ほとんどの使用においてカレンダー ビューが非常にスムーズになります。ただし、将来の日付を選択するのは悪夢です。

やはりマップは難しい…

これをすべて読んだ場合は、ありがとうございます。似たようなことを経験したことがある場合、または何かに夢中になっている可能性がある場合は、お気軽に返信してください。私は執筆をやめ、コーディングをやめ、眠りにつく必要があります。

4

3 に答える 3

3

くだらないモングロブのドキュメントで申し訳ありません。私はいくつかの内部プロジェクトのために開発し、コミュニティと共有したいと思っていましたが、ドキュメントがないために使いづらくなっています。しかし、私は今ドキュメントを持っている素晴らしいニュースです笑また、ソースコードをスリムにしてクリーンアップしました。それが今あなたにとってよりうまくいくことを願っています。http://monglodb.com

于 2012-10-12T03:54:55.900 に答える
3

私は JSONDB の最初の作成者であり、Googlefuを介してこの質問を見つけた人に立ち寄って回答を提供すると考えました。

JSONDB は非推奨のソフトウェアになりました。SculeJSという別のプロジェクトに置き換えられました。SculeJS は、Titanium、NodeJS、および Web アプリで使用するために、純粋な JavaScript で記述されたフル機能の NoSQL データベースを提供することを目的としています。

JSONDB は当初、Ti ネイティブ モジュールの構築方法に制限があったため、iOS アプリケーションでのみ使用できました。JSONDB と SculeJS の現在のバージョンは、iOS アプリと Android アプリの両方と互換性があります。

多くの点で MongloDB と SculeJS は似ていますが、相違点は SculeJS の設計方法にあります。SculeJS は、MongoDB を直接移植するというよりも、豊富なクエリ レイヤーを備えた強力で汎用的なデータ構造を提供することを目的としています。Monglo を侮辱するつもりはありません。素晴らしいソフトウェアのように見えますが、2 つのプロジェクトの意図の違いを指摘したかっただけです。

補足として、すべての純粋な JavaScript モジュールは、Titanium アプリケーション内の単一の実行コンテキストに制限されています。

あなたが構築しているものについては、MongloDB、JSONDB、SculeJS、および TaffyDB がすべて機能すると思いますが、実装の詳細はわずかに異なるだけです。

于 2013-01-22T02:32:25.783 に答える
2

私は同じ問題に遭遇していました。アプリと一緒に保存したいデータが約 5 MB あり、ダウンロードさせませんでした。

最終的に、高性能の SQLite データベースにたどり着きました。あなたが思うほど悪くはありません。それは良い解決策ではないかもしれませんが、選択肢がないため、非常に良い解決策です。

いくつかのテーブルと、それらをデータベースに解析するための関数を作成するだけで、その逆も可能です。満足することを約束します。

JSON をデータベースに保存しないでください。値は適切に保存してください。

于 2012-09-21T09:58:51.950 に答える