Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.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
SQL Azure vs表存储-带“0”的queryig实体参数;包括「;_Azure_Azure Sql Database_Azure Table Storage - Fatal编程技术网

SQL Azure vs表存储-带“0”的queryig实体参数;包括「;

SQL Azure vs表存储-带“0”的queryig实体参数;包括「;,azure,azure-sql-database,azure-table-storage,Azure,Azure Sql Database,Azure Table Storage,我正在使用Azure Table Storage,以便将其作为一个大数据项目的平台。作为测试数据,我使用英国公司内部数据源向我提供350万份英国公司记录。我已经成功地创建了一个实体,并将大量条目加载到我的表“companys”中,但我认为这个模型不适合我,因为我的“搜索”或查询要求不仅仅是PartitionKey和RowKey 我的公司类如下所示: public class Company : TableEntity { public Company() { } public

我正在使用Azure Table Storage,以便将其作为一个大数据项目的平台。作为测试数据,我使用英国公司内部数据源向我提供350万份英国公司记录。我已经成功地创建了一个实体,并将大量条目加载到我的表“companys”中,但我认为这个模型不适合我,因为我的“搜索”或查询要求不仅仅是PartitionKey和RowKey

我的公司类如下所示:

public class Company : TableEntity
{

    public Company() { }

    public Company(string companyNumnber)
    {
        CompanyNumber = companyNumnber;


        this.PartitionKey = "Company";
        this.RowKey = companyNumnber;

        RegAddress = new Address();
    }

    public String CompanyNumber { get; set; }
    public Address RegAddress { get; set; }
    public String CompanyName { get; set; }
    public String PhoneNumber { get; set; }
    public String CompanyCategory { get; set; }
    public String CompanyStatus { get; set; }
    public String CountryOfOrigin { get; set; }
    public String DissolutionDate { get; set; }
    public String IncorporationDate { get; set; }
    public String URI { get; set; }

}

public class Address 
{

    public Address() { }

    public String CareOf  { get; set; }
    public String POBox { get; set; }
    public String AddressLine1 { get; set; }
    public String AddressLine2 { get; set; }
    public String PostTown { get; set; }
    public String County { get; set; }
    public String Country { get; set; }
    public String PostCode { get; set; }
}
这一切都很好,我可以将实体加载到表存储中,我可以根据CompanyNumber查询表,但我还需要在CompanyName上查询表,这不限于eq“equals”运算符。。。我需要能够做一个“包含”的属性,这似乎是不可能的

我说得对吗?如果是这样的话,解决办法是什么?在我看来,我“被困”在SQL中托管这350万条记录,然后使用表存储来存储带有PartitionKey公司编号的“相关”内容,然后以这种方式进行查找

我希望它能降低(SQLAzure)的成本,但似乎我需要一种混合方法


我很想听听其他人对这方面的评论。

看来您必须使用一个索引库,它具有文本搜索功能,例如

最后,这完全取决于您的需要,如果数据没有那么大,您可能希望使用SQLAzure,以便可以使用文本查询


另一个选项是组织字段,以便可以使用表查询支持的前缀匹配来搜索所需字符串。(您可以使用“StartsWith”查询而不是“Contains”)

感谢您的回复。我不喜欢第三方索引引擎。StartsWith不适用于我,因为“公司名称搜索”需要从名称中的任何位置进行搜索。看起来我的最佳选择是使用SQLAzure存储350万条公司记录,然后使用表存储存储针对公司存储的“相关”内容;350万?您需要多快的速度来运行该查询?公司之家提供了一个包含4个CSV文件的数据列表,每个CSV文件中包含85万条公司记录。初始加载可能需要任何时间,这并不重要,但是没有“变更集”,所以每个月我都需要寻找“新”项目并上传它们。我可以运行一个单独的作业来检查每个项目加载后的更新。主要的问题是,在我的网站上,最终用户需要查找公司的详细信息。。。他们会希望输入公司名称的一部分,以查找详细信息(不一定是名称的开头),好的-那么我同意您应该查看索引平台;SQLAzure是一个很好的候选者。对于您的记录,如果您保持简单,您不需要非常大的数据库,因此您应该能够将成本降至最低。感谢Herve,是的,我需要将结构化内容保留在SQL数据库中。我知道它不会超过350万条记录,而且数据也不多。我可以为项目的大数据元素使用表存储。谢谢你的帮助。