Самый легкий способ получить метаданные базы данных в Java?

Хорошо, глядя на ваш пост в группах Google, вот мой 2c:

  1. Python медленнее, чем Java. Поскольку Python не является типизированным, его интерпретатор не может выполнить всю «магию» Java JIT, и поэтому он всегда будет медленнее во время выполнения.

  2. В цепочке групп Google указано, что:

«Большим сюрпризом в результатах является то, как тест производительности Python ухудшает , когда я вставляю более короткие значения. Во всяком случае, я бы ожидал обратного. Сравнительно, числа Java по существу одинаковы для длинных и коротких строк ".

Это может вводить в заблуждение из-за асинхронного поведения Монго, когда дело доходит до записи. Удостоверьтесь, что вы устанавливаете одинаковую запись записи, когда запускаете эти записи в своих тестах Java и Python (и предпочтительно установите SAFE_MODE). Другими словами, если вы не устанавливаете какую-либо особенность записи, убедитесь, что значение драйвера по умолчанию одинаково в обоих вариантах Python и Java.

9
задан Andrew Swan 12 June 2009 в 04:33
поделиться

2 ответа

Это легко сделать с помощью DdlUtils :

import javax.sql.DataSource;
import org.apache.ddlutils.Platform;
import org.apache.ddlutils.PlatformFactory;
import org.apache.ddlutils.model.Database;
import org.apache.ddlutils.platform.hsqldb.HsqlDbPlatform;

public void readMetaData(final DataSource dataSource) {
  final Platform platform = PlatformFactory.createNewPlatformInstance(dataSource);
  final Database database = platform.readModelFromDatabase("someName");
  // Inspect the database as required; has objects like Table/Column/etc.
}
11
ответ дан 4 December 2019 в 12:20
поделиться

Take a look at SchemaCrawler (free and open source), which is another API designed for this purpose. Some sample SchemaCrawler code:

    // Create the options
final SchemaCrawlerOptions options = new SchemaCrawlerOptions();
// Set what details are required in the schema - this affects the
// time taken to crawl the schema
options.setSchemaInfoLevel(SchemaInfoLevel.standard());
options.setShowStoredProcedures(false);
// Sorting options
options.setAlphabeticalSortForTableColumns(true);

// Get the schema definition 
// (the database connection is managed outside of this code snippet)
final Database database = SchemaCrawlerUtility.getDatabase(connection, options);

for (final Catalog catalog: database.getCatalogs())
{
  for (final Schema schema: catalog.getSchemas())
  {
    System.out.println(schema);
    for (final Table table: schema.getTables())
    {
      System.out.print("o--> " + table);
      if (table instanceof View)
      {
        System.out.println(" (VIEW)");
      }
      else
      {
        System.out.println();
      }

      for (final Column column: table.getColumns())
      {
        System.out.println("     o--> " + column + " (" + column.getType()
                           + ")");
      }
    }
  }
}

http://schemacrawler.sourceforge.net/

6
ответ дан 4 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: