首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在不保留字符串实际内容的情况下对一堆值进行排序吗?两键排序,一个来自内部部署,另一个在云中

问我可以在不保留字符串实际内容的情况下对一堆值进行排序吗?两键排序,一个来自内部部署,另一个在云中
EN

Stack Overflow用户
提问于 2018-05-16 13:18:37
回答 1查看 31关注 0票数 0

我想做什么?

我想对一堆字符串进行排序,这很简单。

我的限制是什么?

我有存储在本地的原始文本,其中包含我想要排序的真实文本,云中有一些其他非本地数据的“列”,出于安全原因,我不能将原始文本从本地存储到云中。真正的限制是,我不能将所有数据放在一个地方,这会导致很难跨本地和云数据对值进行排序和分页。

我的想法(以及我需要帮助的地方)

也许我可以采用散列或其他方法从字符串中提取某些数据,这样原始字符串就不能被重现(考虑到安全性),但提取的字符串就足够了,我可以对其进行排序。

示例

本地数据:

[ { "id": 1, "name": "abcd" } ]

云数据:

[ { "id": 1, "price": "20" } ]

在上面的示例中,我需要同时对价格和名称进行排序(假设有100,000行这样的数据)。

EN

回答 1

Stack Overflow用户

发布于 2018-05-16 15:46:58

您需要做的是存储字符串和相应id的对,例如,在两个列表/数组中(无论您选择的编程语言提供什么)。

然后开始对字符串进行排序,但每次移动字符串时,都要以相同的方式移动id。

或者,大多数编程语言提供了允许配对的构造,然后您可以根据字符串对这些配对进行排序,这将自动移动ids。

这两种方式都意味着在排序后,您仍然可以找到每个字符串的id,然后使用该id可以像往常一样访问相应的云数据。

例如,编程语言C提供了复合数据类型构造

代码语言:javascript
复制
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之间的另一端获取数据的需要。这适用于所有版本的分离数据排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50362920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档