Sunday, March 26, 2023
Learning Code
  • Home
  • JavaScript
  • Java
  • Python
  • Swift
  • C++
  • C#
No Result
View All Result
  • Home
  • JavaScript
  • Java
  • Python
  • Swift
  • C++
  • C#
No Result
View All Result
Learning Code
No Result
View All Result
Home Java

Getting Started with NoSQL and Java

learningcode_x1mckf by learningcode_x1mckf
October 10, 2022
in Java
0
Getting Started with NoSQL and Java
74
SHARES
1.2k
VIEWS
Share on FacebookShare on Twitter


For builders working with Java, connecting to the suitable database can present important advantages to their group, whereas additionally making their jobs simpler in the long run. That is very true for databases that mix the pliability and agility of NoSQL with the familiarity of SQL.

On this article, I’ll briefly dive into the NoSQL database panorama, in addition to stroll you thru the construction of a easy Java instance that interacts with a NoSQL database.

The Present State of NoSQL Database Applied sciences

Jagadesh Munta

Jagadesh is a principal software engineer at Couchbase. He has more than 20 years of experience in the software development life cycle, QA, DevOps and architecture. Prior to joining Couchbase, Jagadesh held technical roles at Oracle and Sun Microsystems.

NoSQL databases retailer information as JSON paperwork quite than relational tables with columns and rows. Some NoSQL databases present programming interfaces in each SQL and native doc APIs. Varieties of NoSQL databases embrace doc databases, key-value shops, wide-column databases and graph databases.

NoSQL databases are identified to retailer and course of huge quantities of information effectively and have turn into a foundational know-how for a lot of trendy companies. Many NoSQL databases can be found within the cloud as a completely managed Database as a Service (DBaaS) or for on-premises installations. SDKs in numerous programming languages and APIs are utilized by builders to work together with such databases.

Earlier than we get into the code samples, it could be useful to take a look at the pattern information and the way it’s organized throughout the database, sometimes called the information mannequin.

Knowledge Mannequin 

On the highest degree of information group, this database incorporates a number of buckets. Every bucket can include a number of scopes, and every scope can include a number of collections. Inside collections are JSON paperwork.

This hierarchy is much like the relational database the place databases have schemas, tables and rows, and so forth. This hierarchical information container mannequin of this doc database maps very effectively to the relational mannequin: bucket = database, scope = schema, assortment = desk, doc = row.

This mapping permits you to entry information both by the doc information mannequin in collections or the relational mannequin utilizing SQL.

The pattern on this instance is known as “Journey Pattern,” an information set for an airline journey info system.

The doc (JSON) information mannequin for the Journey Pattern information set is proven beneath.

The foremost entities are airline, airport, route, linking airline and airport and resort as a separate entity.

The diagram beneath reveals the connection between the assorted paperwork within the Airline Journey system. It reveals the first key, ID and kind fields that every doc incorporates, with extra consultant fields in every kind of doc.

Now we’re prepared to take a look at some primary information entry operations on this pattern dataset.

Code Examples 

Now that the essential ideas are coated, allow us to see how to connect with the database, set up a context for a bucket and assortment to work on, carry out easy key-value operations and queries, and at last modify some information within the database.

Connect with the Database Cluster

A connection string sometimes consists of a number URL (IP identify/addresses), adopted by a username and password. Utilizing this connection string, you may get a connection object to the database cluster. On this instance, we’re utilizing localhost (127.0.0.1) because the database host. You could wish to exchange the DB identify, username and password which can be applicable to your database cluster. A connection to the database cluster is represented by a cluster object.

class Program

    public static void major(String[] args)

    var cluster = Cluster.join(

      “dbName”, “username”, “password”

    );

Set Context to the Applicable Assortment

Allow us to now set up a context for a really particular dataset: a bucket named “travel-sample” that already incorporates the Journey Pattern information set assortment. The code beneath units our present context to the default assortment throughout the “travel-sample.”

    var bucket = cluster.bucket(“travel-sample”);

    var assortment = bucket.defaultCollection();

Fundamental Key-Worth Operation (Get a Doc)

The important thing worth (KV) or information service affords the best technique to retrieve or mutate information the place the hot button is identified. The get methodology beneath retrieves particular information (worth) related to a key. On this case, the hot button is “airline_10.”

     strive

        var end result = assortment.get(“airline_10”);

        System.out.println(end result.toString());

          

     catch (DocumentNotFoundException ex)

      System.out.println(“Doc not discovered!”);

    

  

}

Question Rows Utilizing SQL

Here’s a snippet of code performing a SQL question to retrieve resort names within the metropolis of Malibu from the Journey Pattern information set.

