我正在构建一个将存储大量数据的 Node.js 应用程序,因此我想提前计划并考虑我应该如何构建数据。
假设我要保存 500,000 个学生帐户信息:
ID: unique string, // SID0001
username: string, // moe_kanan
password: string, // 123123
Name: string, // Moe kanan
Age: int, // 1 to 100
grade: string, // A, B, C or D
现在,构建数据以获取特定学生帐户信息的最佳、最快和最有效的方法是什么?例如,如果学生想要登录,我们必须检查他们的凭据。
因此,如果我们将信息保存为一个学生数组,我们将不得不循环遍历该数组。如果我们有大量的人同时尝试登录,这会降低应用程序的速度吗?
我想出了两种不同的方法来做到这一点,但我不知道哪种方法更快更有效。请在您的回答中对此进行解释。
1。第一种方法
将它们存储为 JSON 对象,对象 key 将是唯一 ID - 在本例中是学生 ID。示例:
var database = {}; //NOTICE this is an object
database["SID0001"] = {
"ID": "SID0001",
"username": "moe_kanan",
"password": "123123",
"name": "Moe Kanan",
"age": 99,
"grade": "A"
}
在这个方法中,我不必循环。我可以通过这样做来获取凭据:
var username = database["SID0001"].username; //moe-kanan
var password = database["SID0001"].password; //123123
2。第二种方法
var database = []; //NOTICE this is an array
database.push({
"ID": "SID0001",
"username": "moe_kanan",
"password": "123123",
"name": "Moe Kanan",
"age": 99,
"grade": "A"
});
var getStudentInfo = (id) => {
let obj = database.filter(student => student.ID == id)[0]; //NOTICE the [0]
return {"username": obj.username, "password": obj.password}
}
getStudentInfo("SID0001"); //{username: "moe_kanan", password: "123123"}
请随时添加更好的解决方案:)我真的很感激!
注意:请记住,我暂时不想使用数据库,但将来我会使用 MongoDB。
最佳答案
很明显,使用对象的第一种方法比使用数组更快/更有效。
使用 HashMap 的时间复杂度为 O(1)
,而使用数组的时间复杂度为 O(n)
。
正如其他人所指出的,唯一真正的答案是您应该使用数据库。
关于保存 JSON 对象的 JavaScript/Node.js 最佳实践和检索特定值的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47046617/