Questions tagged «database»

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

4
是否应该从页面本身抽象数据库查询?
当用PHP编写页面生成时,我经常发现自己写了一些乱七八糟的数据库查询文件。例如,我可能有一个查询来直接从数据库中获取有关帖子的一些数据以显示在页面上,如下所示: $statement = $db->prepare('SELECT * FROM posts WHERE id=:id'); $statement->bindValue(':id', $id, PDO::PARAM_INT); $statement->execute(); $post = $statement->fetch(PDO::FETCH_ASSOC); $content = $post['content'] // do something with the content 这些快速的一次性查询通常很小,但是有时我最终会遇到很大一部分数据库交互代码,这些代码看起来看起来很混乱。 在某些情况下,我通过创建一个简单的函数库来处理与帖子相关的数据库查询来解决此问题,并将该代码块简化为简单的代码: $content = post_get_content($id); 那太好了。或者至少直到我需要做其他事情为止。也许我需要获取五个最新帖子才能显示在列表中。好吧,我总是可以添加另一个功能: $recent_posts = post_get_recent(5); foreach ($recent_posts as $post) { ... } 但这最终会使用SELECT *查询,无论如何我通常通常并不需要它,但是它通常太复杂而无法合理地抽象。最终,我将获得针对每个用例的庞大的数据库交互功能库,或者在每个页面的代码中包含一系列混乱的查询。即使建立了这些库,我也会发现自己需要做一个以前从未使用过的小联接,而且突然我需要编写另一个高度专业化的函数来完成这项工作。 当然,我可以将这些功能用于一般用例和特定交互的查询,但是,一旦我开始编写原始查询,我便开始回落到直接访问所有内容的位置。要么这样做,要么我会变得懒惰,并且将开始在PHP循环中执行操作,无论如何,它们实际上应该直接在MySQL查询中直接完成。 我想问一下那些具有编写Internet应用程序的经验的人:可维护性的提高是否值得额外的代码行以及抽象可能带来的低效率?还是简单地使用直接查询字符串是处理数据库交互的可接受方法?

2
B树与R树相比-是不是一堆链接在一起的链表?
我对B树非常熟悉,主要是必须使数据库充满电力,空调和硬盘空间。我与一个双(doubl [ie,ey]?)链接列表相关联。 今天,午餐时的一位开发人员提到了R树。 我跳上维基百科,开始阅读。这听起来像高大的B树。不幸的是,由于缺乏深厚的数学背景,很难理解我的一些同事在谈论什么。 我希望有人能阐明B树和R树之间的一些区别。无论如何,我可能最终都会问这些家伙,但是不能保证他们会回答我的问题。他们很有可能会开始对上帝God不休,知道什么。。。

5
部署使用Microsoft新的LocalDB的应用程序需要什么?
我想知道什么新的LocalDB要在用户计算机上运行需要安装哪些Microsoft组件。 现在在CTP3中:SQL Server Express LocalDB LocalDB是SQL Server Express Edition的一种新的轻量级部署选项,具有较少的先决条件,并且安装非常迅速。对于需要嵌入式SQL Server数据库用于桌面应用程序或工具的开发人员而言,这是理想的选择。LocalDB具有与SQL Express相同的所有可编程性,但是它们与应用程序一起在进程内运行,而不是作为服务运行。它是SQL Server代码名“ Denali” CTP3下载的一部分。 以上是Microsoft网站CPT3中的新增功能 这听起来像是小型单用户桌面应用程序的理想SQL数据库。我试图找出我需要包含在安装中的内容。我想将其用作嵌入式数据库,但是我不知道是否需要安装任何Microsoft组件或确保以前已经安装了任何其他Microsoft组件。 有谁知道为了使此新LocalDB运行需要安装哪些Microsoft组件?是否有安装程序可以自动检测安装所需组件的存在?