strive

      var question =

        “SELECT h.identify, h.metropolis, h.state “ +

        “FROM `travel-sample` h “ +

        “WHERE h.kind=”resort” “ +

          “AND h.metropolis = ‘Malibu’ LIMIT 5;”;

 

      QueryResult end result = cluster.question(question);

      for (JsonObject row : end result.rowsAsObject())

        System.out.println(“Lodge: “ + row);

      

     catch (DocumentNotFoundException ex)

      System.out.println(“Doc not discovered!”);

    

  }

}

Question Utilizing Named or Positional Parameters

Question strategies can have named or positional parameters.

Under is a named parameter instance:

The code proceeds to entry the travel-sample database (particularly the identify, metropolis and state buckets). The queryOptions() methodology permits the customization of assorted SQL question choices.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

strive

      var question =

        “SELECT h.identify, h.metropolis, h.state “ +

        “FROM `travel-sample` h “ +

        “WHERE h.kind = $kind “ +

          “AND h.metropolis = $metropolis LIMIT 5;”;

 

      QueryResult end result = cluster.question(question,

        queryOptions().parameters(

          JsonObject.create()

            .put(“kind”, “resort”)

            .put(“metropolis”, “Malibu”)

        ));

          end result.rowsAsObject().stream().forEach(

        e–> System.out.println(

          “Lodge: “ + e.getString(“identify”) + “, “ + e.getString(“metropolis”))

      );

     catch (CouchbaseException ex)

      System.out.println(“Exception: “ + ex.toString());

    

  }

}

Positional parameters permit the order of the strategy parameters to get replaced with placeholders.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

    strive

      var question =

        “SELECT h.identify, h.metropolis, h.state “ +

        “FROM `travel-sample` h “ +

        “WHERE h.kind = $1 “ +

          “AND h.metropolis = $2 LIMIT 5;”;

          

      QueryResult end result = cluster.question(question,

        queryOptions().parameters(JsonArray.from(“resort”, “Malibu”))      );

    end result.rowsAsObject().stream().forEach(

        e–> System.out.println(

          “Lodge: “ + e.getString(“identify”) + “, “ + e.getString(“metropolis”))

      );

   catch (CouchbaseException ex)

      System.out.println(“Exception: “ + ex.toString());

    

  }

}

Utilizing Subdocument Lookup Operations

Subdocuments are elements of the doc which you could atomically and effectively replace and retrieve.

Within the code beneath, the lookupIn operation queries the “airport_1254” doc for a sure path (right here, it’s the geo.alt path). This code permits us to retrieve the doc path utilizing the subdoc get operation: (get("geo.alt")).

strive

      LookupInResult end result = assortment.lookupIn(

        “airport_1254”,

        Collections.singletonList(get(“geo.alt”))

      );

 

      var str = end result.contentAs(0, String.class);

      System.out.println(“Altitude = “ + str);

     catch (DocumentNotFoundException ex)

      System.out.println(“Doc not discovered!”);

    

  }

}

Utilizing Subdocument Mutate Operations

Mutation operations modify a number of paths within the doc. Within the code beneath, the mutateIn operation is used to change the airline_10 through the use of a full doc-level upsert, which can create the worth of an present path with parameters (nation, Canada).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

   strive

      LookupInResult end result = assortment.lookupIn(

        “airline_10”, Collections.singletonList(get(“nation”))

      );

      var str = end result.contentAs(0, String.class);

      System.out.println(“Sub-doc earlier than: “);

      System.out.println(str);

      

     catch (PathNotFoundException e)

      System.out.println(“Sub-doc path not discovered!”);

    

    strive

      assortment.mutateIn(“airline_10”, Arrays.asList(

        upsert(“nation”, “Canada”)

      ));

     catch (PathExistsException e)

      System.out.println(“Sub-doc path exists!”);

    

    strive

      LookupInResult end result = assortment.lookupIn(

        “airline_10”, Collections.singletonList(get(“nation”))

      );

      var str = end result.contentAs(0, String.class);

      System.out.println(“Sub-doc after: “);

      System.out.println(str);

   catch (PathNotFoundException e)

      System.out.println(“Sub-doc path not discovered!”);

    

    

  }

}

Utilizing the Upsert Operate

Upsert is used to insert a brand new document or replace an present one. If the doc doesn’t exist, it will likely be created. Upsert is a mix of insert and replace.

