写点什么

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:491268

评论 1 条评论

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

TypeScript 之映射类型

冴羽

JavaScript typescript 翻译 大前端

vue单页面和多页面的区别?

CRMEB

AI模型也需要资产管理,星环科技重磅推出AI运营平台MLOps 星环科技 星环科技

星环科技

AI

架构模式及其应用 | 内部分享

空空

内容合集 签约计划第二季

架构实战营 - 微信业务架构 & 学生管理系统

阿门阿前一颗葡萄树๑

架构实战营 #架构实战营 「架构实战营」

【技术分享】DOSM Web项目优化分析 & 解决方案

云智慧AIOps社区

Hoo虎符研究院 | 区块链简报 20211206 期

区块链前沿News

虎符 Hoo虎符

架构实战营4期-第1周作业

周念

「架构实战营」

Android C++系列:Linux线程(三)线程属性

轻口味

android 28天写作 12月日更

可视化埋点在 React Native 中的实践

Shopee技术团队

大前端 可视化 埋点 React Native

创业团队组织建设-跨部门沟通

wood

创业 沟通 28天写作

数研所已实现在数字人民币中积极探索区块链应用

CECBC

被寄予厚望的区块链在数据交易中能发挥的作用是什么?

CECBC

IT 好文&好课分享

hackstoic

信也科技 x StarRocks:打造统一销售数据平台

StarRocks

数据库 高并发 StarRocks

质量基础设施“一站式”服务信息平台建设,NQI一站式服务平台

电微13828808271

智慧社区综合管理平台解决方案,智慧社区一体化管理系统开发

电微13828808271

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

不脱发的程序猿

Python qt PyQt GUI设计 容器控件类

Python Qt GUI设计:5种事件处理机制(提升篇—3)

不脱发的程序猿

Python qt PyQt GUI设计 事件处理机制

5.《重学JAVA》--编码规范

杨鹏Geek

Java 25 周年 28天写作 12月日更

星环科技分布式文件系统TDFS大揭秘(上)

星环科技

大数据 计算与存储

xxxx

guangbao

未来“数”于你 | 墨天轮携手 Vertica 发布技术文章征集令,双重大奖蓄势待“发”

墨天轮

数据库 征文大赛 vertica

流上机器学习,星环科技Sophon Base助力海洋石油富岛工艺监测智能化

星环科技

实用机器学习笔记五:探索性数据分析

打工人!

机器学习 学习笔记 12月日更 李沐 实用机器学习

Hoo虎符研究院 | 币圈后浪——KBOX

区块链前沿News

虎符 Hoo虎符 Hoo 虎符交易所

从航海贸易到元宇宙,从公司制到DAO

CECBC

数字人民币生态体系进一步完善 试点场景加速拓展

CECBC

vivo 敏感词匹配系统的设计与实践

vivo互联网技术

服务器 内容审核 架构设计实战 文本检测

区块链电子签章平台搭建,区块链电子合同系统

电微13828808271

同程旅行 IAST 落地实践

火线安全

DevOps DevSecOps 漏洞扫描 漏洞分析

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