9
是否有使用Mysql或PostgreSQL的大型银行?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我一直认为最大规模的银行使用Oracle。但是,没有证据表明他们真正使用Oracle而不是Mysql或PostgreSQL,没人知道这个秘密。 知道他们真正使用了什么吗?我可以使用Mysql建立一个可以进行数百万笔交易的ATM /银行系统吗?我可以使用PostgreSQL吗?还是只能使用Oracle?

4
不同类型的NoSQL数据库的缺点
这是我的问题:不同类型的NoSQL数据库有哪些弱点?具体来说,键值存储,图形数据存储和文档存储的弱点是什么? 我一直很容易找到优点,但是有关缺点的文档似乎很少。 编辑:相互比较,以及与关系数据库比较。

5
如何确定存储格式之间的区别,以及其中的一些示例用例?
我们有不同的方式来存储程序数据(在游戏,员工数据库,程序配置等中保存文件): 纯文本(.ini和.conf) XML格式 数据库(MySQL,SQLite ...) .zip 包含多个文件(格式不同)的类似文件 二进制文件(.doc例如,由序列化工具创建的文件等) 上面列出的格式有哪些不同的用例,它们的优点与缺点(考虑速度,灵活性,文件大小,易用性...)之间有什么分别?如何在不同任务之间做出决定? 关于压缩格式:仅用于包含其他文件。它也可以是另一种压缩格式。这允许几个文件的结构,包括图像文件,声音文件和文本文件。例如,假设您有一种消息的存储格式,其中可能包含文件。压缩文件中可以包含以下文件: message.txt (containing the message) attachments (folder containing attachments) audio.wav picture.jpg

22
软件开发人员面试问题-公平还是不公平[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我刚刚通过电话采访了一家公司的研究生软件开发人员职位,并被问到以下问题。我还要补充一点,有关的公司不是数据库供应商。 查询优化器如何工作? 如果数据库的性能不佳,您将如何使用性能日志来找出问题所在。 我在第一次电话采访中问过他们是否向所有候选软件开发人员(研究生或有经验的人)提出这样的问题。他们回答说,他们喜欢测试候选人的数据库开发知识。 我想写信给该公司,说在软件开发人员面试中问这些问题是不合理的,并要求完成我的面试。 我想检查以下假设的合理性 a)这些问题不能公平地归类为数据库开发问题。 b)我认为这些问题适合DBA面试,但完全不适合软件开发人员面试(无论有没有经验)。 c)第一个问题仅与数据库供应商有关。 d)第二个问题是不公平的,因为软件开发人员通常不处理数据库性能日志,因为这是DBA的工作。 在写信给公司之前,也许有些人会对我的假设发表评论,或者有其他建议。

2
如何使用多个应用程序实例安全地运行数据库迁移?
我们有一个应用程序,它既有快速的迁移(<1秒)又有缓慢的数据库迁移(> 30秒)。现在,我们正在将数据库迁移作为CI的一部分来运行,但是我们的CI工具必须知道我们的应用程序(在多个环境中)的所有数据库连接字符串,这并不理想。我们希望更改此过程,以便应用程序在启动时运行自己的数据库迁移。 情况如下: 我们有此应用程序的多个实例-在生产中大约有5个实例。我们称他们为node1, ..., node5。每个应用程序都连接到一个SQL Server实例,并且我们不使用滚动部署(就我所知,所有应用程序都是同时部署的) 问题:说我们的迁移时间很长。在这种情况下,先node1启动,然后开始执行迁移。现在node4开始,并且长时间运行的迁移尚未完成,因此node4也开始运行迁移->可能的数据损坏?您将如何预防该问题,或者该问题甚至足够重要而值得担心? 我当时正在考虑使用分布式锁(使用etcd或类似的方法)解决此问题。基本上,所有应用程序都尝试获取锁,只有其中一个可以获取并运行迁移,然后解锁。当其余的应用程序启动并进入关键部分时,所有迁移都已运行,因此迁移脚本将退出。 但是,我的直觉是说:“这太过分了,必须有一个更简单的解决方案。”因此,我想问一下这里是否有其他更好的主意。

