Я ищу библиотеку для управления «базой данных» в моем приложении Java. Я хочу что-то простое и удобное в использовании. В частности, я ищу что-то, что:
Легко начать использовать. Я хотел бы иметь один JAR для добавления в свой проект, а база данных - это один файл Java File
. Я хочу избежать необходимости настраивать локальный сервер или соединения и тому подобное. Полностью Java без нативных зависимостей было бы неплохо.
Прост в использовании. Мне нужно только хранить таблицу с некоторыми строками и выполнять простые запросы, например. для всего в определенной строке.
Легкий.
Я в основном ищу что-то, чтобы эмулировать своего рода «таблицу», например лист Excel, с текстовыми данными.
Есть такие библиотеки?
Не имея более конкретной информации о ваших потребностях, я первым делом подумал о проекте H2 Database Engine . H2 — это чистая Java, бесплатная реляционная база данных с открытым исходным кодом, которая активно развивалась в течение многих лет.
«2» указывает на то, что это вторая подобная база данных (Hysonic SQL, позже разветвленная как HSQLDB ), созданная ее основным автором, Томасом Мюллером , так что он знает свое дело.
Хотя H2 можно запускать как сервер, он особенно хорош для встраивания в приложение и при необходимости может работать с относительно небольшим объемом памяти.
Будучи чистой Java, H2 создан специально для доступа JDBC . Поставляется в комплекте с собственным драйвером JDBC.
На основном веб-сайте есть хорошая документация, включая обзор QuickStart и Tutorial .
Вам нужно будет изучить основы таблиц, столбцов, типов данных и команд SQL. Вы можете научить себя. Получение некоторого обучения от кого-то, кто знаком с реляционными базами данных, значительно сократит эту кривую обучения.
H2 похож на SQLite, но более полнофункционален. Чистая Java и возможность встраивания делает H2 более подходящим для ваших нужд и, вероятно, более простым для начала работы.
На дочернем сайте Stack Overflow я написал несколько ответов, предоставляющих исходный код для полного примера приложения Java с использованием H2. Как это , это , это , это , это и многое другое .
Проект Apache Derby очень похож на H2. Ранее известный как IBM Cloudscape , а также известный как «Java DB», когда он предоставляется Oracle в комплекте с Java SDK.
Derby сложнее H2, в том числе нацелен на использование в качестве сервера. Я подозреваю, что H2 лучше подходит для ваших нужд.
Если все, что вам нужно, это относительно простые данные в количестве, достаточно маленьком, чтобы храниться в памяти, тогда пропустите базу данных. Храните ваши данные в виде текста в обычных файлах.
Общие форматы для таких простых текстовых файлов включают:
Обратите внимание, что хотя CSV звучит просто, различные программисты нашли способы смешивать вещи с вариациями. В течение десятилетий никто даже не удосужился записать спецификацию до RFC 4180 в 2005 году.
Когда вам нужны эти данные, прочитайте их в памяти, создайте экземпляры объектов, определив свои собственные классы, такие как «Лицо» или «Счет», соберите эти объекты и выполните поиск в этих коллекциях, чтобы найти нужные объекты.
Хотя концептуально это просто, существует множество возможных недоразумений. Одно из основных назначений ядра базы данных — решать такие проблемы за вас.
Проект Apache Commons CSV — это относительно новая бесплатная библиотека на чистом Java, предназначенная для выполнения рутинной работы по чтению и записи простых текстовых файлов. Он поддерживает все упомянутые форматы, а не только CSV (несмотря на его название). Я использовал версию 1.1 и нашел ее весьма полезной, надежной и надежной.
Ваш вопрос слишком широк, чтобы на него можно было дать какой-либо окончательный ответ. Вы вообще не говорите нам, какую базу данных вы хотите использовать. Вам нужна РСУБД? Хранилище ключей/значений? Что-то другое?
Если вы имеете в виду реляционную базу данных, SQLite является стандартом де-факто и имеет поддержку Java (а также поддержку практически любого другого языка и платформы под солнцем).
Вы можете взглянуть на HeftyDB . Это быстрое хранилище ключей и значений , написанное на Java, с открытым исходным кодом.
Основываясь на ваших требованиях, я думаю, что JetBrains Xodus — это отличный выбор базы данных. Он имеет три типа базы данных: хранилище ключей и значений, хранилище сущностей и базу данных для файлов и потоков.
№1 : Начать пользоваться очень просто. Если вы используете maven, просто добавьте одну или две зависимости . Или вы также можете импортировать .jar
файлы прямо в свой проект.
Нет необходимости создавать какой-либо сервер. Просто создайте мгновение, Environment
и вы готовы к работе. И вы можете дать ему имя папки для хранения данных.
final Environment env = Environments.newInstance("/Users/me/.myAppData");
#2 : Вместо управления таблицами вы можете просто хранить сущности. Это очень похоже на реляционные таблицы, но намного проще. Посмотрите здесь, чтобы узнать, как это сделать.
final Entity user = txn.newEntity("User");
user.setProperty("login", loginName);
user.setProperty("fullName", fullName);
user.setProperty("email", email);
final String salt = MessageDigestUtil.sha256(Double.valueOf(Math.random()).toString());
user.setProperty("salt", salt);
user.setProperty("password", MessageDigestUtil.sha256(salt + password));
№ 3. Более легкая, чем любая другая доступная нереляционная база данных. См. их тест производительности .
Другой вариант — MapDB . Это также быстрое хранилище ключей и значений с открытым исходным кодом, написанное на Java.
Трагедия вопросов высокого уровня на форумах Stack! «Рекомендации по программному обеспечению» — хорошее место, но мало посещаемое. Я нашел в Stack Overflow почти тот же вопрос в нескольких версиях с еще несколькими хорошими ответами:
в нем есть ссылки на обзорные статьи и некоторые дополнительные упоминания:
Йонас Чех
Базиль Бурк