数据库 数据库选择,急寻!

as181920 · 2012年12月03日 · 最后由 pongyo 回复于 2012年12月04日 · 4070 次阅读

如题找一个数据库,需求很简单就是每条数据类似 json/hash,没有固定字段,这点业务层不深入。 1,mysql/postgresql 可以将业务的表、字段、内容分三个数据表来存,关连查询来获取。这样勉强可以实现,但是 sql 高效的地方没用上,反而用了最低效的地方,以后扩展也不易。特别 mysql 以后不够开源,postgresql 字段要求太严格。

2,mongodb 可以 schema-free 存储,但是遇到排序等,需要有索引,但是字段不固定,没法对这些动态的字段建索引,故受阻。

3,elasticsearch 用来存储 这虽然是个搜索引擎,单也可以用来存储,似乎可以动态字段(每次也就是 http 传一个 json),但是没有深入用过,不清楚。话说回来,毕竟是个搜索引擎,用来做存储总归好多坑要自己填吧

4,redis 等 并不是临时和热数据,都放 redis 偶尔断电,搬机器,数据多了等情况感觉难搞,虽然没深入。

故,求推荐!!!

redis 也可以连接数据库的吧

需求很简单就是每条数据类似 json/hash,没有固定字段。这两条就可以做出决定了,mongodb。

#2 楼 @Rei #3 楼 @woaigithub 说了,数据大了以后没法处理索引,连最基本的排序都做不了。 内存排序上限值好像是 32M,可能新版本会大很多,但还是有上限。所以对于持续动态的字段的数据累积,无法建立索引,没法排序。后续功能没法做。 能解决我才能继续用 mongo 阿,不是我不想阿,已经填了好多坑了。

Postgres, 支持 native json datatype

#4 楼 @as181920 无法想象 mongodb 索引不了,举个例子?

#5 楼 @knwang 老版本没 json datatype 的,而且要索引的话,好像还是 hstore+GiST/GIN 比较好

关键是看索引使用场景来决定是用搜索引擎那种样子的,还是用 Postgres 或者 CouchDB。

#6 楼 @Rei 不是数据库本身无法索引。是我的字段永远是不定的(每一条数据可能是新的和以前不一样的字段,存到一个 collection 里面),根本没有固定的 key 用来建立索引,而没有索引就没法排序(数据量超过内存时)。

#7 楼 @bhuztez 自己看了看,也是在 postgres 和 couchdb 之间选,没深入哈。相对感觉前者毕竟积累多年,坑少一点,基础的东西都不会缺。 postgre 的 json 好像新版才有没积累多久,postgre 似乎和乒乓球一样,入门成本比较高哈(除了常规 sql,可选择可配置可有优化的好多)。 回头去看看 postgre,除了官网,有啥资料也可以推荐给我。 Thx

postgresql 新的 json 没太大用,只是做了一下 validation 看看是不是合法的 json 格式。 不过可以装一个 pl/v8,这样对 javascript 的支持更好些。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号