首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++数据存储技术

C++数据存储技术
EN

Stack Overflow用户
提问于 2022-03-28 06:46:42
回答 3查看 253关注 0票数 0

在寻找方法之后,我有点不知所措,以前从来没有这样做过,所以我来了。我正在研究为个人项目存储数据的方法。我以前从未使用过这么多数据,我通常只是将其存储在.txt.csv中,但我很好奇是否会有更好的方法来实现它。目前我正在研究json,因为我觉得这种结构在将来可能会很有用(并不那么重要)。

就数据而言,只需想一想字典:idx | string | string | string | string ..

如果我只想按要显示的索引来获取信息,那么将所有信息存储到DBMS中是否值得投资呢?我更好奇你为什么选择一条路线而另一条路线。

EN

回答 3

Stack Overflow用户

发布于 2022-03-28 06:58:12

使用像SQLite这样的轻量级选项,投资本身将非常有限(在复杂性和额外占用空间方面),您将能够将大量的关注点转移到库中:内存管理、按标准进行数据检索等。使用JSON,您要么必须将整个数据集保存在内存中(但这不会在每次启动时再加上加载和保存),而且您将不得不自己解决所有查询问题。

也有其他选择,但在我看来,SQLite非常成熟,非常有名,非常可靠,如果您所需要的只是纯ISAM风格的访问,那么您需要理解的SQL是最小的。

票数 1
EN

Stack Overflow用户

发布于 2022-03-29 11:18:41

我在ObjectBox工作,自己也是C++新手,所以我可以说,即使您不熟悉任何数据存储解决方案,也很容易使用它。这是一个免费使用NoSQL数据库。

定义架构(一个单独的文件,列出对象的属性,如单词本身及其定义),ObjectBox自动生成绑定代码。然后,在应用程序中存储数据只是使用本机C++对象的问题,如下例所示:

代码语言:javascript
复制
int main() {
    obx::Store store(create_obx_model());
    obx::Box<Word> box(store);

    // Create an object
    obx_id id = box.put({.word = "entry 1", .definition = "definition 1"});  

    // Read from the database
    std::unique_ptr<Word> entry = box.get(id);

return 0;
}

下面是模式文件的外观:

代码语言:javascript
复制
table Word {
    id: ulong;
    word: string;
    definition: string;
}

你可以从这里开始

票数 1
EN

Stack Overflow用户

发布于 2022-03-28 07:50:16

有数千种已经实现的标准解决方案。

  1. 正如其他人已经提到的:用您选择的库连接到数据库。但这通常是最慢的方法,因为在我所知道的所有库中,所有和所有的东西都将转换为文本,以将其传输到数据库核心,有时还会解析回本地数据。这消耗了大量的时间和记忆。
  2. 使用您自己的数据结构,并使用通用序列化程序。
  3. 使用一个库来描述您的数据结构和它们的IO工具,比如protobuf。有很多实现。
  4. 或者简单的手工制作..。但我的建议是:采取一个已经实现的解决方案,因为它节省了你的时间,特别是有助于不重新发明车轮和错误。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71643386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档