我是 Android 应用程序开发的新手,也是 stackoverflow 的新成员。我目前正在尝试设计一个食谱应用程序。我已经决定了应用程序的功能及其涵盖的范围。就涵盖来自世界各地的所有食谱而言,范围对我来说非常广泛。在这个过程中我要处理大量的数据。
我目前正在尝试找出一种处理应用中数据的好方法。到目前为止,根据我在不同论坛上阅读的内容,我相信我在数据库选择方面有两种选择:1)SQLite 2)远程服务器上的数据库(MySql/Postgre)
以下是我在两者之间做出决定时的一些想法:
1) SQLite:这可能是一个不错的选择,但会很慢,因为它需要访问文件系统。我可以通过在 AsyncTask 中执行数据库数据获取任务来消除缓慢。但是,不同手机上的存储可能会受到限制。此外,我相信与使用远程数据库相比,使用 SQLite 会更容易。
2) 远程数据库:我在这里看到的问题是多个数据库请求同时出现的速度很慢。我可以在这里以某种方式使用线程来对多个请求进行排队并一一处理吗?有没有一种有效的方法来做到这一点。
一旦我从上述数据库中提取数据,我还有一个关于数据格式的问题。有没有办法可以保留我的数据格式?
如果有人能分享他们对上述情况的知识渊博和专家意见,我将不胜感激。这对我来说也不是功课,我也不是在寻找任何现成的代码解决方案。我只是在寻找可以帮助我理清思路并帮助我做出决定的提示/建议。我一直在寻找这个一段时间,但无法找到具体信息。我希望我能从可能遇到过类似情况的有经验的人那里得到一些好的建议。
感谢您阅读这篇长文。
最佳答案
将这两种方法结合起来怎么样?
具有最近最少使用收据的本地 SQLite 数据库,因此您不需要一直使用网络。网络比访问文件系统慢。
通过一些 HTTP 接口(interface)访问的一些远程数据库,您可以在其中读/写整个数据库。如果您希望用户能够添加收据以供其他用户查看,则无论如何您都需要一个外部数据库。
SQLite : This could be a good option but would be slow as it would need to access the file system.
访问本地数据库非常快,如果只是对小型数据库进行简单的只读查询,则需要 5 毫秒左右。
But then there could be a limitation of the storage on different phones
取决于您对大型数据库的定义。如果它只有 2MB 就可以存储大量纯文本收据。
Also I believe using SQLite would be easier as compared to using a remote DB.
是的,Android 有一个不错的内置 SQLite API,但没有远程数据库 API。而且您不需要设置数据库服务器和接口(interface)。
The issue that I can see here is the slowness with multiple DB requests coming at the same time.
体面的数据库服务器可以处理数千个请求。取决于您的服务器硬件和软件。 https://dba.stackexchange.com/应该有更多的信息。所需的性能取决于您拥有/期望的用户数量。
我建议为您的数据库提供一个简单的 REST 接口(interface),因为它非常轻量级,但不会将您的数据库直接暴露给网络。有吨tutorials和 books关于创建这样的数据库接口(interface)。甚至还有像 nextDb 这样的托管数据库服务。为您完成大部分工作。
Is there a way I could preserve the formatting of my data ?
您可以将 HTML 格式的数据存储在数据库中,并将其显示在 WebView 中。或 TextView (通过 Html#fromHtml() ) - 两者都可以显示格式化文本。
数据库不关心您存储的文本类型,为了通过 Internet 传输,您可能需要对文本进行编码,使其不会干扰传输格式(XML、JSON、...)。
关于android - 具有海量数据的 Android 应用程序的最佳数据库设计选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12027852/
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在使用Rails3.1并在一个论坛上工作。我有一个名为Topic的模型,每个模型都有许多Post。当用户创建新主题时,他们也应该创建第一个Post。但是,我不确定如何以相同的形式执行此操作。这是我的代码:classTopic:destroyaccepts_nested_attributes_for:postsvalidates_presence_of:titleendclassPost...但这似乎不起作用。有什么想法吗?谢谢! 最佳答案 @Pablo的回答似乎有你需要的一切。但更具体地说...首先改变你View中的这一行对此#