2
要存储库还是不存储库
当我第一次了解域驱动设计时,我还被介绍到了存储库和工作单元模式,这些存储模式和工作单元曾经看起来像是那些酷炫的孩子向数据库发送SQL查询(例如穴居人)的最佳选择。我对这个话题的了解越深,我越了解到它们似乎不再是必需的了,因为EF和NHibernate之类的ORM将工作单元和存储库都实现到一个称为会话或上下文的API中。 现在我不确定该怎么办。是否存储库。我真的很理解这样的论点,即这样的泄漏抽象只会使事情复杂化,而绝对没有增加任何可以简化数据访问的内容,但是,将我的应用程序的各个方面都耦合到例如Entity Framework的感觉并不正确。通常,我遵循一些简单的准则: 域层是系统的核心,包含实体,服务,存储库... 基础结构层提供基础结构领域的域接口的实现,例如文件,数据库,协议。 应用程序层承载一个组合根,该根将所有事物连接起来并进行编排。 我的解决方案通常如下所示: Domain.Module1 Domain.Module2 IModule2Repo IModule2Service Module2 Infrastructure.Persistence Repositories EntityFrameworkRepositoryBase MyApp Boostrapper -> inject EntityFrameworkRepositoryBase into IRepository etc. 我使用a保持域层整洁,IRepository<'T>这也是一个域问题,不依赖于任何其他告诉我如何访问数据的内容。当我现在要实现IModule2Service需要数据访问的具体实现时,我将不得不注入DbContext并将其直接耦合到基础架构层。(要进入Visual Studio项目,由于循环依赖关系,最终可能会非常棘手!) 另外有什么可以到其他托管和作品fucktons?CQRS?如何抽象一个纯粹的基础架构?

3
我应该如何封装数据库访问权限?
有哪些用于管理数据库访问的良好类结构的示例?我是类封装的迷,并且希望容器(例如car)不执行数据库任务。 我还希望将来能够轻松放入数据库缓存之类的功能。 我经常采用容器类的模式,并结合使用getter和setter来进行验证和由单个singleton类执行的数据库访问。话虽这么说,这常常在两者之间混在一起并且变得非常混乱。 对不起,如果我的问题很难理解;我对数据库的术语不是绝对确定。如果需要,请随时要求澄清。
10 c++  database 

2
键值存储中的项目过期算法是什么?
我在考虑当前的键值存储如何实现项目的“到期日期”。目前,我有2种变体供您选择: 他们什么也不做(保留过期的数据),并且只在您执行操作时检查,例如,通过某些键进行GET。这里的问题是,如果您的内存有限,则过期的项目将不会被删除。 它们保留了其他数据结构,以便能够“最早过期”。我看到可以通过以下方式完成: storage_data = dict(key -> [value, expire_timestamp]) expire_tree = SomeBinaryLikeTree(expire_timestamp -> [keys])

3
如何存储大量的_structured_数据?
该应用程序将连续(大约每秒)收集用户的位置并将其存储。 该数据是结构化的。在关系数据库中,它将存储为: | user | timestamp | latitude | longitude | 但是,数据太多。每个用户每天将有60×60×24 = 86,400条记录。即使有1000个用户,这也意味着每天86,400,000条记录。 每天不仅有86,400,000条记录。因为这些记录将被处理,并且它们的处理后的版本也将被存储。因此,将该数字乘以大约2。 我打算如何使用数据 本质上,我计划对位置数据进行更粗粒度的处理,以便于使用。那是: 对接收到的带有时间戳的数据进行排序。 依次浏览此列表,确定位置是否发生了重大变化(通过查看经度和纬度发生了多少变化) 将不重要的位置更改表示为输出中的单个条目(因此,输出是位置数据的粗粒度版本)。 通过要求更大的纬度和经度更改以进行重大更改,对输出进行迭代处理。因此,从先前输出产生的输出将更加粗糙。 根据需要重复整个过程。 汇总一系列分辨率并将其发送给用户。另外,存储数据的所有分辨率以供以后使用。 我应该用什么来存储这些数据?我应该使用关系数据库还是NoSQL解决方案?设计此应用程序时,我还应考虑哪些其他事项?

