c - 将数千个数据结构保存在一个文件中并进行特定查找是否实用?

标签 c data-structures file file-io

我和一些和我上同一门课(因此有同一个项目)的同事讨论过将数据保存到文件并仅在我们需要特定数据时才从这些文件中读取。

例如,该项目是关于管理社交网络的。我不会详细说明,因为这并不重要,但我的想法是使用最好的数据结构来操作这些数据。

假设我使用哈希表来保存用户配置文件数据。他们中的一些人争辩说,只有一些特定的信息应该保存在数据结构中,比如代表用户的 ID 和 ID。其他一切都应该归档。我们应该在需要时访问这些文件以获取我们想要的数据。

我认为这不实用...如果我们使用一些库作为数据库(如 SQLite 或其他东西),但不是,我认为我们不应该这样做。我们只应该自己编写所有代码并使用 C 函数,例如 these .我也不认为我们应该进行完美的内存管理。项目的需求不是让我们写一个数据库,甚至伪数据库。这个项目对我们的要求是最好的数据结构(只要我们知道如何证明为什么我们选择那些而不是其他的)来存储数据类型和项目指定的所有数据。

我应该告诉您,我们之前有 2 节课,我们在那里获得的知识将应用到这个项目中。其中之一涉及 C 语言的基础、函数、结构、数组、字符串、文件 IO、递归、指针和简单的数据结构,如二叉树和链表,诸如此类。另一个是关于更复杂的数据结构、哈希表、AVL 树、堆、图等...它还讨论了时间复杂度、大 O 表示法等等。

例如,假设我的内存中只有用户的 ID,然后我需要找到特定用户的所有 friend 。我将不得不处理整个文件(或文件)找出该用户的 friend 。如果我可以将所有这些数据都存储在内存中,那就容易多了。

我们需要选择(并证明)我们认为最适合项目的数据结构,然后仅使用它们来查找 ID,这对我来说毫无意义。然后我们需要进行第二次查找,以获得我们需要的真实数据,这需要时间,不是吗?如果我们仍然需要搜索硬盘驱动器上的一堆文件,为什么我们首先要为数据结构烦恼?

这怎么可能,使用标准的 C 函数,手动编写所有代码并仍然模拟某种数据库?这到底实用吗?

我是不是漏掉了什么?

最佳答案

听起来该项目可能更多地是关于如何设计数据“实体”之间的关系,而不是如何存储它们。我不认为将数据存储在文件中是一个好的解决方案——文件 IO 将比访问内存中的东西慢得多。如果您需要在磁盘上持久保存数据,您可能只想使用数据库,而不是文件(我知道这是一门学术类(class),所以谁知道呢)。

我认为您应该更多地关注如何设计数据类型及其关系,以最大限度地提高查找、搜索等的速度。例如,您可以将所有用户存储在一个链表中,或者将它们存储在一棵树或一张图,但每一个都会对您找到用户的速度等产生影响。根据您希望在社交网站中使用的功能,将会有不同的设计来让不同类型的行为表现得更好与其他设计不同。

关于c - 将数千个数据结构保存在一个文件中并进行特定查找是否实用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413684/

相关文章:

algorithm - 在 O(1) 中查找插入删除和 getMin 的数据设计问题

php - 如何从php中的文件夹中删除文件

c - 在 Linux 中替代 c 语言中的 getch 和 clrscr()

c - 正确终止多线程 Windows 控制台应用程序

data-structures - 了解二叉搜索树的构造

string - 一系列字符串的最长公共(public)子序列

C、free() 上的内存损坏(快速)错误

clang-format 与数组初始化

c# - 使用ASP.NET和C#创建新的目录结构并 move 文件

c# - "File in use"写入文本文件时出错