Questions tagged «database»

该标签用于一般数据库问题。如果您对SQL有疑问,请改用该标记。

9
通过为每列设置预定义的数据类型,关系数据库能获得什么?
我现在正在使用SQL数据库,这一直使我感到好奇,但是Google搜索的机会并不多:为什么使用严格的数据类型? 我了解为什么会有几种不同的数据类型,例如区分二进制数据和纯文本数据很重要。现在,我知道将二进制数据存储为自己的格式比将二进制数据的1和0格式存储为纯文本要好得多。 但是我不明白的是拥有这么多种不同的数据类型的好处是什么: 为什么mediumtext,longtext和text? 为什么decimal,float和int? 等等 告诉数据库“此列的条目中只有256个字节的纯文本数据”有什么好处。或“此列最多可以包含16,777,215字节的文本条目”? 这是性能优势吗?如果是这样,为什么在事前知道条目的大小对性能有何帮助?或更确切地说是其他东西吗?

2
移动应用程序中的数据同步-多个设备,多个用户
我正在考虑构建我的第一个移动应用程序。该应用程序的核心功能之一是多​​个设备/用户将有权访问相同的数据,并且所有设备/用户都将具有CRUD权限。 我认为该体系结构应包含一个存储所有数据的中央服务器。设备将使用API​​与服务器交互以执行其数据操作(例如,添加记录,编辑记录,删除记录)。 我想象一个场景,其中的数据同步将成为一个问题。假定该应用程序在未连接到Internet时应能正常工作,因此无法与此中央服务器通信。所以: 用户A离线,并编辑记录#100 用户B离线,并编辑记录#100 用户C离线,并删除记录#100 用户C联机(大概记录#100应该在服务器上被删除) 用户A和B联机,但是他们编辑的记录不再存在 可能出现与上述类似的各种情况。 一般如何处理?我计划使用MySQL,但想知道它是否不适用于此类问题。
42 database  mysql  data  mobile 

