2

我正在使用 SQL 2008 在 .NET 中开发多租户应用程序。每个租户都可以指定自己的语言。例如,一家中国公司可能会使用我的应用程序,并希望通过中文字符对他们的所有数据进行排序和搜索。一家德国公司可能会使用我的应用程序,并希望通过德语字符对他们的所有数据进行排序和搜索。

我希望有一个数据库来存储所有数据,按租户 ID 分段。

一个表可能看起来像这样:

成员

TenantID MemberID 名称

1234 5678 约翰

1235 5679 简

数据将存储在 unicode 列 (nvarchar) 中。我还想使用全文索引器来索引数据。

在所有数据都存储在同一个数据库中的多租户环境中,如何最好地处理排序规则?

我应该在查询字符串中指定排序规则(即SELECT * FROM Members ORDER By Name Collat​​e(中文))吗?动态传递排序规则是否存在任何性能问题,尤其是当列上的索引以一种特定语言排序时?

还是为每种语言都有一个数据库并在运行时确定要使用的连接字符串会更好吗?

另外,如何最好地处理全文索引?我相信它只能用一种语言索引,并且每个表只能指定一个索引。

还有什么要考虑的吗?

谢谢!

4

1 回答 1

1

我相信在您的情况下,您只能选择:

  • 在应用层处理排序规则(这就是我过去所做的)
  • 非规范化您的数据库并将内容保存在单独的每种语言表中(并在未来处理很多痛苦,但它可能是可行的)

至于全文搜索中的多种语言(不是我非常熟悉的主题),MSDN 有一些文档,这似乎是说您不必每列级别上指示语言,但可能使用 BLOB 或 XML 语言设置:

SQL Server 2005 全文搜索在索引时采用 BLOB 和 XML 文档中文档指定的语言设置。

不过,这可能不是您想要的。

于 2010-08-14T13:28:39.277 回答