代码之家  ›  专栏  ›  技术社区  ›  Alex

在内存中保存大量集合,用于查询

  •  1
  • Alex  · 技术社区  · 14 年前

    例如,在我的ASP.NET应用程序中,在内存中保存一个IEnumerable是否可以不确定?

    例如:

    每天早上,我的ASP.NET MVC应用程序都需要从csv文件加载数据。 这些数据是从几个csv文件加载的,然后使用linq join等。它被合并成一个单一的、非标准化的集合,大约有500000个“东西”

    应用程序的唯一目的是查询这些数据。 方法如下:

    • 获得一个名字
    • 获得平分

    等...

    我的想法是让一个静态的IEnumerable控制器可以调用….

    它将在专用服务器上运行…

    基本上,我尽量避免使用数据库(任何类型,NoSQL或其他),因为我认为不需要它,因为数据相当不稳定。

    查询将使用LINQ完成。

    5 回复  |  直到 14 年前
        1
  •  5
  •   James Kovacs    14 年前

    我同意帕维尔的观点。它还高度依赖于要运行的查询类型。如果你做了大量的聚合,你可能会想要一个像sqlite这样的内存数据库,甚至可能想要一个像mysql或者sql-server这样的完整数据库。如果您只是通过pk进行查找,那么将数据存储在hashmap或类似文件中可能会有所帮助。

    IEnumerable和Linq对对象来说并不神奇。它们只是为查询和聚合提供了一个公共接口。如果IEnumerable的实际实现类是一个列表,猜猜看是什么?当你说:

    var query = from item in items  // items is a List<T>
                where item.Name.StartsWith("Foo")
                   && item.CreationDate > new DateTime(2010,1,1)
                select item;
    var allFoos = query.ToList();
    

        2
  •  3
  •   Pavel Urbančík    14 年前
        3
  •  0
  •   EMP    14 年前

        4
  •  0
  •   user76071    14 年前

        5
  •  0
  •   TomTom    14 年前