Giter Site home page Giter Site logo

发现索引数据太庞大了,内存完全不够用,想把索引数据改存在数据库,应该改哪个位置? about wukong HOT 23 OPEN

huichen avatar huichen commented on September 23, 2024
发现索引数据太庞大了,内存完全不够用,想把索引数据改存在数据库,应该改哪个位置?

from wukong.

Comments (23)

huichen avatar huichen commented on September 23, 2024

索引表放在内存中是为了方便查询,如果放在数据库会慢很多,你确定这是你想要的?

from wukong.

insionng avatar insionng commented on September 23, 2024

服务器内存太小,我目前考虑是改用Goleveldb来存索引表,应该属于可以接受的范围内。

from wukong.

andeya avatar andeya commented on September 23, 2024

确实,我现在已经把悟空用到项目中了,不过做了很大的改动,其中就有core中对接数据库的改造,直接存储反向索引文档,节约内存,也节约初始化时间。

from wukong.

insionng avatar insionng commented on September 23, 2024

@henrylee2cn 能否告知修改的思路?大概哪些地方做了怎么的修改?

from wukong.

andeya avatar andeya commented on September 23, 2024

创建两个公共变量,一个反向索引列表的,一个文档评分字段的,在索引器、排序器初始化时,将指针赋给对应字段,大致是这个思路,当然原来的持久化存储那一套要全部去掉。

from wukong.

insionng avatar insionng commented on September 23, 2024

@henrylee2cn 哦,也就是修改后原有的持久存储部分就废了,明白~

from wukong.

insionng avatar insionng commented on September 23, 2024

@henrylee2cn https://github.com/henrylee2cn/wukong 好像没有看到存储到数据库的部分.

from wukong.

andeya avatar andeya commented on September 23, 2024

嗯,因为我把悟空写进了我这边的一个核心架构中,涉及一小部分业务方面的东西,不能独立使用,所以就没更上去

from wukong.

andeya avatar andeya commented on September 23, 2024

今天我根据作者的最新源码,改个较完美版本,提交上来吧

from wukong.

insionng avatar insionng commented on September 23, 2024

@henrylee2cn 期待!

from wukong.

andeya avatar andeya commented on September 23, 2024

https://github.com/henrylee2cn/wukong
这个版本是在官方最新源码基础上改进的:

  1. 持久化存储对象,从原始文档改为反向索引文档与文档评分字段,从而避免程序重启后,需要重新分词、索引的麻烦;
  2. 将持久数据库分片数与索引器、排序器的分片数保持一致,即实现一一对应关系,从而保证从数据库可以完美恢复;
  3. 依然存在的问题:悟空采用的这两中KV数据库,读写速率太慢,严重拖累高并发的特性。

from wukong.

insionng avatar insionng commented on September 23, 2024

@henrylee2cn 第三个问题我建议用goleveldb,读写都很快,之前我就是用这个替换原来的两种数据库。

from wukong.

insionng avatar insionng commented on September 23, 2024

@henrylee2cn 我提交了Goleveldb存储的支持代码,因为并发协程的关系,分片越多,读写就越快,我分了64片,每分钟基本1万数据左右。

from wukong.

andeya avatar andeya commented on September 23, 2024

@insionng 没有找到你提交的代码啊?

from wukong.

andeya avatar andeya commented on September 23, 2024

@insionng 急用啊,兄弟,哪里有你改的代码?那个存储分片的问题,我可以优化的。

from wukong.

insionng avatar insionng commented on September 23, 2024

@henrylee2cn andeya#1 https://github.com/henrylee2cn/wukong/pull/1/commits 我提交到这里了,须要合并一下~

使用的时候设一下 os.Setenv("WUKONG_STORAGE_ENGINE", "ldb") 就可以了~

from wukong.

insionng avatar insionng commented on September 23, 2024

@henrylee2cn 数据持续增加中,内存快爆了...索引表改存数据库改得怎样呢?期待不需要占用太多内存的版本,慢点是可以接受的.

from wukong.

tugouer avatar tugouer commented on September 23, 2024

@insionng
@henrylee2cn
搞得怎么样了你们

from wukong.

insionng avatar insionng commented on September 23, 2024

@boojoo-exp 单纯的sego分词效果其实不好,所以还是需要wukong做索引。我现在也在等 @henrylee2cn 的消息。

from wukong.

csrgxtu avatar csrgxtu commented on September 23, 2024

@henrylee2cn 你基于wukong做的改进是放在你的代码库还是已经merge到了wukong了。

from wukong.

csrgxtu avatar csrgxtu commented on September 23, 2024

因为索引很大,所以我将索引内容放到了文件中持久化,但是没次搜索启动载入的时候很耗时间,这里我不知道Lucene是如何做的,lucene就很快。

from wukong.

huichen avatar huichen commented on September 23, 2024

@csrgxtu wukong 最初是作为 无状态微服务 的核心搜索模块来设计的,全量数据保存在内存中,不做持久化存储,可以随时重启服务,并主要从网络数据库中更新全量和增量数据,建索引的瓶颈主要在网络 IO 的 latency。lucene 的优化方向并不是 wukong 的初衷。

from wukong.

WanliTian avatar WanliTian commented on September 23, 2024

有没有支持多级索引的计划

from wukong.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.