Questions tagged «database-development»

8
创建我自己的数据库系统
我需要学习数据库如何工作才能更有效地使用它们,而我的学习方式就是这样做。 我想创建自己的数据库系统。我并不是指创建一个使用查询来解析文件的伪数据库;这只是带有查询语言的文件系统接口。我说的是数据库引擎的实际结构。而且由于我的想法既不是关系型的也不是面向文档的(如果存在的话,它就是“面向节点的”),所以我需要任何资源尽可能抽象和高级。 那么我将如何去创建它呢?我可以阅读哪些资源/教程/书籍以了解? 语言一点都不重要。理想情况下,该代码应为伪代码以说明该概念,而不是与特定语言绑定,而是可以执行任何操作。我无法在Google上找到关于此事的任何信息(因为我对这个问题非常不了解,也许我只是没有输入正确的搜索字词)。 如果没有这样的资源,那么我想关于如何创建客户端的事情至少是朝正确方向迈出的一步。

2
双向数据同步的最佳实践/模式
在我的工作中,经常会出现数据库系统之间的2路数据同步的想法。经典示例是两个稍微不同的CRM系统(例如,Raiser's Edge和Salesforce),并且需要在它们之间进行双向联系人数据同步。 撇开API的考虑,假设您有一个要同步的共享密钥,并且纯粹考虑要使用的算法/模式,这是非技术人员经常低估的一项任务。 例如,您必须当心: 您可以轻松地检测到两个系统中的哪些记录已更改(或者您必须比较两个系统之间的所有记录以检测更改) 如果要进行每N小时一次的同步,那么在两个系统中相同记录或多或少同时发生更改的情况下,如何处理冲突 如果您要进行实时同步(例如,一个系统中的更新会立即触发另一个系统的更新),如何处理由于错误或系统崩溃而导致的时间差异。 我个人可以考虑解决所有问题的方法,但是我想知道是否可以参考任何众所周知的模式,文献或最佳实践。

11
将应用程序逻辑放入数据库层的论据是什么?[关闭]
大多数软件开发人员都希望将应用程序逻辑保留在应用程序层中,对于我们而言,将其保留在此处可能很自然。数据库开发人员似乎希望将应用程序逻辑作为触发器和存储过程放在数据库层中。 就个人而言,我希望在应用程序层中保留尽可能多的内容,以使其更易于调试,并使各层的职责分开。 您对此有何想法,应该或不应该在数据库层中实现什么? 编辑从DBA角度来看,此问题也包含在dba.se上。由于programmers.se和dba.se的受众和偏见不同,因此未来的读者可能希望先对这两套答案进行审查,然后再确定最适合他们的答案。

8
域驱动设计是一种反SQL模式吗?
我正在研究域驱动设计(DDD),尽管我对此进行了更深入的了解,但有些事情我还是没有。据我了解,主要要点是将域逻辑(业务逻辑)与基础结构(数据库,文件系统等)分开。 我想知道的是,当我遇到非常复杂的查询(例如材料资源计算查询)时会发生什么?在这种查询中,您需要使用繁重的集合操作,这是SQL设计的目的。在域层内部进行这些计算并使用其中的许多集合就像丢弃SQL技术一样。 在基础架构中也无法进行这些计算,因为DDD模式允许在基础架构中进行更改而无需更改域层,并且知道MongoDB不具有SQL Server等相同的功能,这是不可能发生的。 这是DDD模式的陷阱吗?


8
前端优先或后端优先。这两个是好的系统设计实践?
我现在有一个客户,要求我开发学校注册系统。现在,这是我第一次遇到这种挑战。我创建的大多数过去的软件都没有那么复杂。 我知道你们大多数人都已经创建了复杂的软件,我只想就此提出建议。我应该先设计前端还是后端? 谢谢! 这是我前一段时间在互联网上找到的一篇文章的结论。只想分享 http://www.skitoy.com/p/front-end-vs-back-end-developers-my-take/157 前端与后端开发人员(我的看法) 我个人的看法 同样,这是一个培训问题,一些广泛的笔画概括: 前端开发人员 通常没有CS学位,或者没有三级学校的CS学位。 使用与基本语言类似的语言(请参阅PHP是基本语言) 具有将photoshop文档转换为CSS / HTML / etc的视觉技巧。 由于使用无类型语言,因此对迭代编程具有较高的容忍度 后端开发人员 有CS学位或丰富经验 在他们的问题解决方法上趋向于我 不要介意花几天时间寻找一个正在泄漏的物体 尝试构建工具来解决问题

9
主键应该是不变的吗?
一个关于计算器最近的问题引起了有关主键的不变性讨论。我以为主键应该是不变的,这是一种规则。如果有一天某天可能会更新主键,我认为您应该使用代理键。但是,它不在SQL标准中,某些RDBMS的“级联更新”功能允许更改主键。 所以我的问题是:拥有可能会更改的主键是否仍然是一种不好的做法?拥有可变主键有何弊端?

8
在数据库中存储地理地址/位置的通用方法是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 什么是地理地址/位置的正确格式,最适合地球上的任何地址?目前,我有: 国家 市 街 数 文本数据(为简单起见) 压缩 纬度/经度 但是我相信我可以改善它:一个国家或地区或地区之类的东西。或在新加坡或香港没有区域/地区/州。 可能没有街道,但道路,林荫大道或其他东西。许多建筑物可能是复合的。可能有地板。房间号。等等....

3
双向同步的冲突解决
假设连接并不总是可用的,您如何管理“主”数据库服务器和许多“辅助”服务器之间的双向同步,特别是解决冲突? 例如,我有一个移动应用程序,该应用程序使用CoreData作为iOS上的“数据库”,并且我希望允许用户在没有Internet连接的情况下编辑内容。同时,此信息可在设备将连接到的网站上找到。如果/当两个数据库服务器上的数据发生冲突时,该怎么办? (尽管我知道CoreData有点不同,但我将其称为DB服务器。) 是否有处理此类问题的一般策略?这些是我可以想到的选项: 1.始终将客户端数据用作更高优先级 2.与服务器端相同 。3.尝试通过标记每个字段的编辑时间戳并进行最新编辑来解决冲突。 尽管我敢肯定,第三个选项会为破坏性的数据破坏打开空间。 我知道CAP定理与此有关,但是我只想最终保持一致,所以不能完全排除它,对吗? 相关问题:双向数据同步的最佳实践模式。对这个问题的第二个回答说,这可能无法完成。

7
编写自己的数据访问/数据映射层是“好”主意吗?
当前,我们处于选择使用现成的对象关系映射器或滚动自己的关系的情况下 我们有一个遗留应用程序(ASP.NET + SQL Server),其中数据层和业务层不幸地混在一起。该系统在数据访问方面并不是特别复杂。它从一大组(35-40)相互关联的表中读取数据,在内存中进行处理,然后以摘要格式将其保存回其他表中。现在,我们有机会进行一些重构,并且正在寻找可用于分离和正确构建数据访问的候选技术。 无论我们决定采用哪种技术,我们都希望: 在我们的域模型中具有持久性忽略的POCO对象 有一个抽象层,使我们可以根据模拟的基础数据源对域模型对象进行单元测试 显然,在模式和框架等方面已经有很多东西。 我个人正在推动将EF与ADO.NET单元可测试存储库生成器/ POCO实体生成器结合使用。它满足了我们的所有要求,可以轻松地捆绑在Repo / UnitOfWork模式中,并且我们的数据库结构相当成熟(已经进行了重构),因此我们不会每天对模型进行更改。 但是,小组中的其他人则建议完全从头开始设计/发布我们自己的DAL。(自定义DataMappers,DataContext,存储库,无处不在的接口,过分依赖以创建具体对象,自定义LINQ到底层查询翻译,自定义缓存实现,自定义FetchPlan实现...),该列表不胜枚举,直言不讳我是疯子。 引发的一些争论是“至少我们将控制自己的代码”或“哦,我在先前的项目中使用过L2S / EF,这无非是头疼”。(尽管我以前在生产中都使用过,发现任何问题很少而且相差不大,而且很容易处理) 因此,您在超级经验丰富的开发人员/架构师中是否有任何智慧的言语可能会帮助我将这个产品从我看来将是一场彻底的灾难中解脱出来。我忍不住想,通过规避EF问题而获得的任何利益,都将因尝试重新发明轮子而同样迅速地丧失。

14
ORM使用数据库抽象有什么好处?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 我开始使用我选择的框架推荐的ORM,尽管我喜欢ORM提供的附加抽象层的想法,但我开始意识到这实际上意味着什么。这意味着我不再使用数据库(mysql),并且所有特定于mysql的功能都消失了,就像它们不存在一样。 ORM的想法是,它试图通过使所有数据库不可知来帮助我。这听起来不错,但是通常我选择特定的数据库系统是有原因的。但是通过走数据库不可知路线,ORM会采用最低的公分母,这意味着我最终会获得最小的功能集(所有数据库都支持这些功能)。 如果我知道从长远来看不会切换基础数据库怎么办?为什么还不访问特定于数据库的功能?

5
LINQ to SQL死了吗?
是否有理由继续使用Linq到SQL,还是最好改用EF,NHibernate等ORM技术。 我们正在新的大型企业应用程序中使用Linq to SQL,该应用程序将存在很长时间。此新企业应用程序的动机是该应用程序是用Visual Basic普通编写的,并且由于Microsoft停止了对我们的支持,因此我们不得不重新编写该应用程序。似乎我们已经在那儿了,但是这次是我们的DAL(数据访问层)。 我已经读过这篇文章,但只能与EF的弱点进行比较。

5
我的多服务器RDBMS或我的应用程序应该处理数据库参照完整性吗?
是否应由数据库管理系统(在这种情况下为MS SQL 2005)或应用程序处理外键,约束,默认值等项?我听取了双方的意见,老实说,我不确定该走哪条路。 我们有机会跨越多个服务器/数据库,而且我认为外键不能在链接的服务器之间使用。除此之外,数据库设计中还有一些循环引用,这使我无法ON UPDATE CASCADE在所有内容上使用。 该数据库是MS SQL 2005(可能是2008),与数据库的所有交互都应通过应用程序进行。

6
是不是SQLite有点被低估了?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 在提出问题之前,让我首先描述一下我对SQLite的看法。 我碰巧喜欢小型,快速且更重要的是仅具有真正必要功能的工具。这就是为什么我喜欢SQLite而不喜欢MS-SQL的原因。 例如:MS-SQL可能具有更多的功能,可伸缩性等,但是如果您不走运,安装它也会很麻烦。当然,我并不是说安装困难是不选择特定数据库的原因。 不能误解我的意思:MS-SQL是优质产品。我对MS-SQL很有经验;我非常了解产品。我只是不太喜欢它,而在某些情况下并不需要它(=没有多少用户,<10-15)。 您实际上使用了多少数据库功能?以我的经验,它通常只是普通的SQL(SELECT,INSERT和UPDATE)。 我喜欢SQLite。快速着迷。“安装”非常容易。我认为SQLite可以做的比声明的要多。为什么只将其用于单进程/单个用户应用程序?毕竟:没有多少应用程序会不断访问数据库。 例如:考虑一个有15个用户的ERP应用程序。为什么不能使用SQLite?让我们面对现实吧:以我的专业经验,大多数时间,此类应用程序的用户访问数据库的时间将占他们使用该应用程序的总时间的5-10%。在另外90-95%的区域中,他们只是看着屏幕上的信息,以表格/表格形式输入数据,并且保存输入的时间不超过数据库时间的1秒。铁:1.5分钟的输入时间与1秒的保存时间。 如果SQLite数据库文件在“节省时间”期间被锁定,则需要访问数据库的其他用户只会等待,但他们不会注意到,因为等待时间会非常短(不明显)。在代码中,您只需要处理数据库可能的“繁忙”时间,以避免出现异常,但这并不难做到。 有些人必须像我一样思考,甚至​​为SQLite构建了一个客户端-服务器解决方案:SQLitening。这使我更加相信自己可能不会自欺欺人。 当然,有些数据库密集型应用程序不适合使用SQLite。但是,正如我现在考虑的那样,许多多用户应用程序(如果它们不超过15个用户)应该可以很好地使用SQLite。 我们的许多客户在硬件上的花费并不多,因此我经常遇到一台服务器,上面有所有东西(Exchange,SQL,客户端等),因此几乎“气喘吁吁”。如果我可以提供对系统要求不高的产品,那么我的客户将很高兴。SQLite不会增加任何权重(至少不会增加多少),​​MS-SQL会增加。因此,我不会选择SQLite,因为它是免费,便宜或易于安装的。我出于实际/技术原因会选择它。 仅供参考:根据我的专业,我们向客户销售产品(自定义和标准产品,主要是与ERP相关的产品),平均而言,使用该产品的客户不超过5-6人。有一些例外,但用户数不能超过10-15。 问题是:我是否认为可以将SQLite用于某些多用户应用程序(如我所描述的示例)正确吗?我应该知道什么技术上的缺点吗?您有哪些经验(负面或正面)可以帮助我做出正确的选择? 更新:请不要将此视为对其他数据库的负面判断。它们大多都是优质产品。只是在这里分享我的想法并对您对此的看法感兴趣。

6
数据库程序员做什么?
每当我读到有关Oracle程序员的文章时,我都会感到困惑。我不知道他们到底在做什么。 据我了解,应用程序程序员需要开发核心功能。他们使用的库可能有助于GUI开发或数据库连接,但是使该应用程序必须对该应用程序进行编程的功能,以及使每个应用程序都不同的功能(有些可能是其他版本的调整版本)。 在这种关系中,数据库编程不是从根本上创建表吗?这些表是否不响应通常由前端应用程序发出的SQL语句进行处理?那么创建表有什么大不了的?

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.