Могу ли я отсортировать кучу значений без сохранения фактического содержимого строки?Сортировка двух ключей один из локального другого в облаке - PullRequest
0 голосов
/ 16 мая 2018

Что я хочу сделать

Я хочу отсортировать несколько строк, достаточно просто.

Каковы мои ограничения

У меня есть исходный текст, хранящийся локально, который содержит реальный текст, который я хочу отсортировать, в облаке есть некоторые другие «столбцы» данных, которые не являются локальными, и по соображениям безопасности я не могу взять исходный текст из локально к облаку. Реальным ограничением является то, что я не могу хранить все данные в одном месте, что затрудняет сортировку, разбивку на страницы по локальным и облачным данным.

Что я подумала (и где мне нужна помощь)

Может быть, я могу взять хеш или какой-нибудь другой способ извлечения определенных данных из строки таким образом, что исходная строка не может быть воспроизведена (заботится о безопасности), но извлеченной строки будет достаточно, чтобы я мог сделать сортировка по нему.

Пример

локальные данные:

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

облачные данные:

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

Мне нужно отсортировать как по цене, так и по имени в приведенном выше примере (представьте 100 000 строк таких данных).

1 Ответ

0 голосов
/ 16 мая 2018

Что вам нужно сделать, это сохранить пары строк и соответствующий идентификатор, например, в двух списках / массивах (независимо от того, какой язык программирования вы выбираете).
Затем начинайте сортировку строк, но каждый раз, когда выпереместить строку, переместить идентификатор таким же образом.

Кроме того, большинство языков программирования предлагают конструкции, которые позволяют создавать пары, а затем вы сортируете эти пары в соответствии со строками, что автоматически перемещает идентификаторы.

Оба способа означают, что после сортировки вывсе еще можно найти идентификатор для каждой строки, затем с этим идентификатором вы можете получить доступ к соответствующим облачным данным, как обычно.

Например, язык программирования 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 */
};

Вряд ли существует какой-либо язык программирования, который бы не предлагал нечто подобное.

Если данные для сортировки, наоборот, находятся в облаке, то сортировка должна выполняться в облаке, то есть с помощью чего-то, способного выполнитьалгоритм сортировки.Убедитесь, что вы сортируете идентификатор вместе с ключом.Тогда поиск не облачной строки снова будет таким же, как и раньше.Что бы вы ни делали ранее, чтобы найти строку для идентификатора, сделайте это с идентификатором, который вы получили из отсортированных в облаке данных.
Это то же самое, что и первая ситуация / решение, только что отраженное.

ЯдроКонцепция заключается в том, чтобы всегда сортировать идентификаторы вместе с ключом (и другими данными) и тем самым избавляться от необходимости иметь данные с другой стороны разрыва между обломками и предпосылками.Это применимо ко всем версиям сортировки разделенных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...