我发起了 一个 海量文本 分析 和 建立索引 的 开源项目 EasySearch
这篇文章 的 起因 是 这几天 受到 老郭 的 启发 。
老郭 爱 捣鼓, 这几天 又跟 我 提到 ElasticSearch + log4net ,,, 嗯, 这不, 我又 从 他 那里 学到了 一些 东西 。
ElasticSearch + log4nett 确实 不错, 功能 很酷, 界面 也很酷 。 见 http://kingmoo.cn
于是, 我又想 搞 一个 开源项目, 像 ElasticSearch 这样 的 。
ElasticSearch 的 基本功能 无非 就是 海量文本 分析 和 建立索引 。
这些 在 技术上 没有什么 问题 ,
有关 文本分析 , 见 《SelectDataTable》 https://www.cnblogs.com/KSongKing/p/9455216.html ,
《自己写一个 C 语言 编译器 InnerC》 https://www.cnblogs.com/KSongKing/p/11013210.html ,
《自己写一个 正则表达式 引擎》 https://www.cnblogs.com/KSongKing/p/11013210.html 。
有关 索引, 见 《我发起了一个 .Net 开源 数据库 项目 SqlNet》 https://www.cnblogs.com/KSongKing/p/9501739.html ,
《出一道题 : 二分法 是 n 分法 中 最快 的 吗 ?》 https://www.cnblogs.com/KSongKing/p/13732788.html 。
也可以 用 Hash 表 的 方式 建立 索引, 有关 Hash 表, 见 《自己写一个 Hash 表》 https://www.cnblogs.com/KSongKing/p/10425152.html 。
当然, 还会用到 大规模并行计算, 也可以说是 分布式计算, 有关 分布式计算, 见 《利用 MessageRPC 和 ShareMemory 来实现 分布式并行计算》 https://www.cnblogs.com/KSongKing/p/9490915.html 。
关于 ElasticSearch , 可以 看看 :
《DB与Elasticsearch混合之应用系统场景分析探讨》 https://www.toutiao.com/i6890739219753337347/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1×tamp=1604504584&app=news_article&utm_source=weixin&utm_medium=toutiao_android&use_new_style=1&req_id=202011042343030102020891685F0D35D3&group_id=6890739219753337347
《Elasticsearch的功能、使用场景以及特点》 https://www.cnblogs.com/ylht/p/10178706.html
相比 关系数据库 和 其它 NoSql 数据库, ElasticSearch 的 特点 :
1 可以对 所有 字段 建立索引
2 可以对 任意表 任意字段 组合查询, 这 意味着 可以 对 任意表 任意字段 建立 联合索引
其实 关系数据库 也可以 做到 这 2 点, 为什么 关系数据库 不做 呢 ?
因为 关系数据库 的 核心任务 是 事物(交易), ACID, 数据完整性 , 所以 不宜 去做 索引大泛滥 。
但 事实上, 关系数据库 在 这方面 也 做过 尝试 和 努力, 比如 列索引 。
另一方面, ElasticSearch 可以 大规模 扩展节点, 关系数据库 要 这样做 也 比较难, 虽然 有 CockroachDB 还有 Google 的 BigTable 等等 这些 分布式关系数据库 。
但是, 这些 分布式关系数据库 还要用 原子钟 来 同步时间 以 获得 异地 的 数据完整性, 且 分布式 意味着 交易 的 时间 可能 更长 。
所以, 根本上, 关系数据库 的 核心任务 是 ACID, 而 ElasticSearch 不关心 实时 的 数据变化, 只管查询 。
这是 两者 表现 差异 的 根本原因 。
事实上, MongoDB 可以像 ElasticSearch 这样做, 但 Mongo 的 设计 初衷 可能 更 对象化 一些, 比如 一个 老师 对应 多个 学生, 通过 主外键 关联 这一类, 不太侧重 任何字段 建立索引 和 任意表 的 任意字段 组合索引 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2018-11-06 一个类似 Twitter 雪花算法 的 连续序号 ID 产生器 SeqIDGenerator