没有couchbase lite真的没有sql数据库

问题描述:

目前我正在尝试为我的java应用程序找到一个可嵌入的nosql数据库。我目前的做法是使用couchbase lite java。我运行下面的例子,看到db.sqlite3文件的创建。没有couchbase lite真的没有sql数据库

  public class Main { 
       public static void main(String[] args) { 
        // Enable logging 
        Logger log = Logger.getLogger("app1"); 
        log.setLevel(Level.ALL); 
        JavaContext context = new JavaContext(); 
      // Create a manager 
        Manager manager = null; 
        try { 
         manager = new Manager(context, Manager.DEFAULT_OPTIONS); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
      // Create or open the database named app 
        Database database = null; 
        try { 
         database = manager.getDatabase("app1"); 
        } catch (CouchbaseLiteException e) { 
         e.printStackTrace(); 
        } 
      // The properties that will be saved on the document 
        Map<String, Object> properties = new HashMap<String, Object>(); 
        properties.put("title", "Couchbase Mobile"); 
        properties.put("sdk", "Java"); 
      // Create a new document 
        Document document = database.createDocument(); 
      // Save the document to the database 
        try { 
         document.putProperties(properties); 
        } catch (CouchbaseLiteException e) { 
         e.printStackTrace(); 
        } 
      // Log the document ID (generated by the database) 
      // and properties 
        log.info(String.format("Document ID :: %s", document.getId())); 
        log.info(String.format("Learning %s with %s", (String) document.getProperty("title"), (String) document.getProperty("sdk"))); 
        System.out.println(document.toString()); 
       } 
      } 

所以我在这里使用nosql数据库?

+0

的各种回购协议下找到它是的,Couchbase是一个多模型NoSQL面向文档的数据库,您可以在[官方网站](http://www.couchbase.com/)上找到。 – DimaSan

+0

确实couchbase lite文件的持久性机制是.sqlite3。这些让我感到困惑的是这些数据库文件的关系模型。你能否在这里启发我。 – user3014595

+0

您看到NoSQL代表“不仅SQL”。 – DimaSan

绝对如此。评论大多已经回答了这个问题。

Couchbase Lite不需要架构。它将数据存储为JSON文档(如代码示例中所示)。它目前使用map/reduce进行索引和查询。这是一个功能齐全的嵌入式NoSQL数据库(以及更多)。

从编码的角度来看,它在底层如何实现是无关紧要的。您不需要知道,也不应该依赖除公共API之外的任何内容。

为了说明问题,有一个使用ForestDB的Couchbase Lite实现。 ForestDB目前被认为不如SQLite成熟,所以它不是默认的。

如果您对实现细节感兴趣,比如一个版本如何使用SQLite,我鼓励您查看代码。您可以在https://github.com/couchbase