Meilleure conception de Base de données de l'option pour l'application Android de données énorme
Je suis nouvelle dans le Développement d'Applications Android et un nouveau membre à stackoverflow. Je suis en train d'essayer de concevoir une recette de l'application. J'ai décidé sur les caractéristiques de l'application et de la portée qu'elle couvre. Le champ d'application est très vaste pour moi en termes de couvrir toutes les recettes de tous les coins du monde. Je suis à traiter avec un grand nombre de données dans ce processus.
Je suis en train d'essayer de comprendre un moyen efficace de traiter les données de mon application. Jusqu'à présent, que par ce que j'ai lu dans différents forums, je crois que j'ai deux options en termes de choix de la base de données : 1) SQLite 2) Base de données sur serveur distant (MySql/Postgre)
Suivants sont quelques-unes des réflexions qui ont été se passe dans ma tête quand il s'agit de prendre une décision entre les deux :
1) SQLite : Ce pourrait être une bonne option, mais serait aussi lent qu'il aurait besoin d'accéder au système de fichiers. J'ai pu éliminer la lenteur en effectuant DB extraction de données des tâches dans l'AsyncTask. Mais il pourrait y avoir une limitation de l'espace de stockage de téléphones différents. Aussi je crois que l'aide SQLite serait plus facile par rapport à l'utilisation d'une distance DB.
2) à Distance de la Base de données : Le problème que je vois ici, c'est la lenteur avec plusieurs DB demandes à venir en même temps. Puis-je utiliser les threads ici, d'une certaine façon à la file d'attente de plusieurs demandes et les traiter un par un ? Est-il un moyen efficace pour ce faire.
Aussi j'ai une question de plus en termes de la mise en forme de mes données une fois que je les sors de la au-dessus de la DB. Est-il une manière que je pourrais conserver la mise en forme de mes données ?
Je serais reconnaissant si quelqu'un pouvait partager leur connaissance et commentaires des experts sur le scénario ci-dessus. Aussi ce n'est pas un travail pour moi et je ne suis pas à la recherche pour n'importe quel prêt solutions de code. Je suis juste à la recherche de conseils/suggestions qui pourraient m'aider à effacer de mes pensées et m'aider à prendre une décision. J'ai été à la recherche pour ce pour un certain temps maintenant, mais n'a pas été en mesure de trouver des informations concrètes. J'espère que je vais obtenir quelques bons conseils ici d'expérience de personnes qui pourraient avoir rencontré une situation similaire.
Merci d'avoir lu ce long post.
Vous devez vous connecter pour publier un commentaire.
Qu'en combinant ces deux approches?
Un local de base de données SQLite qui a le moins récemment utilisé des recettes de sorte que vous n'avez pas besoin de réseau de tous les temps. Le réseau est beaucoup plus lent que l'accès au système de fichiers.
Une certaine distance de la base de données accessible via HTTP interface où vous pouvez lire /écrire la totalité de la base de données. Et si vous souhaitez que les utilisateurs soient en mesure d'ajouter des recettes pour d'autres utilisateurs de voir vous aurez besoin d'une base de données externe, de toute façon.
De l'accès à une base de données locale est assez rapide, 5ms ou si c'est juste une simple lecture seule requête sur une petite base de données.
Dépend de votre définition de l'immense base de données. Il est correct si c'est seulement de 2 mo qui serait suffisant pour stocker beaucoup de texte-seulement des recettes.
Oui, Android a une belle intégré dans SQLite, API, mais pas à distance de la base de données de l'API. Et vous n'avez pas besoin de configurer un serveur de base de données & interface.
Un décent serveur de base de données capable de gérer des milliers de demandes. Tout dépend de votre serveur matériel & logiciel. https://dba.stackexchange.com/ devrait avoir plus d'infos à ce sujet. De performance requis dépend de la façon dont beaucoup d'utilisateurs /attendre.
Je vous suggère une simple interface REST de votre base de données car il est très léger, mais ne pas exposer votre base de données directement sur le web. Il ya des tonnes de tutoriels et livres sur la création de telles interfaces de bases de données. Il y a même des bases de données hébergées services comme nextDb que font la plupart du travail pour vous.
Vous pouvez stocker des données au format HTML dans votre base de données et l'afficher dans un
WebView
ou unTextView
(viaHtml#fromHtml()
) - les deux peuvent afficher du texte formaté.Les bases de données ne se soucie pas de ce type de texte que vous magasin, pour les transférer sur les internets, vous pouvez avoir besoin d'encoder le texte afin de ne pas interférer avec le transport, la mise en forme (XML, JSON, ...).
Un moyen simple est d'intégrer Analyser dans votre application. Ils ont un joli cadre que s'intègre facilement à iOS et Android. Leur plan est freemium, de sorte que vous serez en mesure d'utiliser jusqu'à 1 million de demande d'API, gratuitement, et puis ses 7 cents pour chaque demande par la suite.
Vous aurez 1 go pour stocker tous vos ensembles de données /images, etc.
Je n'utilise pas l'analyser pour tout, mais j'ai FORTEMENT recommandé pour les grandes données les régimes parce qu'ils font tous la mise à l'échelle pour vous. Découvrez la API, je pense qu'il serait utile de votre temps.
Je viens de commencer à travailler sur quelques-uns de mes projets, et je suis à l'aide d'Analyser de nouveau. Je dois dire que c'est beaucoup amélioré au cours de la dernière 6 à 8 mois. Surtout avec le Twitter et Facebook de l'intégration.
La question clé ici est la taille des données - de toute base de données de recettes serait trop grande pour stocker sur le téléphone à mon humble avis,ce qui vous semble coincé avec la télécommande solution de base de données.
Plutôt que d'essayer d'accès à la base de données à distance à partir d'android je vous suggère d'utiliser un un aller entre l'application web qui permettra de traiter les demandes de l'application et de retour JSON objets dont vous avez besoin.
Cela dépend entièrement de vos besoins logiciels. Si vous avez besoin de traiter avec une petite quantité de données, alors vous pouvez choisir de SQLite, mais pour une quantité énorme de données à mieux utiliser une télécommande DB.
SQLite: Il fonctionne très bien avec peu de quantité de données & je l'ai vécu le temps de réponse est bonne.
Distance DB: je pense que vous pouvez utiliser de petites côté serveur d'application pour envoyer les données à votre application cliente. Il permettra de résoudre/réduire votre fil de questions/complexités.