You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by Apache Wiki <wi...@apache.org> on 2008/08/10 15:46:50 UTC

[Hadoop Wiki] Trivial Update of "Hbase/JSONRest" by Michael Gottesman

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.

The following page has been changed by Michael Gottesman:
http://wiki.apache.org/hadoop/Hbase/JSONRest

------------------------------------------------------------------------------
  == Preface ==
- ==== What is JSON Rest? ====
+ === What is JSON Rest? ===
- JSON Rest is at its core a Jetty Http Java Servlet that gives end users complete access to the HBase Client API that one communicates with through a combination of URLs, JSON, and Query Strings. It supports Filters, Scanners, and Transactions (Transactions are available with the correct patches), something which no other HBase client framework does at the moment. But most importantly to my altruistic side, it is a very modular framework so that it is easy for any end user to modify it to his/her needs. This was a fun project for me. I hope it is useful to you.
+ JSON Rest is at its core a Jetty Http Java Servlet that gives end users complete access to the HBase Client API through a combination of URLs, JSON, and Query Strings. It supports Filters, Scanners, and Transactions (Transactions are available with the correct patches), something which no other HBase client framework does at the moment. But most importantly to my altruistic side, it is a very modular framework so that it is easy for any end user to modify it to his/her needs. This was a fun project for me. I hope it is useful to you.
- ==== Why JSON? ====
+ === Why JSON? ===
  This is a question that I get asked a lot. Why JSON? Why not Thrift? Why not Protocol Buffers? The answer I give is simple: The Internet. JSON is native to the web and native to the browser. By using JSON as your message format, you allow for easy interoperability with any/all platforms currently in the marketplace. Thus you maximize your potential user base through familiarity, ease of use, and parser availability for the end user.
+ ----
  == Usage ==
- ==== Get ====
+ === Get ===
- ===== Database =====
+ ==== Database ====
  The current supported Database GET queries are:
-  * GetDatabaseMetadata
+  * getDatabaseMetadata - returns the master's connection status and a list of all database tables and their columns. To call this query send a simple get request to:
+ {{{
+ '/'
+ }}}
+ aka, server root. The server will then respond with JSON of the form:
+ {{{
+ TOPLEVEL => {"master_running":BOOLEAN,"tables":[TABLE, TABLE, ...]}
  
+ BOOLEAN := true|false
- ===== Table ======
- ===== Row =====
- ===== Cell =====
- ===== Timestamp =====
- ==== Post ====
- ==== Put ====
- ==== Delete ====
- ==== Transactions ====
- ==== Scanners ====
  
+ TABLE := {"name":"STRING", "columns":[COLUMN, COLUMN, ...]}
+ 
+ COLUMN := {
+              "name":"STRING",
+              "bloomfilter":BOOLEAN,
+              "time_to_live":INTEGER,
+              "in_memory":BOOLEAN,
+              "max_versions":INTEGER,
+              "compression":STRING, *NOTE* this is an enum defined in class HColumnDescriptor.CompressionType.
+              "max_value_length":INTEGER,
+              "block_cache_enabled":BOOLEAN
+           }
+ }}}
+ 
+ ==== Table ====
+ ==== Row ====
+ ==== Cell ====
+ ==== Timestamp ====
+ === Post ===
+ === Put ===
+ === Delete ===
+ === Transactions ===
+ === Scanners ===
+