Lay.Li 发表于 2024-11-11 13:39:53

一看就会,超有用活字格技能:二百二十、活字格最佳实践-数据库设计

数据库建议

[*]为常用的查询字段创建索引
[*]删除未使用的索引
[*]定期备份数据库和日志,如果使用的是内建库的话,请定期在管理控制台中备份应用和数据库操作的审计日志,如果是外连数据库的话,请在外连数据表中备份。sqlserver可以参考The transaction log - SQL Server | Microsoft Learn,mysql可以参考 MySQL :: MySQL 8.4 Reference Manual :: 7.4.4 The Binary Log
[*]如果需要检索用户信息(如全名、电子邮件、自定义属性等),可以在设计器中创建和使用用户信息视图。
[*]进入开发阶段后,数据库设计的更改应由指定人员审查。

内建数据库vs外连数据库

[*]外连数据库在性能,可维护行和可扩展性方面优于内置数据库。数据量小、并发量低、不需要专业备份和维护管理的简单应用程序可以使用内置数据库,其他场景建议使用外连数据库。
[*]使用外连数据库时,需要严格控制生成环境的数据库访问权限。推荐的做法包括,将数据库服务器和活字格服务器放在同一个内网环境中。使用sqlserver数据库的话,如果可以使用windows身份验证,优先使用windows身份验证而不是使用用户名+密码验证。使用mysql数据库的话,避免使用有最高权限的用户,比如root用户。可以创建一个只有必要权限的用户,用于活字格的链接字符串。

数据表设计

[*]如果需要使用外连表的话,可以在内置库中先将数据结构设计好,然后再将他们转化为外连表,以提高数据库设计阶段的效率。
[*]如果是集成现有的外连表的话,建议使用连接到数据库功能,配置数据库连接属性,然后选择需要使用的表到活字格中使用。
[*]如果需要在活字格中修改外连表结构(添加字段,删除字段等),请在设计器中勾选允许活字格修改数据库或数据表结构
[*]如果在第三方工具中修改了外连表的结构或者数据,请在设计器中刷新数据表以获取最新表结构或数据,如果对字段类型做了修改,请在刷新后对列执行重新获取列类型的操作。
[*]确保关联时使用的字段和被关联的字段类型一致
[*]为表和视图创建主键:没有主键的表或视图会影响数据更新,关联,权限等功能
[*]对于业务中具有唯一要求的字段或者字段组合,请设置唯一属性
[*]对于业务中有必填需求的字段,请设置必填属性
[*]数据库约束是一种在数据库中定义规则和限制以确保数据一致性的方法,常见约束包括主键约束、唯一约束和外键约束。在活字格设计器中,对字段定义这些约束可以防止对不符合规则的数据进行插入或修改操作。

发布应用

[*]如果应用使用外连数据库,则最少要有测试数据库和生产数据库。在开发过程中使用测试数据库,避免影响生产环境的数据。
[*]发布应用时,使用半覆盖去发布,以保留服务器应用的数据
[*]在发布应用之前,请确保应用程序和外连库数据都有备份

数据库编程

[*]数据库编程可以有效地提高批处理数据的性能,但风险更高。建议由团队中技术能力较强的同事负责编写和审查SQL语句
[*]使用sql创建视图,编写存储过程,或者直接使用执行sql命令而不是使用数据表操作命令可以进一步提高复杂查询和数据处理的性能
[*]SQL编程应符合相应数据库供应商提供的最佳实践(内置数据库为SQLite)
[*]对于初级技术人员编写的SQL语句,建议高级技术人员提供技术审查,以避免数据误操作造成的意外损失。
[*]如果要使用数据表操作命令对某张表添加/更新/删除,请避免对这张表添加触发器。

备份

[*]数据库的定期维护和备份至关重要。在执行完整备份之前,应至少每周进行一次完整性检查。这可以防止在数据库损坏后进行备份,并提示数DBA进行干预。关于完整性检查,一种方法是定期在测试环境数据库中恢复备份数据库,以确保在需要时可以准确快速地恢复数据。
[*]最好为系统和用户数据库制定单独的备份和维护计划。

性能
索引

[*]为查询所需的字段设置索引,以提高整体查询速度。当查询大型表需要太长时间时,数据库索引允许更快地访问该表中的数据。
[*]删除未使用的索引

查询

[*]避免跨数据库关联的查询。如果需要跨不同类型的数据库进行查询,建议使用外连库副本功能将不同类型的表连接到活字格中以供使用。
[*]尽量减少数据表查询时使用的字段数量。为了防止查询速度过慢和内存使用过多,没有必要去查询不必要的字段
[*]优化更新数据表的查询条件。一次只处理少量数据,避免处理全表数据
[*]控制查询返回的数据量。避免一次获取大量数据,以防止性能问题。通常,浏览器中可以显示的数据量是有限的,因此请尽量控制检索的数据量

字段

[*]减少公式字段的使用。公式字段不能创建索引,因此使用公式字段进行查询/排序/连接可能会导致性能问题,特别是在数据量较大的情况下。
[*]避免在具有高并发访问的表中使用自动编号功能。在高并发场景中,自动编号的生产逻辑可能带来性能问题



缓存数据

使用活字格缓存功能,活字格在表格、组合框和设置变量等中提供缓存功能。通常,以下场景适合启用缓存:


[*]频繁查询,数据变化不大(通常是字典表):在这种情况下,每次访问数据库可能会产生不必要的性能开销。使用缓存可以避免频繁的数据库访问,提高性能。
[*]复杂且耗时的查询:当查询涉及多个表、大量数据或需要复杂的计算时,可能会有一些耗时。使用缓存可以减少后续重复查询的时间和资源消耗
[*]需要快速的数据检索:在某些情况下,数据检索远远超过数据写入,例如网站的主页,通常有固定的内容。启用缓存可以提高访问速度。



在表中存储统计数据

[*]通常,当活字格计算统计数据时,可以使用聚合字段。然而,当数据量大且访问频繁时,可能会出现性能问题,例如主页上的各种统计图表。在这种情况下,建议创建一个新表(缓存表)来存储统计所需的信息,然后创建一个计划任务来查询统计信息并定期更新表的内容。然后将缓存表绑定到页面上的表格或图表中。












页: [1]
查看完整版本: 一看就会,超有用活字格技能:二百二十、活字格最佳实践-数据库设计