Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在NoSQL中存储动态数据_Mysql_Mongodb_Database Design_Lucene_Nosql - Fatal编程技术网

Mysql 在NoSQL中存储动态数据

Mysql 在NoSQL中存储动态数据,mysql,mongodb,database-design,lucene,nosql,Mysql,Mongodb,Database Design,Lucene,Nosql,我有一个场景,我需要存储非结构化数据,但我的其余数据是结构化和关系型的。非结构化数据类型的示例如下所述: User Type 1: How do you blah blah : 5 fields User Type 2 : How do you blah blah : 3 fields User Type 3 : How do you blah blah : 7 fields 所有这三种类型都被问到了同样的问题,你怎么胡说八道,但每种用户类型都使用不同数量的字段来回答。可以有很多不同

我有一个场景,我需要存储非结构化数据,但我的其余数据是结构化和关系型的。非结构化数据类型的示例如下所述:

User Type 1:

How do you blah blah : 5 fields

User Type 2 :

How do you blah blah : 3 fields

User Type 3 :

How do you blah blah : 7 fields
所有这三种类型都被问到了同样的问题,你怎么胡说八道,但每种用户类型都使用不同数量的字段来回答。可以有很多不同的用户类型

对于关系数据,我使用的是MySQL,但对于如何存储这些非结构化数据,我有点困惑:

序列化为JSON并存储在MySQL中 使用NoSQL 我的要求是高读取、平均更新、平均插入和不删除。不需要连接。我需要有保证的写入和高可用性。如果我选择NoSQL,根据CAP定理,它将是AP类型。我不会在短时间内创下数百万张唱片

我还计划在将来为这些数据提供文本搜索,但它不需要是实时搜索,因此我可以使用Lucene定期索引数据。当然,基于文档的NoSQL实现确实提供了这种开箱即用的功能。但我在一些地方读到过,人们建议不要将JSON数据存储在MySQL中。但是添加一个NoSQL层可能会有点过头

我该怎么办&如果你建议我选择NoSQL DB,我应该选择哪一个

编辑:
为了澄清,我不需要从存储的数据中查询特定字段。如果我需要这些数据,那么我需要的是整个数据,而不是特定的字段。我确实需要全文搜索,我也可以使用Lucene在MySQL上完成这项工作。

您可以通过使用行ID和单个文本列来实现MySQL,但这样您就无法查询字段了。您也可以考虑表继承,但如果您有很多类型,这将是一个烂摊子。底线是,您有充分的理由考虑替代解决方案,而不是弯曲关系数据库

所以从你所说的,我认为这确实是一个多克隆持久性的好用例。话虽如此,MySQL+NoSQL将增加应用程序的总体复杂性,因此您需要确保抽象两个数据访问层

对于数据库选择,面向文档的解决方案在查看数据动态、孤立的聚合时似乎非常适合。我会研究MongoDB或CouchDB,即使第二种选择似乎更合适


编辑:请参阅注释。

您可以通过使用行ID和单个文本列来使用MySQL,但这样您就无法查询字段。您也可以考虑表继承,但如果您有很多类型,这将是一个烂摊子。底线是,您有充分的理由考虑替代解决方案,而不是弯曲关系数据库

所以从你所说的,我认为这确实是一个多克隆持久性的好用例。话虽如此,MySQL+NoSQL将增加应用程序的总体复杂性,因此您需要确保抽象两个数据访问层

对于数据库选择,面向文档的解决方案在查看数据动态、孤立的聚合时似乎非常适合。我会研究MongoDB或CouchDB,即使第二种选择似乎更合适


编辑:请参阅评论。

我最近在一个大量使用SQL Server、MySQL和Mongo的平台上工作。我们存储的数据分布在这三个数据库系统中

这让我只渴望一种数据库技术

根据经验,我建议只创建一个文本字段并在其中存储JSON。您不能直接查询字段,但可以在可查询的文本字段旁边创建静态字段

在混合中引入另一个系统绝对不是小事

原因如下:

文档建模有很高的学习曲线。你不规范化数据,而是去规范化数据——这样做有点艺术。 配置了CouchDB和MongoDB集群之后,我可以告诉您,这不是一件容易的事——特别是当您进入生产环境时。 跨数据库技术进行查询当然不简单。
作为最后手段,我只想介绍一个单独的NoSQL解决方案。

我最近在一个大量使用SQL Server、MySQL和Mongo的平台上工作。我们存储的数据分布在这三个数据库系统中

这让我只渴望一种数据库技术

根据经验,我建议只创建一个文本字段并在其中存储JSON。您不能直接查询字段,但可以在可查询的文本字段旁边创建静态字段

在混合中引入另一个系统绝对不是小事

原因如下:

文档建模有很高的学习曲线。你不规范化数据,而是去规范化数据——这样做有点艺术。 配置了CouchDB和MongoDB集群之后,我可以告诉您这不是一个n o脑力劳动者——尤其是当你进入生产阶段时。 跨数据库技术进行查询当然不简单。
作为最后的手段,我只想引入一个单独的NoSQL解决方案。

表继承是指?@Varun否我是指表继承:。您可以有一个包含公共内容的基本用户表,并且在其他子用户类型表中有特定字段。但这只是一个假设,也许我误解了整个用户类型的含义。不。。表继承是不可能的,因为有很多用户类型&随着我们的扩展,它们将不断添加。因此,为它们中的每一个创建单独的表是不可行的。@VarunAchar好吧,如果你确定你永远都不需要,那么我想MySQL是一个更好的选择。这是对将来查看此内容的人的更新。请看一看MariaDB 10中的动态列,因为这完全解决了MySQL中的JSON问题。表继承指的是?@Varun否,我指的是表继承:。您可以有一个包含公共内容的基本用户表,并且在其他子用户类型表中有特定字段。但这只是一个假设,也许我误解了整个用户类型的含义。不。。表继承是不可能的,因为有很多用户类型&随着我们的扩展,它们将不断添加。因此,为它们中的每一个创建单独的表是不可行的。@VarunAchar好吧,如果你确定你永远都不需要,那么我想MySQL是一个更好的选择。这是对将来查看此内容的人的更新。请看一下MariaDB 10中的动态列,因为这完全解决了MySQL中的JSON问题。如果我继续使用MySQL,也会增加一些复杂性,因为我会引入Lucene来进行全文搜索。如果NoSQL是问题的正确解决方案,那么我不会介意学习曲线。但这是正确的解决方案吗?这就是我想知道的。如果你不介意学习曲线和部署带来的额外痛苦,那么请查看Elastic Search。可以用作数据存储和搜索引擎。它也是基于Lucene构建的。也许能一举两得。当然,在文档数据库中存储异构数据更容易。如果我继续使用MySQL,也会增加一些复杂性,因为我会引入Lucene来进行全文搜索。如果NoSQL是问题的正确解决方案,那么我不会介意学习曲线。但这是正确的解决方案吗?这就是我想知道的。如果你不介意学习曲线和部署带来的额外痛苦,那么请查看Elastic Search。可以用作数据存储和搜索引擎。它也是基于Lucene构建的。也许能一举两得。当然,在文档数据库中存储异构数据更容易。