数据库的使用,其实就是增删改查的使用。最近在做大数据测试,第一次接触AS库的使用,对这个新的数据库充满了好奇。以前从来不知道原来还有这个数据库的存在,但是所有的数据库学习我们都可以对标mysql。他们的使用和操作基本都大同小异。
1.AS是什么
Aerospike是一个分布式,高可用的K-V类型的Nosql数据库。AS可基于行随机存取,索引放在内存中,数据存取可以在内存中或SSD。
Redis就是使用K-V类型,但是redis数据完全存储在内存,成本太高。AS可以存储在SSD上,并且与redis能达到相同的查询性能。AS通过访问SSD屏蔽文件系统层级,直接访问地址,保证了数据的读取速度。
2. AS的一些基本概念
AS中的一些基本概念,主要有:namespace、sets、record、bin(对标关系型数据库:数据库、表、行、列)
- 命名空间-Namespaces
对标mysql中的数据库.一个namespace包含记录(records)、索引(indexes)、策略(policies)。其中策略决定namespace的行为,包括数据存储位置在内存还是SSD、一条记录存储的副本个数、过期时间(TTL)。
其中与redis不同的点:redis针对key设置的TTL,AS可以在库层级进行全局设置,并且支持对于已存在的数据进行TTL的设置。 - 集合-Set
对标mysql中的表。集合set存储于命名空间,是一个逻辑分区,set的存储策略继承自namespace,也可以为set设置单独的存储策略。 - Records
对标mysql中行。包括key、Bins(value)、Metadata(元数据)。key全局唯一,作为K-V数据库一般都是通过key去进行查询,Bins相当于列,存储具体的数据。元数据存储一些基本信息,比如TTL。 - Key
key,摘要。为所有操作定位记录,key主要用于应用程序访问,摘要用于数据库内部查找记录。 - Metadata
每一天记录都包含以下几条元数据
1.generation(代):表示记录被修改的次数。
2.time-to-live(TTL):AS会自动根据记录的TTL使其过期。
3.last-update-time(LUT):上次更新时间,这是一个数据库内部的元数据,不会返回给客户端。 - Bins
在一条记录里,数据被存储在一个或多个bins里,bins由名称和值组成。bins不需要指定数据类型,数据类型有bins中的值决定。
2.1 AS的命名空间
AS的命名空间主要包括3个部分:记录、索引、策略。
2.2 关系型数据库和AS数据库对比
关系型数据库和AS数据库对比
3.AS库操作登录
AS库操作的登录:
1、登录AS库节点所在的服务器
2、直接在服务器中输入:aql,然后进入到AS数据库,进行数据库操作,与mysql类似。
select * from 命名空间(数据库名称).TML_REAL_TIME_USER_INFO(表名称)
比如:select * from database.TML_REAL_TIME_USER_INFO
4.AS库操作常用命令
远程连接:aql -p 3000 -h xx.xxx.xx.xx
显示所有命名空间:show namespaces
显示所有字段(相当于mysql table中的column):show bins
显示所有集合(相当于mysql中的show tables):show sets
显示查询信息:select * from bar.messagecache where PK=xx
查看AS库是否正常:systemctl status aerospike
- 1.增加(插入一条数据)
增加一条数据就新增了一个表。
前提:testMemory为命名空间(类似于mysql中的数据库名称),demo为as中的set(类似于mysql中的表),类似于mysql中的database.table(对应的数据库.对应的数据表)
insert into testMemory.demo(PK,pass,name) values('key1',123,'abc')
PK-持索引查询,PK即键名,比如PK='UID'
select * from testMemory.demo where PK='key1'
- 2.删除
delete from testMemory.demo where PK='key1'
- 3.修改
修改即覆盖更新 - 4.查询
查询该命名空间下的所有的sets,testMemory为命名空间
select * from testMemory (查库,mysql不支持)
select * from testMemory.demo(查表,mysql查对应数据库下的表)
- 5.创建索引
前提:没有建立索引时是不能根据bin查询的。
create index idx_demo_name on testMemory.demo(name) string
select * from testMemory.demo where name='abc'
- 6.查看AS库,可以执行命令查看对应的字段,在查询对应的内容
set output raw
select * from database.TML_REALTIME