MongoDB数据库--扩展Base64 算法

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: MongoDB数据库--扩展Base64 算法

Python高级


非关系型数据库(NO-SQL:Not Only SQL)


非关系型数据库的诞生:随着IT的发展,变革,数据量越来越大,数据之间的关系越来越零散,松散,没有太大的关系,利用关系型数据库已不能更好的满足我们的需求,使用起来非常复杂,浪费大量的空间。为了解决这种问题就出现了一些能处理松散的,数据与数据之间没有太大关系的数据库,即NoSQL非关系型数据库,如MongoDB等


非关系型数据库适合存放结构松散,相互之间关系不明确的数据


常用产品:


MongoDB (文档)


Redis (键值对)


HBase (一列列的数据)



缓存优化 能不用关系型数据库就不用,非要用就减少数据库的使用,将数据写入Redis



NoSQL数据库的四大分类


1.键值型


2.列存储型


3.文档型,比如MongoDB等


4.图形



Base64编码


Base64编码是一种“防君子不防小人”的编码方式。广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符。 优点:速度快,ascii字符,肉眼不可理解 缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合


import base64

str1 = 'nihao,中国!'

r = base64.b64encode(str1.encode())

print(r)

r = base64.b64decode(r)

print(r.decode())

for...else while..else

for i in range(5):

​ print(i)

​ if i == 3:

​ break # 跳出for循环

else: # 当for循环全部执行完毕才会执行else,没全部执行,如执行了break就不会执行else

​ print(i)

print("end....")

while循环也是如此,但如果while执行了continue,else也会被执行



MongoDB

show dbs 显示所有数据库

db 当前数据库

use mydb 创建mydb数据库

db.student.insert({"sno":1001, "name":"张三"}) 插入数据

db.dropDatabase() 删除当前数据库

db.student.drop() 删除集合 删除后如果数据库中没有其他集合,该数据库将会看不到

db.student.find() 查看文档

db.student.update({"sno":1001},{$set:{"name":"张三丰"}}) 将学号为1001的学

生的姓名更改为张三丰

db.student.remove({"name": "王五"}) 将student表中所有名字叫王五的信息删掉


如果数据库中没有一个集合是不会显示的,所以show dbs就看不到


MongoDB的文档不需要设置相同的字段



集合没有固定的结构,可以插入不同格式和类型的数据



对象为什么能当做字典来使用,只要实现对象中的getitem就可以当做字典来使用


MongoDB在Python中使用

import pymongo

conn = pymongo.MongoClient()

创建数据库

db = conn["mydb"]

创建集合

stus = db["student"]

s = {"sno": 1001, "name": "张三", "sex": "男"}

向student集合中插入一个文档

stus.insert_one(s)

s = {"sno": 1001, "name": "李四", "sex": "男"}

向student集合中插入一个文档

stus.insert_one(s)

r = stus.find({"name":"张三"})

print(r0)

stus.update_one({"name": "张三"}, {"$set": {"name":"张三丰"}})

r = stus.delete_many({"name": {"$regex": "^张"}})

删除的个数

print(r.deleted_count)

stus.insert_one(s)

stus.remove()

查看所有数据库

print(conn.list_database_names())



算法(Algorithm)


解决某个问题的方法,比如冒泡排序,哈希算法,二分查找算法等


评估算法优劣:时间复杂度,空间复杂度


程序本质就是对数据进行处理,想要对数据进行处理,总要有位置放,放就放在存储器,存储器就是内存的容器。存储器分为两种,内存和外存,内存访问速度极快,容量很小,但数据容易流失,外存容量很大,可以持久存放数据,想要把数据存放在外存上需要通过文件,而放在内存上是零散的


算法的空间复杂度计算的是算法执行过程中需要消耗的存储空间,而原始数据所占的空间并不进行考虑


同一个算法的时间空间复杂度跟其的规模有关,即时间复杂度和空间复杂度是问题规模n的函数,n越大时间耗费越长


时间复杂度的衡量一般是基于基本操作(单个操作)的次数


#时间复杂度o(n)


#空间复杂度o(1)


def index(seq, val):


​ i = 0


​ while i < len(seq):


​ if seq[i] == val: return i


​ else:


​ return -1



算法的描述方式:


1.自然语言,比如中文,日文等;


2.伪代码;即随意,能看懂意思就行


3.编程语言;最终期望来实现



重点:


常用算法:


排序算法(至少4中:冒泡,选择,插入,快排),查找算法(二分查找算法),哈希算法(时间是最快的,但耗费大量的存储空间),


记住常用算法的实现


记住常用算法的时间和空间复杂度



数据结构(Data Structure)


数据的一种组织形式,表示方式


集合:


线性结构:顺序表、链表、栈、队列、串(字符串)


树形结构:二叉树、树、森林


图状结构:像渔网一样,数据之间有千丝万缕的联系



算法和数据结构是每个程序猿必须要不断修炼的内功!


云服务器ECS地址:阿里云·云小站

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
13天前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
49 15
|
15天前
|
JSON 算法 Java
Nettyの网络聊天室&扩展序列化算法
通过本文的介绍,我们详细讲解了如何使用Netty构建一个简单的网络聊天室,并扩展序列化算法以提高数据传输效率。Netty的高性能和灵活性使其成为实现各种网络应用的理想选择。希望本文能帮助您更好地理解和使用Netty进行网络编程。
34 12
|
21天前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
3月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
3月前
|
存储 NoSQL MongoDB
MongoDB 数据库引用
10月更文挑战第20天
26 1
|
3月前
|
NoSQL 安全 Linux
MongoDB PHP 扩展
10月更文挑战第19天
16 0
MongoDB PHP 扩展
|
3月前
|
存储 NoSQL MongoDB
mongodb的数据库表怎么创建
在此过程中,理解并掌握这些基本操作,是深入探索MongoDB魅力,乃至构建高效数据解决方案的关键所在。通过实践,您将更加深刻地体会到这种随需应变的数据管理模式带来的便利与效率提升。
53 0
|
11天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
11天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
39 3