位图索引bitmap(一):基本概念

1 基本概念

位图索引(bitmap index)技术是一类特殊的数据库索引技术,其索引使用bit数组(或称bitmap、bit set、bit string、bit vector)进行存储与计算操作。

下面给出位图索引的定义:位图索引可以看作是存储了大量bit位的bit序列,并且通过这些bit序列上的按位操作来响应查询请求,同时每个bit序列中的位数与数据表中的行数是一致的(the bulk of the index data is stored as sequence of bits and these bit sequence are primarily used in bitwise logical operations to answer queries. Typically, each sequence of bits has as many as the number of rows in the data table. Each such sequence is called a bitmap, which gives rises to the name of bitmap index)

2 表现形式

位图索引的概念最早出现在1987年O’Neil发表的Model 204中。传统位图索引适用于低基数(cardinality)列。在索引技术中,列的基数描述了一个列中数据的散列程度,表示该列中不同值的个数;其中一个最极端的低基数的样例就是布尔类型,只含有true和false两种值,所以布尔类型列的基数值为2。
下图是位图索引的一个直观描述。其中,Identifier列是每一行的唯一标识,HasInternet是索引列,那么右侧的Bitmaps下方的两列Y和N则表示左侧所对应的bitmap索引。
位图索引逻辑视图

3 传统位图索引与B-tree类索引对比

传统位图索引由于其结构的特殊性,所以在存储空间和特定列的查询性能上都存在一定优势,但是在传统以处理事务为主的数据库领域,我们使用较多的依然还是B-tree(Comer,1979)或者B-tree变种类型(以下统称B*-tree)索引。那么,本节我们将总结传统位图索引与B*-tree索引技术各自的结构特点、优势、局限性以及适用场景。
传统位图索引与B-tree类索引对比

4 位图索引家谱与发展历程

位图索引家谱与发展历程

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`Gdiplus::Bitmap::FromStream` 是 GDI+ 库中的一个函数,用于从流中加载像。其函数原型如下: ```c++ Gdiplus::Status FromStream( IStream *stream, BOOL useEmbeddedColorManagement = FALSE ); ``` 其中,`stream` 参数是一个指向 `IStream` 接口的指针,用于指定要加载的流对象;`useEmbeddedColorManagement` 参数是一个布尔值,用于指定是否使用嵌入的颜色管理数据。 `Gdiplus::Bitmap::FromStream` 函数返回一个 `Gdiplus::Status` 枚举值,表示加载像的结果。如果加载成功,返回值为 `Gdiplus::Ok`,否则返回其他错误代码。 使用示例: ```c++ Gdiplus::Bitmap* bmp = NULL; // 像对象指针 IStream* istream = NULL; // 流对象指针 // 创建流对象 CreateStreamOnHGlobal(NULL, TRUE, &istream); // 将数据写入流 // ... // 从流中加载像 Gdiplus::Status status = Gdiplus::Bitmap::FromStream(istream, &bmp); // 检查是否成功加载像 if (status != Gdiplus::Ok || bmp == NULL) { // 加载失败,处理错误 // ... } // 成功加载像,可以使用 bmp 对象进行绘制等操作 // ... // 释放资源 delete bmp; istream->Release(); ``` 在使用 `Gdiplus::Bitmap::FromStream` 函数加载像时,需要注意以下几点: - 流对象必须在使用完毕后释放,否则会造成内存泄漏; - 像对象也必须在使用完毕后释放; - 加载像时需要检查返回值和像对象是否为空,避免出现错误。 希望这可以帮助到你。如果你有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值