AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

i4o 开源项目增强 LINQ 索引功能

  • 2018-10-30
  • 本文字数:619 字

    阅读完需:约 2 分钟

当一个 LINQ 表达式直接访问数据库时,DLINQ Provider 支持所有数据库索引。但是 LINQ 不仅会访问数据库,它还可能访问 XML 或者更简单的对象集合等。对于稍大些的查询,索引的缺失可能成为一个问题。

为了解决这个问题,Aaron Erickson 创建了一个名为 Index for Objects 或者 i4o 的产品。这个项目是开源的,可以下载下来试用。任何能增加到属性的可索引 Attribute 都应该被索引。当对象被依次放在 IndexableCollection 里时,索引就被自动创建。

在运行时情况下,当你调用 Where 和 Join 等扩展方法时,i4o 就开始起作用。它会评估表达式树,如果合适,就用一个索引查找(Index Lookup)替代 for-each 循环。

这个技术目前只在使用大型的内存对象集合的情况下才可用。在测试一个有着 100 万对象的集合时,i4o 将速度提高了差不多两个数量级。

作为一个新的项目,它还有很多的问题需要解决。有些比较简单,不久就能被实现,比如增加从集合中删除对象的支持或者支持 BindingList 等。但有些比较困难,比如在一个已被索引的集合里如何处理对象的更新。对象本身不知道它们在集合中,要给每一个被索引的类增加 INotifyPropertyChanged 支持是很无聊的,而且看上去用一些面向方面编程(AOP)技术去注入(Inject)必要的事件钩子可能是不可能实现的。

在 CodePlex 网站上此项目提供 Binary 和源代码格式下载。如果想了解更多关于 i4o 的信息或者提一些关于性能提高方面的建议,可以浏览 Aaron Erickson 的博客

查看英文原文: Indexes for LINQ

2018-10-30 16:491437

评论 1 条评论

发布
用户头像
mark
2018-11-08 22:30
回复
没有更多了
发现更多内容

OpenHarmony南向能力征集令

Laval小助手

从入门到精通:系统性学习Linux虚拟网络设备的全面指南

GousterCloud

Linux Kenel 虚拟网卡

DTC2024精彩预告 | MatrixOne:超融合数据库新星崛起,掀起全新数据革命

MatrixOrigin

数据库 分布式 云原生

开源无代码 / 低代码平台 NocoBase 0.21:图表及工作流支持多数据源

NocoBase

开源 开发者 低代码 开发工具 无代码开发

电力物联网系统设计

能源恒观

物联网 电力 新能源

分析比较微服务框架:Spring Cloud 和 Dubbo

Apifox

程序员 微服务 Spring Cloud dubbo 后端

Apache Doris 基于 Job Scheduler 实现秒级触发任务调度能力

SelectDB

数据库 数据分析 大数据 开源 调度平台

BOE(京东方)隆重举办周年庆典暨年度“京东方人”奖表彰大会 以文化传承谱写高质量发展新篇章

科技热闻

Web3 游戏周报(3.31-4.6)

Footprint Analytics

gamefi\ Web3 游戏

Stable diffusion 初学者指南

程序那些事

程序那些事 程序那些事; openai AIGC Stable Diffusion

保持人才和技术的新鲜感,倡导数据驱动的创新和财务管理

智达方通

人才培养 全面预算管理 全面预算管理系统 全面预算管理平台

得物千人规模敏捷迭代实践分享

得物技术

项目管理 互联网人 PMO 得物技术 企业号 4 月 PK 榜

CentOS 7 升级 5.4 内核

MatrixOrigin

数据库 分布式 云原生

API接口在数据分析中的应用:淘宝商品信息获取实例

技术冰糖葫芦

api 货币化 API 文档

i4o开源项目增强LINQ索引功能_.NET_Jonathan Allen_InfoQ精选文章