Удалить первичный индекс из Беркли БД - PullRequest
0 голосов
/ 08 января 2012

Я использую Java-версию BerkeleyDB, DPL.

При анализе данных в BerkeleyDB я храню некоторую временную информацию в определенном PrimaryIndex.Этот PrimaryIndex занимает много места, и я хочу удалить все данные, хранящиеся там, и освободить место, используемое на HD.

Какой самый простой способ сделать это?

Спасибо.

Ответы [ 3 ]

1 голос
/ 08 января 2012

В принципе вам может понадобиться:

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

Питер прав, нам нужны более конкретные детали (например, структура таблицы DDL), прежде чем мы сможем дать вам конкретные ответы.

См:

0 голосов
/ 08 января 2012

Полагаю, вам нужно сделать следующее:

  1. Создать новую структуру таблицы с нужной вам архитектурой
  2. Считать каждую строку из старой структуры и перенести еев новую структуру, изменяя ее по мере продвижения (отбрасывая / иным образом изменяя данные)
  3. Если пространство имеет значение, даже временно, удалите данные из старой таблицы по мере того, как вы идете

Подходит ли описанное выше, зависит от деталей.

Это было бы проще с базой данных SQL, использующей синтаксис ALTER TABLE, но я ожидаю, что есть причины для ваших проектных решений (вероятно, основанных на производительности).

0 голосов
/ 08 января 2012

Не зная более подробной информации, вы можете переписать данные без информации, которую вы хотите отбросить.Однако, если вы не хотите сэкономить сотни ГБ, я бы не стал беспокоиться.Я бы получил больше места на диске, если вам это нужно.

...