3
数据库中域逻辑的时代结束了吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我最近偶然发现了2016年的这一观点,说数据库中仍然存在领域逻辑的情况。 我认为这完全是过时的。我只是想知道那家伙是否​​仍然生活在90年代,或者这真的是真的。保留旧系统。 由于安全性要求,在数据库中包含域逻辑该怎么办?那真的是一件事吗?
9 database 

4
在DAL和BLL层之间分离检索数据和业务对象
在发布此问题之前,我做了一些研究。在其他问题或帖子中,下面提供其中一个。我不清楚如何确定。 数据访问层中的业务对象 我有一个存储库,业务层调用该存储库以检索数据。例如,说我有以下BLL和DAL类: class BllCustomer { public int CustomerId {get; set;} public String Name {get; set;} public BllAddress Address {get; set;} } class BllAddress { public int AddressId {get; set;} public String Street {get; set;} public String City {get; set;} public String ZipCode {get; set; } } class DalCustomer { …

6
就我而言,MongoDB是正确的选择吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 6年前关闭。 我将在Rails中构建我的第一个真实项目,该项目包含一个由3个主要部分组成的网络应用程序: 不使用数据库的静态部分 用户注册部分将需要一个数据库,我可以使用MySQL,因为每个用户的行将具有相同的字段 用户可以在其中创建,组织,编辑...项目的“应用”,并与其他用户共享 将有几种项目类型,每种类型都有不同的选项,例如,我可能有带有以下选项的“视频”项目: ID 用户身份 collection_id 标题 平台(如果嵌入式) 网址(如果已嵌入) 文件名(如果托管在我的应用程序中) 文件大小(我的应用程序上托管的ID) 和“地图”项: ID 用户身份 collection_id 标题 平台(谷歌地图,必应地图...) 位置 网址 地图尺寸 对于用户,我可能会使用MySQL作为项目,因此MongoDB的灵活性可能会很有用,因为每个项目可能需要与另一个项目不同的选项 到目前为止,我一直使用PHP和MySQL(始终在小型项目的共享主机上使用),而可扩展性对我来说是一个全新的词。 我有时间学习,但我希望能够在1个月内完成一些具体的工作。 我已经阅读了很多有关MongoDB和NoSQL以及RDMS和MySQL的文章,尝试之后,我不得不说我喜欢MongoDB的工作方式:没有表,没有行以及它的文档JSON像这样: 在我的情况下,您会推荐什么?为什么? 关于可伸缩性,MongoDB可能存在问题?如果是的话(以数据库大小计),是否会出现这些问题,从而使我的应用程序速度大大降低? 编辑:应用程序将如何工作 由于许多人问这是我希望该应用程序如何工作: 用户注册 他已登录 他创建了自己的第一个收藏系列,可以创建无限的物品 项目是各种类型的,每种类型需要在数据库中保存不同的数据,并且可以添加或修改项目的类型 用户可以在其中创建其他集合和项目。 因此,对于集合及其内部的项目,我们都有CRUD,每个集合/项目都针对特定的用户 MySQL的主要问题是它没有灵活的架构,有办法解决这个问题(解决方法?)? 考虑NoSQL时,我唯一的疑问就是联接,例如,鉴于某个特定的选择,我想检索与集合中id = user_id的User相关的数据 编辑:继续使用MySQL的想法 在“项目”表中创建带有可选设置的字段,每个设置均用|分隔。或其他符号。 然后,我将在某处保存每个项目的可选设置的结构,例如,“ notes”项目类型需要两个可选设置“ colour”和“ strange_setting”,当我从MySQL获取数据时,我会将可选设置的字段拆分为一个知道数组中的第一项是用于“颜色”的,依此类推。 …

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.