【发布时间】:2017-09-20 19:21:56
【问题描述】:
我正在编写基于兴趣和位置进行匹配的算法。假设我有这些用户数据
{
"users": [{
"location": "Delhi, India",
"interests": ["Jogging", "Travelling", "Praying"],
"groups": ["exercise", "travelling", "Praying"]
},
{
"location": "Delhi, India",
"interests": ["Running", "Eating", "Praying"],
"groups": ["exercise", "Eating", "Praying"]
}, {
"location": "Delhi, India",
"interests": ["Shopping"],
"groups": ["Shopping"]
}
]
}
在这里,他们 user1 和 user2 有相似的兴趣“锻炼”和“祈祷”,而 user1 和 user3 没有相似的兴趣。
如果我每次在接收来自移动应用的请求时使用带有 where 子句的 SQL 查询,在拥有 10+ 百万用户的数据库中找到相似兴趣的人可能会影响我的数据库性能。
SELECT * FROM users WHERE groups = "exercise" OR groups = "travelling" OR groups = "Praying";
这将检查可能影响我的应用程序性能的每个配置文件。我不想使用这种方法,因为这不会长久。我应该使用什么算法来获得高性能?
【问题讨论】:
-
你可能想看看一个图形数据库,例如 Neo4J。
-
我正在为我的 android 应用程序使用
firebase数据库。我不确定它是否支持图形数据库功能 -
确实如此,但您必须对数据进行不同的建模。见stackoverflow.com/questions/40656589/…。我还建议阅读NoSQL data modeling 和观看Firebase for SQL developers。
-
我不确定它是否支持图形数据库功能它不支持。
标签: algorithm performance firebase firebase-realtime-database