【发布时间】: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 在启动时创建数据库(如果它尚不存在)并且只需开始使用它。索引等将使您的生活变得更加轻松。