写点什么

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

评论 1 条评论

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

算法训练营 - 学习笔记 - 第十周

心在飞

面试官嘲笑我,这你都不会?

李阿柯

php 面试 redis cluster

【Vue2.x 源码学习】第十四篇 - 生成 ast 语法树 - 模板解析

Brave

源码 vue2 6月日更

【21-7】Grafana如何配置Thanos 查询历史数据

耳东@Erdong

Grafana Prometheus Thanos query 6月日更

Java中生成随机数的4种方式!

王磊

Java 随机数

回归分析

Qien Z.

6月日更 回归分析

架构实战训练营 - 模块五课后作业

Johnny

架构实战营

Pandas高级教程之:Dataframe的重排和旋转

程序那些事

Python 数据分析 pandas 程序那些事

Pandas高级教程之:Dataframe的合并

程序那些事

Python 数据分析 pandas 程序那些事 数据分析研究

springboot启动流程之加载入口类

梦倚栏杆

算法训练营 - 知识总结

心在飞

算法之异位词字符处理

Skysper

算法

浏览器上有趣的Console命令都了解吗?

空城机

大前端 浏览器 6月日更

视频号真人首播 - 踩坑经验总结

悟空聊架构

复盘 直播 视频号 6月日更

「SQL数据分析系列」3. 查询入门

Databri_AI

MySQL select

你有一份Rx编程秘籍请签收

vivo互联网技术

响应式编程 大前端 函数编程 RXJS

实现一个执行Explain 命令的Mybatis 插件

water

Python——列表切片

在即

6月日更

【LeetCode】猜数字大小Java题解

Albert

算法 LeetCode 6月日更

docker搭建Nginx和Tomcat负载均衡

叫我阿柒啊

nginx Docker 负载均衡

云图说|华为云自研云数据库GaussDB NoSQL,兼容多款NoSQL接口的数据库服务

华为云开发者联盟

nosql Influxdb Cassandra mongo GaussDB NoSQL

[译] Android 的 Java 9,10,11,12 的支持

Antway

6月日更

假如我是创业公司CEO之电商小程序微服务拆分

ifc177

极光开发者周刊【No.0611】

极光GPTBots-极光推送

Java 字符串 split 踩坑记

mghio

6月日更

【Flutter 专题】127 图解基础 Image 小组件

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

浪潮云说丨云应用容灾:四大关键能力,护航业务连续性

云计算

前端 CSS 变量简介及基本使用方法

编程三昧

CSS css3 大前端 样式

让前端小姐姐愉快地开发表单

蛋先生DX

vue.js 表单 动态表单 6月日更

react源码解析12.状态更新流程

全栈潇晨

React

Apache Drill 1.19.0 发布集锦

MPP Apache Drill 联邦查询和分析

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