Aerospike源码研究
专注于源码研究及原理学习
yzs87
专注于PostgreSQL、MySQL、GreenPlum及其生态
展开
-
资讯--Aerospike 4.5支持持久内存
Aerospike 4.5:PM和压缩正文Aerospike企业版4.5是第一个商用的支持Intel® Optane™ DC持久内存(基于Intel的3DXPoint)的数据库。Aerospike open database架构意思是:原生支持各种企业应用环境,支持Java, .NET, Node.js, Python, Go等编程语言。和简单将PM映射到内存以存储内存数据结构不同,A...翻译 2020-03-20 22:06:11 · 336 阅读 · 0 评论 -
Aerospike SSD模式时,磁盘数据存储格式
1、磁盘数据格式2、代码分析//磁盘头初始化函数ssd_device_header *ssd_init_header(as_namespace *ns){ //header的大小是1M ssd_device_header *h = cf_valloc(SSD_DEFAULT_HEADER_LENGTH); if (! h) { return 0; } memset(h, 0,原创 2018-01-04 20:57:52 · 1601 阅读 · 0 评论 -
Aerospike insert、drop、read和emigrate加锁及引用计数流程
1、insert2、drop3、read 4、emigrate原创 2017-12-07 21:56:31 · 680 阅读 · 0 评论 -
Aerospike保证不了一致性
介绍Aerospike虽然号称支持事务,但是并不能满足事务的一致性。对于内存+持久化的模式,当事务提交后,事务操作的记录值并没有刷到磁盘上,只是将其存到了swb的缓存中。这个缓存由一个后台线程进行刷写。如果事务提交后,此时所有的值都是看得到的;而其值没有刷到磁盘上,此时宕机重启后是会丢失记录的。至于丢失多少事务的记录,就要看没有刷到磁盘的swb有多少,如果有很多事务的swb没有刷到磁盘上,那么将会原创 2017-12-28 21:54:55 · 1405 阅读 · 0 评论 -
Aerospike Has Removed the Large Data Type (LDT) Feature--Aerospike已经不再支持LDT特性
In 2013, Aerospike introduced a new feature known as Large Data Types (LDTs) to enable Aerospike to handle data that exceeded our row size limit. On November 14, 2016, in this blog post, we announced翻译 2017-12-02 17:07:52 · 611 阅读 · 0 评论 -
Aerospike 的索引内存管理--as_index->dim
原创 2017-12-01 20:29:29 · 1090 阅读 · 0 评论 -
Aerospike的bin内存管理--即列内存管理
1、内存申请函数调用write_master->write_master_dim->write_master_bin_ops->write_master_bin_ops_loop->as_bin_particle_alloc_from_client:该函数对as_bin_s->particle进行申请内存,并将相关bin属性和值load到申请的内存中。2、内存释放函数调用as_record_don原创 2017-12-01 20:32:05 · 1140 阅读 · 0 评论 -
Aerospike rd记录的rec_props结构
rd的rec_props存放三部分记录属性内容:LDT信息、set name、keyd。这三部分内存空间是连续的,这里只是分割开来方便说明。如果rd不是LDT类型,那么是不存放第一部分内容的,直接开始就是存放set name。rd->rec_props的p_data存放LDT、set name和keyd,而size是p_data存放内容的总大小。原创 2017-11-26 19:24:48 · 715 阅读 · 0 评论 -
Aerospike partition tree的内存管理
as_namespaces_init:1、uint32_t stage_capacity = as_mem_check() for (capacity = MAX_STAGE_CAPACITY; capacity >= MIN_STAGE_CAPACITY; capacity /= 2) { if (check_capacity(capacity)) {原创 2017-11-19 10:34:54 · 880 阅读 · 0 评论 -
Aerospike迁移--2
emigration_send_start{ ... msg_set_uint32(m, MIG_FIELD_OP, OPERATION_START); ... uint64_t start_xmit_ms = 0; //向目标节点发送消息后,等待emig->ctrl_q队列接收到返回的ACK //如果在1秒钟内,没收到,则继续向目标节点重发;否则循环等原创 2017-11-12 22:15:33 · 725 阅读 · 0 评论 -
Aerospike 读写过程中对partition tree的引用计数的处理
as_tsvc_process_transaction: as_partition_reserve_write or as_partition_reserve_read pthread_mutex_lock(&p->lock); ... partition_reserve_lockfree(p, ns, rsv); |--cf_rc原创 2017-11-05 14:19:23 · 769 阅读 · 0 评论 -
Aerospike SSD模式下,刷写磁盘和写入数据swb的关系
voidssd_flush_current_swb(drv_ssd *ssd, uint64_t *p_prev_n_writes, uint32_t *p_prev_size){ uint64_t n_writes = cf_atomic64_get(ssd->n_wblock_writes); //ssd->n_wblock_writes表示ssd->swb_write_q队列中有原创 2017-11-01 21:02:48 · 1409 阅读 · 0 评论 -
Aerospike迁移
1、immigration_handle_start_request功能: 构建immigration; 将immigration放到g_immigration_hash表; 发送ACK;2、原emigrate_tree发送迁移消息后,immigration_handle_insert_request进入迁入,然后发送ACK3、原接收到ACK,发送OPERATION_原创 2017-10-25 21:12:27 · 968 阅读 · 0 评论 -
Redis的资料汇总--不错的redis资料
https://yq.aliyun.com/articles/4779?spm=5176.100239.blogcont53867.146.5ymjzB原创 2017-01-21 10:41:52 · 641 阅读 · 0 评论 -
aerospike异步处理
1、异步1、集群在启动时会初始化出异步线程连接队列,其中cluster->async_max_conns_per_node为每个阶段异步最大连接数,可配。2、1)先申请as_event_loop_capacity(为)个异步队列空间2)将最大连接数分配到每个异步队列中。Max=最大连接/队列个数,rem=03、初始化每个队列。队列为空4、 //1、as_n原创 2017-03-05 15:11:28 · 1649 阅读 · 0 评论 -
aerospike 持久化磁盘时,namespace与磁盘的关系
原创 2017-06-28 22:16:52 · 1501 阅读 · 0 评论 -
Aerospike SSD模式下写入swb内的记录格式
原创 2017-09-29 21:12:05 · 1001 阅读 · 0 评论