The .put methodology permits the person to insert a mapping right into a map. If an present secret’s handed, the brand new worth replaces the earlier worth.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

    JsonObject content material = JsonObject.create()

      .put(“nation”, “Iceland”)

      .put(“callsign”, “ICEAIR”)

      .put(“iata”, “FI”)

      .put(“icao”, “ICE”)

      .put(“id”, 123)

      .put(“identify”, “Icelandair”)

      .put(“kind”, “airline”);

 

    assortment.upsert(“airline_123”, content material);

      

    strive

      LookupInResult lookupResult = assortment.lookupIn(

        “airline_123”, Collections.singletonList(get(“identify”))

      );

 

      var str = lookupResult.contentAs(0, String.class);

      System.out.println(“New Doc identify = “ + str);

     catch (PathNotFoundException ex)

      System.out.println(“Doc not discovered!”);

    

    

  }

}

The pattern information set and code examples used above are from the distributed NoSQL cloud database Couchbase. Talking of Databases as a Service, try Couchbase Capella to see how trendy enterprises are capable of ship flexibility throughout numerous use circumstances with built-in multimodel and cell synchronization capabilities, and drive millisecond information response at scale.

These and lots of extra examples might be discovered and run from Couchbase Playground. To attach with different like-minded builders in the neighborhood for extra inspiration, try the Couchbase Forums. For these simply getting began with Java, one other nice useful resource to think about is the free on-line Java developer certification course supplied by Couchbase Academy.

GroupCreated with Sketch.

Jagadesh is a principal software engineer at Couchbase. He has more than 20 years of experience in the software development life cycle, QA, DevOps and architecture. Prior to joining Couchbase, Jagadesh held technical roles at Oracle and Sun Microsystems.

Read more from Jagadesh Munta



Source link

You might also like

2023 Java roadmap for developers – TheServerSide.com

YS Jagan launches Ragi Java in Jagananna Gorumudda, says focused on intellectual development of students – The Hans India

Disadvantages of Java – TheServerSide.com

Share30Tweet19
learningcode_x1mckf

learningcode_x1mckf

Recommended For You

2023 Java roadmap for developers – TheServerSide.com

by learningcode_x1mckf
March 26, 2023
0
Google expands open source bounties, will soon support Javascript fuzzing too – ZDNet

2023 Java roadmap for developers  TheServerSide.com Source link

Read more

YS Jagan launches Ragi Java in Jagananna Gorumudda, says focused on intellectual development of students – The Hans India

by learningcode_x1mckf
March 26, 2023
0
Google expands open source bounties, will soon support Javascript fuzzing too – ZDNet

YS Jagan launches Ragi Java in Jagananna Gorumudda, says focused on intellectual development of students  The Hans India Source link

Read more

Disadvantages of Java – TheServerSide.com

by learningcode_x1mckf
March 26, 2023
0
Google expands open source bounties, will soon support Javascript fuzzing too – ZDNet

Disadvantages of Java  TheServerSide.com Source link

Read more

Advantages of Java – TheServerSide.com

by learningcode_x1mckf
March 26, 2023
0
Google expands open source bounties, will soon support Javascript fuzzing too – ZDNet

Advantages of Java  TheServerSide.com Source link

Read more

Java Developer Survey Reveals Increased Need for Java … – Benzinga

by learningcode_x1mckf
March 25, 2023
0
Google expands open source bounties, will soon support Javascript fuzzing too – ZDNet

Java Developer Survey Reveals Increased Need for Java ...  Benzinga Source link

Read more
Next Post
iOS Auto Layout tutorial programmatically

iOS Auto Layout tutorial programmatically

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Related News

Google expands open source bounties, will soon support Javascript fuzzing too – ZDNet

Java News Roundup: Sequenced Collections for JDK 21, Vector API … – InfoQ.com

March 16, 2023
Google expands open source bounties, will soon support Javascript fuzzing too – ZDNet

Senior Developer (Java/JavaScript) (Remote/Hybrid) at Datafin … – IT-Online

February 11, 2023
Two Superpowers Combined – Real Python

Two Superpowers Combined – Real Python

November 23, 2022

Browse by Category

  • C#
  • C++
  • Java
  • JavaScript
  • Python
  • Swift

RECENT POSTS

  • 2023 Java roadmap for developers – TheServerSide.com
  • YS Jagan launches Ragi Java in Jagananna Gorumudda, says focused on intellectual development of students – The Hans India
  • Disadvantages of Java – TheServerSide.com

CATEGORIES

  • C#
  • C++
  • Java
  • JavaScript
  • Python
  • Swift

© 2022 Copyright Learning Code

No Result
View All Result
  • Home
  • JavaScript
  • Java
  • Python
  • Swift
  • C++
  • C#

© 2022 Copyright Learning Code

Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?