- Updated on
Codes
Tags
本篇文章为草稿。
目前似乎市面上是缺少一种统一的代码框架来管理所有的数据安全的事项的,以至于很多公司需要去自己开发很多代码(是否有可能做一个统一的服务?) 像是数据处理记录这样的内容,完全可以封装成一个接口,来进行统一的处理,不明白为什么现在很多企业没有做这件事情(提供这样的服务)
比如说同意记录,目前不太理解大多数公司是怎么做同意记录,估计根本不会做同意记录,而是直接在客户端层面做一个用户如果没有同意新的隐私政策就不能使用新的功能
现在开发已经分为前端和后端,但这实在分的太粗略了
前端:过去是按照发生在浏览器端的为前端,现在可以扩展为发生在浏览器和APP端的、运行在Client设备上的代码部分都属于前端
(本文以下内容大多由ChatGPT生成,我进行了部分补充)
前端代码与后端代码
前端代码,数据合规律师需要关注的包括但不限于:
- 权限请求
- 权限调用
- SDK嵌入
- 同意记录
后端:运行在服务器的代码 后端代码包括但不限于:
- 业务代码(与具体业务逻辑相关的代码),比如处理用户将某个商品加入购物车的代码
- 数据访问层(Data Access Layer)代码/CRUD代码(数据库的Create Retrieve Update Delete代码):这些代码用于与数据库或其他数据存储系统进行交互,包括数据库查询、数据插入、更新和删除等操作。它们通常使用数据库访问技术(如SQL查询语句(Structured Query Language)或ORM(Object-Relationship-Model)框架)来实现数据的持久化和检索。
- 数据库可能分为很多种,SQL数据库、No-SQL数据库、时序数据库、图数据库、列式数据库、文档数据库等等
- 安全性代码:例如用户认证、权限管理和数据加密等。这些代码用于处理用户身份验证、访问控制和安全漏洞等问题。
- 配置代码:后端应用程序通常需要一些配置参数,例如数据库连接信息、API密钥和环境变量等。配置代码用于读取和解析这些配置参数,并将其应用于应用程序的运行时环境。
- 异常处理代码:后端应用程序需要处理可能出现的错误和异常情况,并采取相应的措施,例如记录错误日志、向用户返回错误信息或执行恢复操作。异常处理代码用于捕获和处理这些异常情况。
- 日志记录代码:为了跟踪应用程序的运行情况和调试潜在问题,后端应用程序通常会记录日志。日志记录代码用于生成日志消息,并将其写入日志文件或发送到日志管理系统。
- 缓存代码:后端应用程序可以使用缓存来提高性能,减少对底层数据存储系统(比如数据库)的访问次数(降低对数据库的读取频率,数据库也是有读写速率上限,如果触发了瓶颈会降低响应速度)。缓存代码用于管理缓存数据的读取、写入和失效等操作。
- 消息队列代码:一些后端应用程序通过消息队列实现异步处理和解耦合。消息队列代码用于发送和接收消息,并处理消息队列中的任务。
对于这些类型的后端代码,数据合规律师需要关注哪些问题:
业务代码:业务代码涉及处理哪些数据(其中哪些属于是个人信息)
CRUD代码
安全性代码:数据加密 数据备份一般是整体的备份,所以不太由后端代码控制
日志记录代码:日志记录代码是否涉及个人信息
缓存代码:是否涉及个人信息、缓存的有效期
加密算法
加密算法分类:
- 对称加密和非对称加密
- 对称加密:加密密钥和解密密钥是同一个密钥
- 比较经典的对称加密算法:AES加密
- 比较经典的非对称加密算法:RSA
- 对称加密:加密密钥和解密密钥是同一个密钥
SQL数据库与No-SQL数据库的对比
NoSQL数据库和SQL(关系型)数据库在多个方面存在区别,包括数据模型、数据一致性、扩展性和查询语言等方面。以下是它们之间的一些主要区别:
数据模型:
- SQL数据库:SQL数据库使用表格的结构化数据模型,数据以行和列的形式组织,并且表格之间可以建立关系。数据模型具有严格的结构和预定义的模式。
- NoSQL数据库:NoSQL数据库采用非结构化或半结构化的数据模型,可以是键值对、文档、列族、图形或其他形式。这种灵活的数据模型适用于存储和处理非结构化、半结构化和动态模式的数据。
数据一致性:
- SQL数据库:SQL数据库通常提供ACID(原子性、一致性、隔离性和持久性)事务的支持,确保数据的一致性和完整性。
- NoSQL数据库:NoSQL数据库在一致性和事务方面的支持程度不同,有些提供强一致性,有些提供最终一致性或事件ual consistency。这意味着在分布式环境下,NoSQL数据库在数据一致性和事务性方面可能有所放宽,但提供了更高的可扩展性和性能。
就数据一致性这个问题可以继续研究研究
- 扩展性:
- SQL数据库:SQL数据库在水平扩展方面的能力相对有限,通常通过垂直扩展(增加硬件资源)来提高性能,例如增加处理器或内存等。
- NoSQL数据库:NoSQL数据库设计时考虑了水平扩展的需求,可以通过添加更多的节点来实现水平扩展,从而处理大规模和高并发负载。这种扩展性使得NoSQL数据库适用于分布式环境和大规模数据存储。
就拓展性这个问题可以多研究研究
- 查询语言:
- SQL数据库:SQL数据库使用结构化查询语言(SQL)进行数据查询和操作。SQL具有丰富的查询功能,包括关联查询、聚合函数、排序和复杂的条件查询等。
- NoSQL数据库:NoSQL数据库通常使用特定的API和查询语言,如键值对数据库的简单读写操作、文档数据库的JSON查询、图数据库的图查询等。查询语言的功能和复杂性通常比SQL数据库更有限,但在特定的数据模型和使用场景下更加高效。
需要注意的是,NoSQL数据库和SQL数据库并不是互相排斥的,它们在不同的应用场景中有着各自的优势。选择合适的数据库类型取决于具体的需求,包括数据结构、一致性要求、性能要求和扩展性要求等。有时候,应用程序会同时使用SQL数据库和NoSQL数据库,根据不同的数据类型和访问模式选择合适的存储引擎。
列式数据库
列式数据库是一种数据库管理系统,它以列为单位组织和存储数据,与传统的行式数据库(以行为单位存储数据)相比具有不同的存储结构和查询方式。
在列式数据库中,数据按列存储在磁盘上,相同列的数据被连续存储。这种存储方式带来了一些优势:
数据压缩:列式存储使得相同类型的数据连续存储在一起,这样可以更好地利用数据的重复性和规律性。列内的数据通常具有相似的数据类型和取值范围,因此可以采用更有效的压缩算法,减小存储空间的开销。
查询性能:列式数据库在查询特定列的数据时更加高效。当查询只需要某几列的数据时,列式数据库只需读取这几列的数据,而不需要读取整行数据。这样可以减少磁盘IO和网络传输的开销,提高查询性能。
聚合和分析:列式数据库在处理聚合操作和分析查询时表现出色。由于数据按列存储,聚合操作只需要读取需要的列,可以更快地进行计算和统计。这对于大规模数据分析、数据挖掘和报表生成等场景非常有益。
磁盘访问优化:列式数据库通过减少磁盘IO的数量和提高数据的局部性,可以更好地利用现代存储介质(如SSD)的特性。数据的连续存储和压缩可以减少磁盘寻道的开销,并提高数据读取的吞吐量。
列式数据库适用于需要大规模数据分析和高性能聚合查询的场景,如商业智能、大数据分析和数据仓库等。它在处理大量列数据的情况下可以提供更好的性能和存储效率。一些常见的列式数据库包括Apache Cassandra、Apache HBase、ClickHouse和Vertica等。