使用专有数据库系统构建应用程序的优缺点

我很长一段时间以来一直对4D SAS的数据库产品感兴趣,但几乎没有触及它。 在考虑用于应用程序开发的工具,尤其是需要数据库组件的工具时,在考虑MySQL和PostgreSQL等开源工具与4D或Pervasive SQL等专有解决方案时应该注意什么? SO社区对各种数据库工具(如4D,Pervasive,FilemakerPro等)有什么好的(和坏的!)体验? 任何糟糕的经历?     
已邀请:
4D是仅支持MacOS / Windows的跨平台专有数据库系统,具有独立和客户端 - 服务器类型。您最好将其与只有Windows的Alphafive.com软件进行比较。我已经和它合作了17年,它为我和我的部门提供了很好的服务。我的头顶...... 优点: 界面&代码与数据引擎密切相关,这使得开发丰富的跨平台用户界面非常快速和简单。 专有关系数据引擎本身在两个平台上运行,以及本机客户端接口(但需要多用户许可证)。自动关系很有帮助(但有时会妨碍)。 可以通过SOAP和ODBC以及SQL驱动程序访问外部系统(有限)。 可以通过SOAP或http请求从外部系统访问4D&网页。 基于Pascal的本机过程编程语言,易于学习。 适用于中小型部门的优秀工具。 最新版本接受SQL命令子集和原始数据访问,因此它的向后兼容记录非常好。 4D的安全性很容易。 您可以构建通过各种方式进行部署的解决方案,并且不受是否安装了MS Access的限制。 缺点: 界面&代码与数据引擎密切相关,这可能导致抽象和“黑盒”编码的使用受到限制,除非您将其作为开发目标。 编译为一个整体结构文件,强制重新启动单个修复程序。 语言仍然只是程序性的 - 使得面向对象程序员更难接受。每个方法都需要在4D中使用单独的“文件”,因此您不能在单个例程中包含多个函数或过程 - 这需要一些时间来适应它。 虽然公司似乎处于良好状态,正在成长和发展,但你根本不会知道,因为他们保持自己的状态。 公司从未真正推销自己 - 信任其开发人员基础,通过网站部署和产品升级宣传和发展产品。网站显然只对已经使用该产品的开发人员有用 - 它根本无法吸引新用户。 产品升级似乎总是关注工具如何更好地为开发人员而不是那些开发人员的客户。 SQL缺少视图,复合索引和其他常见的SQL功能。 当用户请求特定数据列的报告时,我经常需要编写另一个程序来提供该特定数据 - 我不能总是只查询数据并生成文本文件。 几乎不使用基于Web浏览器的应用程序,无法处理新的操作系统版本。旧版本在Mac OS 10.6上被破坏,最新版本需要最新的Mac OS 10.6。 Windows 7上尚未认证任何版本。 我已经将近一年的时间学习ASP.NET,并在Ruby on Rails上学习了几周。虽然SQL数据存储很容易,但用户界面很难 - 但是当您的应用程序仍然通过操作系统升级运行时,它是值得的。如果最新版本出现问题,您可以随时使用旧版浏览器。 我建议您考虑其中任何一个,具体取决于您可用于实施项目的资金--Rails是两者中更便宜的。然后,任何带有Web浏览器的系统都可以访问数据,您可以根据需要动态修复界面页面,而不是让整个系统在几分钟内完成一次简单的更新。这些技能在未来可能更具市场价值。     
在没有背景的情况下难以制作相关的优点和缺点列表。 我的建议如下:在决定使用专有数据库时,请确保此决策基于强有力的事实,而不仅仅是对异国情调工具的技术兴趣。将使用专有数据库的好处和非专有解决方案的优势放在一起。 答案因系统而异。 先决条件是您的系统已经过很好的识别,具有明确的范围,非常可预测的演变,因此您的分析结果将是稳健的。然后,如果您的专有解决方案为您的系统带来真正的好处,您对支持感到满意并且您可以承担总体成本,那么您应该是专有解决方案的良好候选者。     
我只会说一件事。观察你的决定的“实际”成本。大多数专有数据库系统只有Windows ..或者有时仅适用于Mac / Windows。 这意味着除了为数据库系统支付相当多的钱之外,您还必须在服务器操作系统上支付大量资金才能运行它... 此外,将数据库系统与当前的开源解决方案进行比较。是不是真的值得吗?从Microsoft Sql Server(有一个免费版本,但无论如何)转移到PostgreSQL后,我很震惊,人们为SQL Server支付了这么多钱。我的意思是,对我来说Postgres要干净得多,而且大部分工作都准确无误您期望的方式(与某些SQL服务器语法不同)并且它内置了更多功能(在Ruby中编程存储过程中的任何人?) 所以基本上,将专有技术与开源软件进行比较,并根据总定价(包括操作系统)和功能集决定采用哪一种。     
专注于任何数据库:它具有良好的非便携功能,可帮助您完成任务 归零任何数据库的结果:有时候不同的数据库是合适的(例如,使用内存中的SQLite实例运行测试),但该选项现在已关闭 专有商业数据库的Con:如果您需要许多实例,许可成本可能会让您失望     
请考虑以下问题: 维护方面的改变有多容易(或困难)?应用程序可能在维护上花费的时间远远多于开发中的时间,因此如果变化很难,则可以保证长期的痛苦。 什么是支持质量?一个文档齐全,专有或其他方面的系统将更容易使用。 用户社区有多大(或小)?拥有更大用户社区的系统意味着,如果出现问题,会有更多人向您寻求帮助。 这个专有数据库系统的导入/导出功能有多强大? 我发现最后一点在我的第一份全职工作中特别有用。我们的客户使用的是CA-Ingres,公司里没有人知道编写查询来验证数据。所以我提出了从Ingres导出数据并将其导入MS SQL Server(我从Sybase专业服务的简短说明中知道)的想法,因此我们可以在那里编写验证查询。如果从Ingres导出数据真的很难,我的想法根本就不是一个选择。     
在4D的网页上,我认为我们正在寻找一个完整的开发+部署环境,而不是一个独立的数据库。所以你可以看到的替代品包括django,ruby-on-rails,hibernate等等。当然,真正的问题是专有系统是否可以为产品生命周期节省足够的资金来证明产品的成本。这取决于您可用的人力资源类型。     
4D是垂直应用程序的一个很好的选择。我曾在一家公司工作,该公司使用4D为全科医生和专家建立医疗记录和计费申请。 4D的快速设计和部署功能使应用程序能够快速满足市场需求和医疗记录存储的立法变化。环境本身并不是最先进的,但它是集成的,跨平台的,非常高效的。 如果您正在进入一个具有高供应商锁定和高进入门槛的市场,那么我认为专有的集成开发环境是一个不错的选择。     
在我职业生涯的各个阶段,我已经使用并且非常擅长FileMaker Pro,FoxPro,4D和其他一些商业产品。现在我主要使用PHP / MySQL,并没有使用任何产品的最新版本。 我一直很喜欢FileMaker,因为大多数可以使用计算机的人都可以选择FileMaker并设计他们自己的系统。他们不必了解编程或数据库设计。但是,如果需要,您可以“编程”FileMaker,在其上放置Web前端,或执行其他更复杂的设置。很多时候,我被一个非技术人员“传递”在FileMaker中创建的系统,需要将其制作成一个完整的数据管理系统。好的部分是所有“规格”和数据流已经被设计到一个系统中。原型已经创建了! 4D和FoxPro我总是发现需要一定数量的额外编程和/或数据库知识来真正做任何事情。 4D& FileMaker是非常完整的自包含系统,而不仅仅是数据库系统。虽然它们都能够连接到其他后端数据库系统(即MySQL,Oracle),但这不是它们的优点。 在缺点方面,由于一切都紧密耦合,在4D和Filemaker中执行更复杂的动态系统可能很困难。由于它们的成本,您真的希望用它们创建多个系统。这意味着你需要真正“买进他们”才能获得你的钱。     
关键概念始终遵守标准:如果您计划使用4D的自定义和/或特殊设计功能(但讨论可能更为通用,并且涵盖任何其他免费或商业工具),那么,只需使用它并利用你的优势。 毫不奇怪,这就是为什么像Oracle或IBM的DB2这样的大型数据库系统被广泛接受用于特定业务领域,例如商业交易。 采用非常封闭的解决方案的另一个主要原因是遗留支持。您引用的产品之一(Pervasive SQL)在90年代后期作为基于BTrieve的应用程序的免费端口,并且由于全球范围内庞大的BTrieve社区而受到欢迎。 最后,最后但并非最不重要的是,您应该评估TCO(总体拥有成本),不仅要考虑许可证价格(单座位,网络环境,站点许可证等),还要考虑技术支持,更新和可用性方面的问题。为您的平台。我所知道的许多业务部门都不得不为DB相关问题改变他们的基础操作系统。 提示:如果您没有寻求极端性能,请为在虚拟化环境中使用证明或支持的自定义解决方案添加奖励。它将为您的数据库管理员节省更多的麻烦。 在所有其他情况下,依赖opensource / freesoftware数据库。适用于大型项目的MySql和Postgres,适用于单个应用程序持久层的SQLite。相当标准和非常好(社区)的支持。没有价格的好价值。     
我对您列出的专有数据库产品没有任何经验:4D,Pervasive,FilemakerPro。 我有兴趣知道这些产品提供的东西比开源替代品更吸引你,你列出了:MySQL和PostgreSQL。 我会对那些比那些更受欢迎的专有替代品更有吸引力的东西感兴趣:Oracle,SQL Server,DB2等。 如果没有您提供更多细节,很难为您提供建议。 我个人觉得使用广泛使用的开源解决方案比使用狭义的闭源解决方案更安全。使用越广泛,它可能会受到更多的战斗考验。越开放,我就越能控制自己的命运,以防我遇到一些错误。 我已经报告了开源项目的错误并得到了快速修复。我已经向那些制作营利性专有软件并且什么都没有的公司报告了漏洞。     

要回复问题请先登录注册