elasticsearch,kibana-4,star-schema,datamart,Sql Server,elasticsearch,Kibana 4,Star Schema,Datamart" /> elasticsearch,kibana-4,star-schema,datamart,Sql Server,elasticsearch,Kibana 4,Star Schema,Datamart" />

Sql server 在ElasticSearch中,什么是好的web应用程序SQL Server数据集市实现?

Sql server 在ElasticSearch中,什么是好的web应用程序SQL Server数据集市实现?,sql-server,elasticsearch,kibana-4,star-schema,datamart,Sql Server,elasticsearch,Kibana 4,Star Schema,Datamart,来自RDBMS背景,并试图围绕ElasticSearch数据存储模式进行思考 目前在SQL Server中,我们有一个星型架构数据集市,RecordData。行按用户ID、与其余可搜索记录相关的地理位置、标题和描述(这是自由文本搜索字段)组织 我想将此转移到ElasticSearch,并阅读了关于为每个用户创建单独索引的内容。如果我正确理解这一点,根据这个建议,我将在每个用户索引中创建一个RecordData类型,对吗?对于便于分析的用户索引,推荐的命名约定是什么 我对该建议的一个问题是,如何在

来自RDBMS背景,并试图围绕ElasticSearch数据存储模式进行思考

目前在SQL Server中,我们有一个星型架构数据集市,
RecordData
。行按用户ID、与其余可搜索记录相关的地理位置、标题和描述(这是自由文本搜索字段)组织

我想将此转移到ElasticSearch,并阅读了关于为每个用户创建单独索引的内容。如果我正确理解这一点,根据这个建议,我将在每个用户索引中创建一个
RecordData
类型,对吗?对于便于分析的用户索引,推荐的命名约定是什么

我对该建议的一个问题是,如何在ES服务器上组织多个web应用程序?你不想让所有这些用户索引到处都是

每个应用程序都有一个索引,每个SQL Server表都有一个类型,这是不是很糟糕

因为在SQL Server中,我们有其他用于用户配置的表,基于用户ID,我认为我可以在用户索引中创建新的ES类型用于配置。这是推荐的模式吗?我不希望这个web应用程序有两个数据库系统


欢迎您的建议,谢谢。

我也经历了同样的事情,还有一些事情需要考虑

数据建模

你说你今天使用星型模式。Elasticsearch通常适用于非规范化数据,其中与星型模式不同,所有信息都驻留在每个文档中。如果您可以接受非规范化,这很好,但我假设,因为您已经有了星型模式,所以非规范化数据不是一个选项,因为您不想在每次位置名称更改时更新数百万个文档(例如,如果我理解用例的话)。至少在我的用例中,这不是一个选项

规范化数据的Elasticsearch选项是什么?

这让我们想到如何将类似星型模式的数据放入类似Elasticsearch的系统中。文档中有几个选项,我关注的主要选项是

  • 嵌套对象-有关详细信息,请参阅。在嵌套对象中,整个信息保存在单个文档中,这意味着一个位置及其相关用户将位于单个文档中。这可能会使它不是最佳的,因为文档将是巨大的,而且位置名称的更改将需要更新整个文档。因此,这是更好的,但仍然不是最优的
  • 父子关系-更多详细信息,请访问。在这种情况下,位置和用户记录将以类似于关系数据库的单独索引的形式存在。这似乎是我们所需要的正确模型。此选项唯一的主要问题是,截至本文撰写时,Kibana 4没有提供基于父/子关系操纵/聚合文档的方法。因此,如果您使用Elasticsearch的主要驱动程序是Kibana(这是我的),那么这种方法就消除了该选项。如果您想从elasticsearch作为一个引擎的速度中获益,这似乎是您的用例所需要的选项
在我看来,一旦你做对了数据建模,你所有的问题都会更容易回答

关于服务器本身的组织,我们的组织方式是在负载平衡器(所有这些都托管在云上)后面有一个由3个elasticsearch节点组成的单独集群,然后让您的所有Web应用程序使用elasticsearch API连接到该集群


希望能有所帮助。

谢谢您提供的信息。回复:父/子:保存在单独索引中的用户记录。。。你是说类型(表格)吗?如何使用ES服务器组织多个应用程序-每个应用程序一个索引?不同类型。每个应用程序一个索引是可以的,问题是数据是如何建模的,以及您是否设想对两个索引进行查询。