【问题标题】:Golang not using a DBGolang 不使用数据库
【发布时间】:2014-06-24 17:04:50
【问题描述】:

我现在不想使用数据库,我想将数据作为结构保存在文件中。 我的问题是如何组织和检索数据。

例如,我有:

type Foo struct{
 Id int
 Name string
}
type Bar struct{
 Id int
 Name string
}

我想制作一堆不同的 Foos 和 Bars,然后我希望能够查询/选择特定的 Foos 和 Bars。 我会先制作一个包,然后再制作一个包中的文件,例如 foo/foo.go;并且在 foo.go 中有一个方法可以生成所有的 Foo,然后是另一个可以接受例如名称的方法,然后搜索那个特定的 Foo。

func MakeFoos(){
 //make the Foos here, and put them in a global array: []Foo ??
}

func GetFoo(name string) Foo{
 //this would search the array populated in MakeFoos() and return a Foo ??
}

与 Go 中的数据库相比,这是一个在内存中保存数据的好开始吗? 欢迎任何帮助和建议让我继续前进。

【问题讨论】:

  • 为了快速搜索大量项目,您需要索引,因此您需要在插入/删除/更新时维护的每个索引都有一个 map。为了索引和避免数据丢失,您最终会自己实现一个(专用)数据库。在许多应用程序中,将数据保存在内存而不是数据库中会让您感到痛苦。 Here's a post on getting started with the gorm ORM and SQLite, if that helps.
  • 此时您可能不想使用数据库 - 但您将在接下来的几个月中手动实现 5% 的数据库功能,而且它们的效率远不及。我建议您考虑立即考虑使用数据库以更快地启动和运行。
  • sqlite 在 GoLang 中非常易于使用,并且不涉及安装单独的数据库...您甚至可以让 GoLang 在启动时创建数据库(如果它尚不存在)并且只需开始使用它。索引等将使您的生活变得更加轻松。

标签: database go


【解决方案1】:

我正在做一个不使用数据库的 GO 项目。使用切片、映射、链表、json 和 OS 文件系统可以在没有数据库的情况下完成相当多的工作。我没有适合您的解决方案,但请研究一下我刚才提到的工具。所有这些工具都包含在标准 Go 库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    相关资源
    最近更新 更多