我想做什么?
我想对一堆字符串进行排序,这很简单。
我的限制是什么?
我有存储在本地的原始文本,其中包含我想要排序的真实文本,云中有一些其他非本地数据的“列”,出于安全原因,我不能将原始文本从本地存储到云中。真正的限制是,我不能将所有数据放在一个地方,这会导致很难跨本地和云数据对值进行排序和分页。
我的想法(以及我需要帮助的地方)
也许我可以采用散列或其他方法从字符串中提取某些数据,这样原始字符串就不能被重现(考虑到安全性),但提取的字符串就足够了,我可以对其进行排序。
示例
本地数据:
[ { "id": 1, "name": "abcd" } ]
云数据:
[ { "id": 1, "price": "20" } ]
在上面的示例中,我需要同时对价格和名称进行排序(假设有100,000行这样的数据)。
发布于 2018-05-16 15:46:58
您需要做的是存储字符串和相应id的对,例如,在两个列表/数组中(无论您选择的编程语言提供什么)。
然后开始对字符串进行排序,但每次移动字符串时,都要以相同的方式移动id。
或者,大多数编程语言提供了允许配对的构造,然后您可以根据字符串对这些配对进行排序,这将自动移动ids。
这两种方式都意味着在排序后,您仍然可以找到每个字符串的id,然后使用该id可以像往常一样访问相应的云数据。
例如,编程语言C提供了复合数据类型构造
struct IdStringPair
{
int id;
char* string;
/* actually just the address of where the full string is stored,
but basically what you probably want to use */
};几乎没有一种编程语言不提供类似的功能。
相反,如果要排序的数据在云中,那么排序必须在云中进行,即通过能够执行排序算法的东西进行排序。请确保将id与键一起排序。然后,查找非云字符串再次与前面相同。无论您之前如何查找id的字符串,都可以使用从云排序数据中获得的id来查找。
这与第一种情况/解决方案相同,只是进行了镜像。
核心概念是始终将ids与关键字(和其他数据)一起排序,从而消除了从clould和premise之间的另一端获取数据的需要。这适用于所有版本的分离数据排序。
https://stackoverflow.com/questions/50362920
复制相似问题