создать миллионную таблицу в базе данных? - PullRequest
2 голосов
/ 30 апреля 2011

Я хочу создать миллион таблиц с двумя столбцами ... ну, я пытался создать с использованием Java, который занял около 100 МБ данных, преобразованных в 7 ГБ и занял 20 часов, чтобы завершить его ... Я использую Postgre SQL, перед которым я попробовал MySQL,MySQL еще хуже .. Есть ли способ создать такое большое количество таблиц, используя меньше места и времени?хорошо ли будет работать горизонтальное разбиение?

Я пытаюсь индексировать данные RDF для быстрого выполнения. Идея состоит в том, чтобы индексировать данные rdf с помощью rdbms и преобразовывать запрос sparql в запрос sql, хорошо, RDF - это сбор ресурсов в виде предмета тройки, предикат, объект, существующие методы используют таблицы предикатов, означает, что для каждого предиката, субъекта и объекта сохраняется, количество предикатов очень меньше по сравнению с другими 2. Таким образом, запрос требует объединения этих таблиц предикатов для получения результатов, которыепорядка 100 Мб в плоских файлах. Я пытался создать тематические таблицы 4 быстрого исполнения

Ответы [ 2 ]

5 голосов
/ 30 апреля 2011

Если вам нужен миллион таблиц в вашей базе данных, вы делаете это неправильно.

Таблицы предназначены для представления структурно и концептуально различных данных. И я отказываюсь верить, что в вашем приложении вы используете миллион различных концепций.

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

Похоже, вы совершаете подобную ошибку, возможно, не с пользователями, а с какой-то другой абстракцией, о которой у вас много примеров. Каждый экземпляр должен быть строкой в ​​одной таблице.

Если вы опишите нам, что именно вы пытаетесь сохранить в базе данных, мы почти наверняка поможем вам выяснить, как это должно быть сопоставлено с таблицами.

Редактировать
после прочтения ваших комментариев (которые действительно должны быть отредактированы в самом вопросе), вот мои мысли:

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

Если все предикаты известны заранее, вы могли бы составить таблицу для каждого предиката, но я не совсем уверен, какой смысл это иметь, даже.

Самым чистым вариантом, вероятно, будет наличие 4 таблиц:
(id, subject), (id, predicate), (id, object), (subjectid, predicateid, objectid).

1 голос
/ 30 апреля 2011

Таблицы базы данных занимают довольно много места для управления своими индексами, схемами и резервированием дискового пространства.

В большинстве случаев вам будет лучше с одной таблицей, содержащей 20 миллионов строк, чем вымиллион таблиц с 20 строками.

Если подход с 20 миллионами строк слишком велик, вы можете использовать вертикальное разбиение, чтобы улучшить его работу.

Я думаю, вы в основном собираетесьпреуспеть в том, чтобы дать пользователям переполнения стека массовый аннуризм, пытаясь понять, почему вам нужно делать то, что вы просите:)

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