6
为什么不从数据库以字符串形式返回日期?
在典型的Web应用程序中,从强类型的数据库层中检索日期(例如,在c#中为System.DateTime,与System.String相反)。 当日期需要表示为字符串时(例如,显示在页面上),则在表示层中完成从DateTime到字符串的转换。 为什么是这样?为什么将DateTime转换为数据库层上的字符串是一件坏事? 另请参阅聊天中激烈的辩论,以及引发所有这些问题的原始问题。

7
如果应用程序仅在本地执行操作,使用数据库服务器是否有意义?
我已经看到一些应用程序,它们基本上是在系统本地运行的应用程序软件(因此它们在网络上没有太多通信)。这些应用程序似乎依赖于数据库服务器来存储其数据。 应用程序的一个示例是Amarok(Linux上的流行音乐播放器)。我不知道他们是否仍会这样做,但我记得曾经有一段时间安装Amarok意味着您必须安装MySQL服务器并使其始终在后台运行。 与使用较小的嵌入式SQL解决方案(例如sqlite)相比,将服务器用于本地存储有什么优势?我说的是一般的应用程序软件,不一定是amarok(这只是一个例子)。与嵌入式数据库相比,在任何情况下使用数据库服务器都有意义吗?

3
我应该使用配置文件还是数据库来存储业务规则?
我最近在阅读《实用程序员》,其中指出: 细节弄乱了我们原始的代码,尤其是如果它们经常更改。每次我们必须修改代码以适应业务逻辑,法律或管理层的个人喜好时,都会冒着破坏系统的风险—引入新的错误。 亨特,安德鲁;托马斯·戴维(1999-10-20)。实用程序员:从《旅人》到《大师》(Kindle位置2651-2653)。培生教育(美国)。Kindle版。 我目前正在编程一个具有某些模型的Web应用程序,这些模型的属性只能来自一组值,例如(由于Web应用程序数据是机密的,因此不是实际示例): light-> type =球体/立方体/圆柱体 光源类型只能是上述三个值,但根据TPP,我应始终进行编码,好像它们可以更改并将其值放置在配置文件中一样。由于在整个应用程序中都发生过几次此类事件,因此我的问题是: 我是否应该在以下位置存储类似的值: 配置文件: 'light-types' => array(sphere, cube, cylinder), 'other-type' => value, 'etc' => etc-value 数据库中的一个表,每个配置项一行 一个数据库,其中每个配置项都有一个表(例如table light_types:; columns :id、name) 其他方式? 非常感谢您提供的任何帮助/专业知识。

4
实现零停机时间部署
我正在尝试实现零停机时间部署,因此在理论上,我可以在下班时间减少部署,而在“更慢”的时间内部署更多。 我当前的设置,有些简化: Web服务器A(.NET App) Web服务器B(.NET App) 数据库服务器(SQL Server) 我当前的部署过程: “停止” Web服务器A和B上的站点 升级数据库架构以获取正在部署的应用程序的版本 更新Web服务器A 更新Web服务器B 将所有内容恢复在线 当前问题 每月导致少量的停机时间-大约30分钟。我在下班时间这样做,所以这不是一个大问题-但这是我想摆脱的事情。 另外-没有办法真正退缩。我通常不制作回滚DB脚本-仅升级脚本。 利用负载均衡器 我希望能够一次升级一台Web服务器。从负载均衡器中取出Web服务器A,对其进行升级,使其重新联机,然后对Web服务器B重复上述步骤。 问题是数据库。我的软件的每个版本都需要针对不同版本的数据库执行-所以我有点“卡住了”。 可能的解决方案 我正在考虑的当前解决方案采用以下规则: 切勿删除数据库表。 永远不要删除数据库列。 切勿重命名数据库列。 切勿重新排列列。 每个存储过程都必须进行版本控制。 含义-编辑后,“ spFindAllThings”将变为“ spFindAllThings_2”。 然后在再次编辑时变成“ spFindAllThings_3”。 相同的规则适用于视图。 虽然,这似乎有点极端-我认为它可以解决问题。该应用程序的每个版本都将以不间断的方式访问数据库。该代码期望视图/存储过程产生某些结果-并使该“合同”有效。问题是-它只是马虎了。我知道我可以在应用程序部署一段时间后清理旧的存储过程,但是感觉很脏。另外-这取决于所有遵循这些规则的开发人员,这大部分都会发生,但是我想有人会犯错。 最后-我的问题 这是草率的还是朴拙的? 还有其他人这样做吗? 其他人如何解决这个问题?

8
我们是否应该删除数据库中的数据?
我是数据库新手,正在尝试了解基本概念。我已经学会了如何删除数据库中的数据。但是我的一个朋友告诉我,永远不要删除数据库中的数据。相反,当不再需要它时,最好将其标记或标记为“未使用”。 真的吗?如果是这样,那么像IBM这样的大公司将如何处理其一百年或更长时间的数据?

7
标准化所有数据库表上的创建日期和上次更新日期字段是否有意义?
我的老板目前正在尝试将一些开发标准应用到我们的团队中,因此昨天我们开会开会讨论了这些标准,在她提出之前,大部分进展顺利: 所有数据库表都将具有一个CreatedDate和LastUpdatedDate列,并通过触发器进行更新。 在这一点上,我们的团队意见分歧。我们中有一半的人认为,在所有工作台上执行此操作是一项大量工作,几乎没有收益(我们从事固定预算项目,因此任何成本均来自公司的利润);下半年相信它将对项目的支持有所帮助。 我坚定地在前阵营。尽管我很欣赏某些外部情况会导致多余的列提高可支持性,但我认为,首先添加列所需的工作量以及维护工作将使我们花费更少的时间进行更多的工作重要的事情,例如单元测试或负载测试。另外,我相当确定这些额外的列会使使用ORM变得更尴尬-请记住,我们主要使用C#和Oracle,但从一开始就对ORM不太满意。 因此,我的问题是双重的: 我在正确的营地吗?我并没有声称自己拥有享誉全球的数据库技能,因此这可能是一件容易的事,而且没有不利的副作用。 您将如何处理有关标准的会议演变为排渣比赛的情况?我如何才能真正卖出该标准不会长期帮助我们?

6
单元测试和数据库:实际上我应该在哪一点连接到数据库?
对于如何连接到数据库的测试类,例如“应该服务测试类如何连接...”和“单元测试-数据库耦合应用程序”,存在一个问题的答案。 因此,简而言之,假设您有一个需要连接到数据库的类A。您不给A实际连接,而是给A提供了A可以用来连接的接口。为了进行测试,您需要使用一些东西来实现此接口-当然不需要连接。如果类B实例化A,则必须将“真实”数据库连接传递给A。但这意味着B打开数据库连接。这意味着要测试B,您需要将连接注入B。但是B是在类C中实例化的,依此类推。 因此,在什么时候我必须说“在这里,我从数据库中获取数据,而我不会为这段代码编写单元测试”? 换句话说:我必须调用某个类的代码中的某个地方sqlDB.connect()或类似的地方。我如何测试这堂课? 并且与必须处理GUI或文件系统的代码是否相同? 我想做单元测试。任何其他类型的测试都与我的问题无关。我知道我只会用它来测试一门课(我同意你的基利安)。现在,某些类必须连接到数据库。如果我想测试该类并询问“我该怎么做”,许多人会说:“使用依赖注入!” 但这只会将问题转移到另一类,不是吗?所以我问,如何测试真正建立连接的类? 奖励问题:这里的一些答案归结为“使用模拟对象!” 这意味着什么?我模拟了被测类所依赖的类。我现在应该模拟被测类并实际测试该模拟(这与使用模板方法的想法很接近,见下文)?


12
有经验的程序员应该知道数据库查询吗?[关闭]
那里有很多程序员,他们也是查询编写和数据库设计方面的专家。 这是成为专家程序员或软件工程师的核心要求吗? 尽管查询和代码的开发方式有很多相似之处,但我个人认为,查询似乎与代码具有不同的结构,并且由于方法不同,很难同时掌握两者。
35 database  query 

6
在开发人员的便携式计算机上存储关键数据库的良好安全实践是什么?
我们有一些建议: 开发人员需要在其机器上复制生产数据库。 开发人员在App.config文件中具有所述数据库的密码。 我们不想破坏所说数据库中的数据。 一些建议的解决方案及其缺点: 全盘加密。这样可以解决所有问题,但会降低笔记本电脑的性能,而且我们是一家初创企业,因此没有钱购买动力强劲的产品。 使用加密的硬盘创建虚拟机,并将数据库存储在该虚拟机上。它运行良好,但并没有太大帮助,因为Web.Config中有一个密码。 解决方案2 +要求开发人员在每次运行任何操作时都要键入数据库密码。它解决了所有问题,但是对于开发人员而言,有时一分钟多次启动应用程序确实很麻烦。另外,我们有多个连接到同一数据库的应用程序,并且每个密码屏幕的实现都必须有所不同。 因此,我的问题是,是否有针对此类问题的通用解决方案,或有关如何使上述解决方案可行的建议?

1
SQLite数据库的实际最大实际大小是多少?
根据有关SQLite适当用法的这篇文章,它说,尽管SQLite的限制为140 TB,但客户端/服务器RDBMS可能会更好地工作: SQLite数据库的大小限制为140 TB(2 47字节,128 TB)。即使可以处理更大的数据库,SQLite也会将整个数据库存储在单个磁盘文件中,而许多文件系统将文件的最大大小限制为小于此大小。因此,如果您正在考虑这种规模的数据库,那么最好考虑使用一个客户机/服务器数据库引擎,该引擎将其内容分布在多个磁盘文件中,甚至可能分布在多个卷中。 总的来说,我同意这一点,但是得知SQLite的最大限制如此之高,我感到很惊讶!根据我的经验,我已经使用了许多SQL Server数据库,其大小约为30-100GB。我还间接使用Oracle,Postgres或Cassandra处理更大的数据库。其中,至少就我所知,没有一个接近140TB。我不是DBA,因此根据我的直接经验,我认为这是“大笔”的事情。 对于数据库很小的情况,我只考虑过SQLite。最多几十兆。 阅读本文后,我仍然不相信要考虑将SQLite用于可能需要数百GB数据的任何事情。但是我想知道我是否一直在低估它的功能。在实际使用中,SQLite数据库的实际最大大小限制是多少?

6
我应该为每个应用程序使用一个数据库还是在多个应用程序中共享一个数据库?
我有多个应用程序,其中一些使用来自相同来源的数据。最佳做法(或优点/缺点)是: 将数据保留在多个应用程序共享的数据库中 节省空间,因为只需要一个数据库 索引复杂化,因为不同的应用程序具有不同的查询需求 每天将数据导入每个应用程序数据库 每个应用程序数据库中存在重复数据,因此使用更多空间 索引更容易,因为每个应用程序都可以专注于其各自的需求 我可能遗漏了其他优点/缺点,请列出(如果有),在您的工作场所该如何做?

3
与以二进制存储等效消息相比,存储纯文本数据是否占用更少的空间?
作为一名Web开发人员,我对二进制数据了解甚少。 如果我使用句子“ Hello world。”,将其转换为二进制文件,然后将其作为二进制文件存储在SQL数据库中,似乎 1和0会比字母占用更多的空间。在我看来,使用字母有点像使用压缩,其中一个符号代表多个。 但这真的是这样吗? 与以二进制存储等效消息相比,存储纯文本数据是否占用更少的空间?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.