想了好多遍,还是想搞个类似 evernote 这种记事软件
1.树形菜单
2.按目录搜索内容
3.富文本和图片存储
4.跨平台,这个太艰难
甚至可以把网站也开发成这种形式,博客型网站主要还是记录为主,树形目录可以将个人的所有资料按类型一步步展开,整个知识体系都能清晰的分类出来,现在常规的博客只有一级目录,选择的时候太苍白了……当然缺点是可能目录的深度会很深
目录 1
-----目录 11
-----------目录 111
-----目录 12
-----------目录 122
目录 2
-----目录 21
-----目录 22
现在主要考虑 2 个问题,第一个就是搜索和点击目录的时候,需要能展示子目录的内容,也想过一个内容可以存多个分类中(可能有必要)
目前想到 2 个方式去实现
存储“目录 121 ”中的内容,分类的存储方式:
1.用字符型字段存储:目录 1 的 UUID+目录 11 的 UUID+目录 111 的 UUID
点击目录的时候,where category like '目录 1 的 UUID%' order desc date
这样就可以展示子目录的内容,而且可以支持一个内容处于多个分类中,对了还要做一下去重。
优点:数据库结构简单,数据看着很清晰,缺点,用 like 速度应该偏慢
2.用交换表的形式(应该是这个名词吧):
用 UUID 类型字段存储分类和内容的 UUID,每一级分类都存储一行,比如要存储“目录 121 ”中的内容,会是这样
增加第 1 行:目录 1 的 UUID+内容 UUID
增加第 2 行:目录 11 的 UUID+内容 UUID
增加第 3 行:目录 111 的 UUID+内容 UUID
如果它属于 2 个分类就再按这个方式增加就可以了
查询的时候,where category = '目录的 UUID'即可。
优点:查询速度应该挺快,缺点:数据库看起来会占很多空间,目录多了不知道会不会在性能上蓝瘦香菇。
按说这种需求应该很普遍,不知道大公司都是如何选择的,想学习下,其实如果只是个人使用,不管哪种应该都不会造成速度极慢,毕竟数据的量就在那摆着。
另外撘楼问下,应该有比较优秀的开源实现吧?(不过自己开发的好处是自由,思想的自由太重要了!!!缺点就是耗时费力,如果有好的开源,也是很好的,但是比较考虑得多的还是数据存储和同步的问题,毕竟个人搭建的话,环境是多样变化的)
1
nfroot OP 以前用过一段时间的 evernote,其实还不错的,后来被“ QQ-我的收藏”拉拢,毕竟再好的东西也比不上方便快速啊……但是 QQ 收藏的缺点也是显而易见,分类太多了难以管理。想来想去,树形目录是唯一的出路,比如维护系统的工具和知识,来这么一组内容,真是不要太方便了!
系统维护 --安装 -------分区 -------------MBR、UEFI 知识点 -------------分区、硬盘维护工具 -------镜像 -------安装 -------------安装工具 -------封装 -------------封装工具 -------------封装知识点 --维护 -------组策略 -------控制面板 -------注册表 |
2
nfroot OP 咦,这个不会没人回复吧,大佬们,求带一下啊
|
3
xiri 2019-05-08 14:31:20 +08:00 via Android
各种 wiki,文档管理系统不都是这样的吗?
|
5
merkle2222 2019-05-08 16:53:38 +08:00
nosql
|
6
qping 2019-05-08 16:54:48 +08:00
目录再多也不会到百万的级别,不需要优化性能,你还是考虑代码怎么容易实现吧
|
7
qinxg 2019-05-08 16:59:43 +08:00
|
8
agagega 2019-05-09 00:51:14 +08:00
## 树形菜单
我认真地想过这个问题,因为我想过写一个大纲软件,像 Workflowy 那样的。其实做树形结构,用数据库,成熟点的方法无非就 parent_id 和直接存 JSON 两个方法,然后搭配上必要的缓存。不过目录这样的结构总体比较浅,应该也不会有啥性能问题。Postgres 好像还有做树形结构的插件。 ## 按目录搜索内容 最简单的办法就是字符串匹配(其实稍微设计下搜索语法,比如空格分隔的两个词怎么处理,效果也可以),好一点,数据库应该有分词+索引+全文搜索插件的。 ## 富文本和图片存储 富文本只有用某种形式的 XML 了,其实编辑器才是更难搞的问题,所以用 Markdown 多好。图片就用文件存呗,然后用张表索引一下。 ## 跨平台,这个太艰难 做成 Web 就好了…… |