在我当前的项目中,我需要管理和存储一个中等数量(从10到5000+)的用户(ID,用户名和其他一些数据)。
这意味着我必须能够在运行时快速找到用户,并且我必须能够保存和恢复数据库,以便在重新启动程序后继续进行统计。我还需要注册用户的每个连接/断开连接/登录/注销以获取统计信息。 (以及其他一些数据,但你明白了。)
过去,我在编码的文本文件中保存了设置和其他内容,或者序列化了所需的对象并将其写下来。但是这些方法要求我在每次更改时重写整个数据库,这会越来越慢(特别是对于越来越多的用户/条目),不是吗?
现在问题是:在C#中做这种事情的最佳方法是什么?
不幸的是,我没有任何SQL或其他查询语言的经验(除了一点LINQ),但这对我来说没有任何问题,因为我有时间和动力学习一个(或更多,如果需要)完成这项任务。
答案 0 :(得分:1)
根据您的要求,即使将此问题缩小到特定需求,最有效也是非常主观的。如果您要存储非关系数据Mongo或其他一些NoSQL类型的数据库(如Raven DB)将会有效。如果您的数据具有关系形状,那么诸如MySQL,SQL Server或Oracle之类的RDBMS将是有效的。如果要满足大量报告要求,关系数据库是理想的,因为这样可以使非开发人员在编写针对它的简单SQL查询时更容易访问。但也要记住数据库提供的磁盘缓存持久性的性能。通常访问的数据存储在内存中以保存到磁盘的往返(对于混合驱动器,我认为访问某些文件直接完成相同的事情,但SSD仍然没有RAM访问速度快)。所以你真的需要问自己一些问题,以确定最适合你的解决方案;您的数据的形状是什么(平面,关系等),您是否有需要较少技术团队成员查询数据存储库的报告要求,以及您的绩效指标是什么?