网站建设编辑叫什么岗位,深圳需要做网站的公司有哪些,wordpress网站添加阅读全文,wordpress怎么获取数据库云开发数据库与传统数据库的不同 在小程序云开发中#xff0c;最核心的便是三大组件#xff1a;数据库、云存储和云函数#xff0c;从今天开始#xff0c;我们将开始隔日更的专栏文章#xff0c;云开发101#xff0c;在第一周#xff0c;我们将从最最核心的数据库开始说… 云开发数据库与传统数据库的不同 在小程序·云开发中最核心的便是三大组件数据库、云存储和云函数从今天开始我们将开始隔日更的专栏文章云开发101在第一周我们将从最最核心的数据库开始说起。 云开发数据库简介 首先我们先来了解一下云开发的数据库云开发数据库是由云开发团队提供给云开发用户的数据库服务开发者可以在小程序、云函数等环境中通过简洁易懂的函数调用来获取到对应的数据方便开发者快速完成业务逻辑中关于数据库的部分。 在开发过程中你可以使用诸如 wx.cloud.database().collection(data).where({age:10}).get() 这样的方法获取到数据库中的信息而无需再通过服务端提供的 API 完成数据库请求将数据查询的权力下放到小程序端加快应用的迭代效率。 云开发数据库底层技术简介 云开发数据库所使用的是 NoSQL Not Only SQL数据库方案中的 MongoDB 数据库。MongoDB 数据库是目前业界发展的最好的 NoSQL 数据库可以让开发者以 SQL 和 NoSQL 两种方式完成数据库结构的建设快速完成应用的开发。 NoSQL 与 SQL 我们在传统的 Web 应用开发过程中大多使用的是 SQL 数据库如 Oracle、SQLite、MySQL、MSSQL 等但云开发所使用的 MongoDB 则是完全不同的数据库方案因此在进行数据库结构设计时也有所不同。错误的思考模型会使得你在后续的应用开发过程中给自己带来无尽的麻烦。因此也就有了我们这篇文章向你介绍 NoSQL 世界的魅力。 Schemaless 带来的特性 在我们使用 SQL 数据库开发时我们需要先行设计好数据库的结构、数据表的结构等而 NoSQL 型数据库因此让我们在开发的时候也会有了不同的开发模式。我们无需在进行应用开发时先行添加表结构我们只需要根据我们自己的使用情况随时增加、删除新的字段完成自己的业务需求也正是这种自由使得云开发有了快速开发、快速迭代的特性。 云开发数据库结构设计思路 由于云开发所使用的数据库类型与我们所熟悉的数据库类型不同因此在开发的时候我们也要相应的修改我们的数据库结构以适配 NoSQL 数据库的各项特性从而降低编程时的复杂度又好又快的满足自己的业务需求。 和 SQL 数据库不同 MongoDB 数据库由于其存储结构从设计之初便是考虑分布式、多节点存储其 Best Practice 是「以空间换时间」因此在设计应用数据结构时不要考虑应用的数据存储空间而是更多思考如何以更快的速度将数据查询出来。 但是数据库的设计不能完全追求时间也要思考编程的复杂程度平衡时间、空间与编程复杂度以一个更好的方式完成自己的数据库设计。 举个例子因为极度追求数据的空间换时间整个数据系统的多种数据仅设计一个集合所有的数据都挂在一个集合中显然是不合理的这种存储会导致应用后续的迭代造成麻烦。 同样的极度的不追求空间换时间也是一种错误的选择如果你将所有的数据都放在各自的独立集合中则会造成没有很好的利用 NoSQL 数据库的特性也会使得你的后续编程变得麻烦。 因此在使用云开发数据库时我们需要思考我们的业务发展方向将可能会用到的场景进行割离思考应用的数据库结构从而确保自己的应用在后续开发的时候不出问题。 云开发数据库使用常见问题 在实际的应用中我们也看到不少人因为不熟悉 NoSQL 的数据库设计理念在实际开发过程中出现了不少的问题这里我们一一讨论一下。 自建主键属性 在 MongoDB 数据库中数据存储使用的是 ObjectID因此其数据的 ID 并非 1 2 3 4 而是一个类似于 a718a0f318d76 hash 值不少人在开发时因为认为没有自增的数据无法完成数据排序就自行实现了一个自增的 ID每次新增的时候都重新查询一遍获取最新的值以后 再重新新增数据。 但实际上我们可以有一种更加优雅和方便的工具来完成这种需求那就是新增一个字段 created_at这个字段的值设置为当前时间的时间戳 Timestamp。当你后续需要进行数据按新增的数据进行排序时可以使用这个字段进行逆序排序同时因为这个数据使用的是当前的时间数据你还可以将其用于数据的「创建于XX年XX月XX日」的功能完成自己的业务需求。这个数据除了能进行直接的排序还可以用于后续按日期导出数据比如筛选出某一个特定时间段的数据。 相比于一个自增的 IDcreated_at 更加的简单易用同时因为不需要提前获取上一条记录中这个字段的值可以有效的降低数据的查询次数。 时间存储问题 在我们进行业务逻辑开发时时间数据的获取是不可或缺的不少人习惯于使用一个可视化的日期数据便会将数据库中的日期字段设置为 2019-09-09以便于在使用时直接输出到数据库中但实际上在开发过程中建议大家存储时间戳 Timestamp 来作为具体的时间。 这是因为 2019-09-09 的数据并非一个可以用于排序的字段在后续开发的过程中因为你使用的是字符串作为时间如果你需要将数据进行排序将会无法排序或出现排序错误的情况此外因为你存储的是字符串类型的时间那么后续如果你的业务需求发生了展示形式的变化会导致你花费大量的时间去修改所有数据的时间或者在数据的读取和存储时进行多次格式转换徒增麻烦。 因此对于时间存储有需求的我们一贯建议大家使用时间戳来存储因为时间戳是一个数字类型的数据因此可以直接进行大小的比对同时因为时间戳的数据是全球统一的如果你的应用后续有全球化的需求也可以很好的支持。 无法区分是否要拆分为独立的数据集合存储 在进行云开发的数据应用开发的时候我们发现不少开发者的疑问是我所使用的数据是否有必要进行独立拆分出一个 Collection 来进行数据存储。 这个问题我们可以以一些简单的问题来判断 你所使用的数据是否有排序的需求你所使用的数据是否有修改的需求你所使用的数据除了在此处使用是否还在其他地方使用这里我们举几个例子来说明一下比如说我们有一个需求是为一个内容发布系统的文章新增评论功能那么我们应该如何完成这部分呢 如果你的评论数据没有排序、修改也仅在此处使用你可以考虑将评论数据放在文章数据中的一个子属性中这样可以有效的完成数据查询你在文章进行查询的时候直接将评论数据查询出来并进行显示十分的方便。 如果你的评论数据有排序、修改以及其他地方使用的需求那么就建议你将评论数据单独存放在一个集合中以便在后续完成排序、更新和调用如果此时你将其放在文章数据中在后续查询时就会有很多问题操作起来极为不便给自己徒增烦恼。 当然具体情况具体分析如果你在分析完成后依然没有答案可以在公众号后台提出你的问题我们将尽快给您回复。 总结 在本次的文章中我们分享了云开发所使用的 NoSQL 数据库与传统的 SQL 数据库的区别以及因为这种区别所带来的开发体验上的不同理解这些基础内容将会帮助你更好的应用云开发数据库开发你自己的产品。 如果你对于云开发有任何问题都欢迎你在文章留言出留下你的疑问我们将一一解答。 如果你想要了解更多关于云开发CloudBase相关的技术故事/技术实战经验请扫码关注【腾讯云云开发】公众号 转载于:https://www.cnblogs.com/CloudBase/p/11510498.html