如何在C#中的数据库中创建带有模块化可搜索字段的对象?

实用主义者1

我想问一个设计问题,关于如何最好地为我想要具有可搜索字段的对象构造一个类,包括可以作为对象的字段,也可以是模块化的,从某种意义上说,可以基于数据库中的新条目添加字段。让我澄清一下:

假设我有一个对象类型Car。该汽车具有诸如制造商,型号,颜色,最高速度之类的属性,可以通过诸如字符串和双打等简单类型来表示。但是它也可能包含更复杂的信息,例如具有CarPowerProfile类型的属性(一个单独的对象),拥有一个方程式,该方程式将车辆的动力输出描述为油门的函数。或其他子对象。

我的问题分为以下几类:

设计此类的最佳方法是什么,这样我不仅可以搜索数据库,不仅可以查找颜色,品牌和型号等简单属性,还可以搜索“找到一辆拥有70%至90%的蓝色的汽车” 30%油门的功率输出”?问题是,我需要对象执行计算以获取该信息,并且数据库仅存储方程式的系数。

另外,假设有人想向对象添加一个属性(除了硬编码的“基本属性”),如何最好地实现这一点,以便新属性既存在于数据库中又包含在加载的对象中?最后,此问题最适合关系数据库或非关系数据库吗?请记住,这将是将与Web服务同步的独立应用程序。

我意识到我提出了很多要求,但是我不是在寻找代码讲义,而是在寻找如何设计解决方案的更多内容-这就是为什么我使用文字而不是代码来描述问题的原因。我来自数值计算领域,这种软件设计对我来说是陌生的。我对是否有类似(或类似)或类似方法的设计模式感兴趣,因为我没有正确解决问题。

谢谢!

肯尼斯

有几种方法可以解决此问题,无论您是针对读写还是针对优化进行优化,它们基本上都会落空。

如果仅通过将核心值保存在数据库中来优化写入,则查询将变得更加昂贵,因为您将必须从数据库中加载所有对象,然后进行计算以过滤它们。

另一方面,如果通过将计算出的值存储在数据库中来优化读取,则写入速度会变慢,因为在每次写入之前,您必须重新计算所有值,然后将所有正确的值写入数据库。

在您要解释的情况下,我会尝试找到一个平衡点。将所有核心值存储在数据库中,还将少数几个计算出的核心值存储在数据库中,您希望这些查询最多运行。然后,您可以对它们进行过滤,然后在应用程序服务器上对其进行进一步过滤。如果做得对,您将获得一个良好的平衡。

如果使用的是ORM(例如NHibernate或EntityFramework),则可以使用LINQ轻松查询多个表。

至于是否应该使用关系型,如果要拥有灵活的架构,则NoSQL解决方案可能更适合。但是NoSQL也有一些缺点。您必须对(反)标准化应用与计算所得属性相同的权衡,请记住,这在NoSQL数据库中非常重要。

像RavenDB这样的NoSQL解决方案已经针对.NET进行了特别优化,该解决方案特别针对.NET进行了优化,可让您定义Map Reduce查询,该查询提供了非常快速的查询访问权限,

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

来自分类Dev

如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

来自分类Dev

如何使用c#中的现有数据库创建新数据库?

来自分类Dev

如何在Filemaker数据库中创建搜索栏?

来自分类Dev

如何在C#,asp.net中编写模块化设计?

来自分类Dev

在C#中为Access数据库创建查询(带有函数)

来自分类Dev

如何在Oracle数据库中存储具有枚举字段类型的对象

来自分类Dev

如何在C# listview中搜索SQL数据库并显示

来自分类Dev

如何在Django的数据库中存储具有复杂数据字段的python对象?

来自分类Dev

如何在C#中从数据库返回数组

来自分类Dev

Docker和PostgreSQL:初始化期间无法创建数据库名称中带有'-'的数据库

来自分类Dev

如何在标签c#中以windows形式显示数据库表的所有列

来自分类Dev

Django的。如何从数据库中的对象中删除字段?

来自分类Dev

在数据库中搜索字段

来自分类Dev

在帖子数据库字段中搜索

来自分类Dev

如何在ORACLE数据库的表中的JSON BLOB字段中创建视图?

来自分类Dev

如何在Java中基于数据库中的字段创建表单?

来自分类Dev

如何在SQL Server的数据库中的所有表中搜索值

来自分类Dev

如何在SQL Server 2012中的数据库的所有表中搜索列名?

来自分类Dev

如何在SQL Server 2012中的数据库的所有表中搜索列名?

来自分类Dev

如何在Mysql数据库中的所有表中搜索?

来自分类Dev

如何在C#中解析通用XML文件以在SQL Server数据库中创建表

来自分类Dev

如何在Node JS中模块化代码

来自分类Dev

如何在Angular中模块化polyfill?

来自分类Dev

如何在Shiny中模块化动态ggvis图表?

来自分类Dev

如何在模块化设计模式中嵌套功能?

来自分类Dev

如何在导出的函数中对导出模块化

来自分类Dev

如何在Angular中模块化polyfill?

来自分类Dev

如何在Django中模块化模板?

Related 相关文章

  1. 1

    如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

  2. 2

    如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

  3. 3

    如何使用c#中的现有数据库创建新数据库?

  4. 4

    如何在Filemaker数据库中创建搜索栏?

  5. 5

    如何在C#,asp.net中编写模块化设计?

  6. 6

    在C#中为Access数据库创建查询(带有函数)

  7. 7

    如何在Oracle数据库中存储具有枚举字段类型的对象

  8. 8

    如何在C# listview中搜索SQL数据库并显示

  9. 9

    如何在Django的数据库中存储具有复杂数据字段的python对象?

  10. 10

    如何在C#中从数据库返回数组

  11. 11

    Docker和PostgreSQL:初始化期间无法创建数据库名称中带有'-'的数据库

  12. 12

    如何在标签c#中以windows形式显示数据库表的所有列

  13. 13

    Django的。如何从数据库中的对象中删除字段?

  14. 14

    在数据库中搜索字段

  15. 15

    在帖子数据库字段中搜索

  16. 16

    如何在ORACLE数据库的表中的JSON BLOB字段中创建视图?

  17. 17

    如何在Java中基于数据库中的字段创建表单?

  18. 18

    如何在SQL Server的数据库中的所有表中搜索值

  19. 19

    如何在SQL Server 2012中的数据库的所有表中搜索列名?

  20. 20

    如何在SQL Server 2012中的数据库的所有表中搜索列名?

  21. 21

    如何在Mysql数据库中的所有表中搜索?

  22. 22

    如何在C#中解析通用XML文件以在SQL Server数据库中创建表

  23. 23

    如何在Node JS中模块化代码

  24. 24

    如何在Angular中模块化polyfill?

  25. 25

    如何在Shiny中模块化动态ggvis图表?

  26. 26

    如何在模块化设计模式中嵌套功能?

  27. 27

    如何在导出的函数中对导出模块化

  28. 28

    如何在Angular中模块化polyfill?

  29. 29

    如何在Django中模块化模板?

热门标签

归档