sqlite и массивы поплавков - PullRequest
0 голосов
/ 17 июля 2011

Довольно новый для реляционной базы данных и для sqlite. Но мне любопытно, как лучше всего представить список реалов на элемент / строку в SQLite.

У меня есть несколько предметов X; содержит 100-100000 единиц. Каждый элемент x в X имеет один основной атрибут, который представляет собой список пар с плавающей запятой (например, {{100,1.2}, {101.1, 234.3}, ..., {20000, 90}}; обычно содержит пару от 10 с до 1000 с поплавки).

Моя первая идея - использовать blob. Но это затрудняет чтение этих пар с плавающей точкой (с использованием некоторого общего средства просмотра sqlite, о котором я пока не знаю). Я также хотел бы сделать запрос по значениям этих пар с плавающей точкой. Есть ли способ проанализировать капли и использовать их во время запроса? Я также подозреваю, что будут проблемы с двоичным кодированием с большим порядком байтов и порядком байтов. x = [prim_key, blob]

Вторая идея - представить их в виде строки. Это облегчает чтение, но, вероятно, менее компактно. x = [prim_key, "100, 1.2, 101.1, 234.3, ..."]

Третий - «нормализовать» и представить эти числа с плавающей запятой в отдельной таблице со ссылкой на первичный ключ. Это кажется неудобным, медленнее собирать эти числа с плавающей запятой для определенного x, и пространство расточительно, поскольку каждая пара чисел с плавающей точкой должна быть связана со ссылками на значения первичного ключа. Но это позволит мне делать запросы, используя пары с плавающей точкой.

x_float_pairs = [prim_key_ref, 100, 1,2; prim_key_ref, 101,1, 234,3; ...]

Четвертое - создать таблицу, содержащую пару чисел на элемент x; наверное, самая плохая идея, верно?

Есть предложения? Заранее спасибо.

1 Ответ

2 голосов
/ 17 июля 2011

Если вы намерены использовать SQLLite, я бы предпочел использовать нормализованный подход.Очень быстро искать строки, когда у вас есть индекс.Это парадигма, поддерживаемая базами данных SQL.

Если у вас есть немного больше гибкости, то вы можете подумать об использовании хранилища BLOB-объектов, которое позволит вам извлекать строки как один набор.Не зная больше о том, как вы планируете получить доступ к данным, трудно порекомендовать стратегию, которая будет хорошо работать во всех случаях.

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