SQL Azure vs Table Storage - queryig Entity parameters with "contains"



我正在试用Azure表存储,以了解它作为大数据项目的平台。作为测试数据,我使用英国公司之家数据馈送为我提供了350万英国公司记录。我已经成功地创建了一个实体,并将大量的条目加载到我的表"Companies"中,但我认为这个模型不适合我,因为我的"搜索"或查询需求不仅仅是在PartitionKey和RowKey上。

My Company类是这样的:

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公司编号存储"相关"内容,然后以这种方式进行查找。

我希望它能降低(SQL Azure)的成本,但似乎我可能需要一个混合的方法。

看起来你必须使用像这样的具有文本搜索功能的索引库。

这是微软论坛上的相关讨论。

最后这都取决于你的需要,如果数据不是那么大,你可能想要使用SQL azure,这样你就可以使用文本查询。

另一个选择是组织您的字段,以便您可以使用前缀匹配搜索所需的字符串,这是表查询支持的。(你可以用"StartsWith"来代替"Contains")

最新更新