【问题标题】:switching from mySQL to noSQL - Dictionary Website从 mySQL 切换到 noSQL - 词典网站
【发布时间】:2012-08-27 17:28:30
【问题描述】:

我正在开发一个包含各种语言的词典网站,我可以将这种语言的每个人翻译成其他所有语言,我目前正在使用 mySQL,如果我想将英语翻译成中文,例如,我有一个表“en_ch”包含所有带有翻译的单词,每个表大约有 90.000 - 150.000 个条目。所以 mySQL 相当慢,而且也很难映射所有属性,一个翻译可以有元信息,例如欧罗巴可能意味着大陆或木星的月亮,所以我有一个类型标签,可以是“地理”' astro' 'med' 等......用户也可以评价翻译的好坏,一种语言的一个词可以有另一种语言的多个翻译,或者可能只有一个,如果我使用数据库规范化,事情变得真的如果我查询元信息会很慢。

所以我认为使用 NoSQL 数据库可能比 RDBMS 有一些好处。 问题是.. 我对 NoSQL 不太了解,我以前从未使用过它,所以我在这里询问我正在做的事情是否有某种最佳实践,或者这是否是一个好主意。

如果我使用 mongoDB,我会为每个翻译创建一个文档(/english -> German / German -> chinese / ..)并将每个翻译保存为一个列表,其中键是第一种语言,值是翻译,我也认为可以像上面提到的那样赋予每个值属性(对吗?)

这是最好的方法吗?

查询会比在 mySQL 中更快吗?

【问题讨论】:

  • 我感觉实际问题与您的 MySQL 模型和索引策略有关。您愿意发布您的数据库架构吗?
  • 90-150K 条目对于 MySQL 数据库来说是非常温和的。它可以通过正确的索引和架构轻松处理数百万个条目。
  • 实际上..我宁愿不这样做 :D 我仍在研究 mySQL 模型,有些事情我不知道如何实现它们:每个翻译都可以有一个评分(好-坏),每个单词可以有一个或多个标签,例如 [med.][Geo] / [Noun] /[verb]...,不同的写作风格(例如繁体中文/简体中文),发音(虽然我不需要发音在每种语言中)一个音频文件,一个或几个例句,以及在不同语言中具有相同含义的所有单词都可以有一张图片,我认为在 NoSQL 中映射可能会更容易......
  • +1 请求如何设置索引。 MySQL 应该很容易处理 150k 行的表。对您的查询运行 EXPLAIN 以查看是否正在使用索引。关于 NoSQL,如果您在使用 MySQL 时发现自己有很多具有 NULL 值的字段,那么 MongoDB 可以从数据建模的角度提供帮助,但是您仍然需要设置正确的索引才能以与 MySQL 完全相同的方式获得良好的性能。

标签: php mysql mongodb database


【解决方案1】:

很可能,您最好的工具已经存在,它被称为 dict、字典服务器、客户端以及各种字典和工具。

还有一个rfc 2229 定义了dict protocol。这些工具(服务器、客户端和转换器)通常打包并在大多数 Linux 发行版中找到。

请查看http://www.dict.org/ 了解更多信息。

【讨论】:

    猜你喜欢
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2014-01-29
    • 2010-09-08
    相关资源
    最近更新 更多