1. 首页
  2. 文档大全

大数据平台详细设计

上传者:na****g 2022-06-27 16:43:05上传 DOCX文件 153.78KB
大数据平台详细设计_第1页 大数据平台详细设计_第2页 大数据平台详细设计_第3页

《大数据平台详细设计》由会员分享,可在线阅读,更多相关《大数据平台详细设计(51页珍藏版)》请在文档大全上搜索。

1、大数据平台详细设计大数据平台详细设计V1.0 版产品简介 4 重要公共模块 5 , 基础数据结构Array 内存访问数据结构MemoryBlockMemoryPool 远程函数调用RPC 13MASTERNODE 19 简介 .19ONTROlM块 19 1. C, 表分布策略 192. SQl模块 查询执24,行策略 26,执行器 32 ,计划节点 36 ,元组操作 60 ,表达式计64 ,投影操作 68DATANODE 75 简.75 1. 重要模块 75,DB 75,Table 76, TabletGroup 78, Tablet 79, TabletOrder 80第 2 页 共 11

2、2 页 ,TableInfo 812.数据存储 813.数据 导入 86,概括 86 ,多节点的Loading 89分布式机制 93 1. 概括 932.数据备份和同步 99,主备份与副备份的区别 103第 3 页 共 112 页产品简介DreamData大数据实时分析数据库是从分布式数据库的基础上发展而来,吸收了大规模并行处理(MPP-massively parallel processing )、NoSQ囱J存数据库、数据库内压缩等多项最新技术成果的优势,结合内存计算技术,直接在内存中优化程序和计算,为用户提供卓越的性能体验。DreamData实现了数据处理中新的业务途径。事实上,它远远超

3、过了数据库的传统定义,并且其性质远不只是内存中磁盘数据结构上的本地缓存。DreamData最大的特色就是大而快,它能极快地导入和处理海量的数据,并在这个基础上能极快地进行用户所需数据统计和分析。在同样的硬件配置条件下,相对传统关系型数据库而言,DreamData的单机性能要高出50倍以上,并且随着节 点数量的增加,整体性能会同步提升。strMaster NodesClientStandbyData Node 0 Data Node 1 Datd Node 2 口百t司 Node 3第4页共112页重要公共模块,基础数据结构ArrayArray是程序中最常用到的当做数组的基础数据结构。可以方便的

4、使用 array_create 、array_add、array_get等接口对Array进行操作。一般较常见的接口都可以在Array.h中找到。Array* array_create(long long init_size, int elem_size); #define array_add(a, e)/* faster version, but no safe check */#define array_get(array, long_long_index)/* The Array Struct can not accessed directly by other modules, but

5、 put at the header file for array_add macro*/typedef struct Arraylong long used_size; /number of elements in this arrayint elem_size; /element's size in byteslong long allocated_size; /allocated size for this arraylong long allocated_bytes_size; /allocated bytes for this arraychar* data;Array;,

6、内存访问数据结构MemoryBlock因为代码全是使用C语言编写,虽然代码执行和内存使用更为高效,但是开发效率可能因此降低,为了更好的提高开发效率,在原始的内存上面用MemoryBlock数据结构进行了抽象。typedef struct MemoryBlockchar* memory; /* the beginning of memory block */int cursor; /* the cursor of memory block */int size; /* the allocation size of the memory block */第 5 页 共 112 页int fille

7、d_size; /* the number of bytes has been loaded or filled to this block */BlockType block_type; /* indicate the memory is malloced at poolheap or just for stack */ MemoryBlock;一般常用的操作MemoryBlock的接口如下所示:MemoryBlock* create_new_memory_block_struct(int block_size, BlockType block_type);MemoryBlock* crea

8、te_memory_block_by_existing_data(void* memory, int filled_size);MemoryBlock* create_memory_block(int block_size, boolean mem_align);MemoryBlock* clone_memory_block_on_heap(MemoryBlock* src_memory_block);void copy_memory_block_data(MemoryBlock* dest_block, MemoryBlock* src_block);#define block_memory

9、_pointer(block) (block)->memory)#define block_memory_pointer_by_offset(block, offset)(block_memory_pointer(block) + offset)void enlarge_memory_block(MemoryBlock* block, int incr_size);void clear_memory_block(MemoryBlock *block);void free_memory_block_struct(MemoryBlock* block);void free_memory_bl

10、ock(MemoryBlock* block);void free_memory_block_void(void* block);第 6 页 共 112 页void block_cat(MemoryBlock *block, void const* src, int size);void* block_get(MemoryBlock* block, int size);, 内存池 Memory Pool考虑到频繁申请释放内存会有较大的开销,为程序底层需要频繁申请和释放内存的地方使用了内存池 Memory Pool 这一种数据结构。整个代码逻辑并不复杂,但极大的改善了整个程序的性能。* The

11、Memory Pool Implementation contains two parts:* 1. memory block, works like byte buffer which concat and extract binary data.* 2. memory pool, which contains a lot of certain size of memory block for flexible usage.* TODO add mechanisms:* 1. have a variety of block size, such 32MB, 16MB, 8MB;* 2. th


文档来源:https://www.renrendoc.com/paper/212647175.html

文档标签:

下载地址